使用 PayPal ruby​​ gem 获取用户的 PayPal 付款

Posted

技术标签:

【中文标题】使用 PayPal ruby​​ gem 获取用户的 PayPal 付款【英文标题】:Get User's PayPal Payments using PayPal ruby gem 【发布时间】:2016-06-27 05:12:18 【问题描述】:

我正在尝试使用 PayPal 的 ruby​​ gem 来完成这样的简单任务:

1 - 用户使用 PayPal OAuth 登录我的应用程序。

2 - 用户授权我的应用访问他的帐户。

3 - 我的应用发出一个简单请求,列出该用户的 10 笔交易。

我正在按照官方 PayPal 的 github 存储库 (https://github.com/paypal/PayPal-Ruby-SDK) 的说明进行操作

require 'paypal-sdk-rest'
include PayPal::SDK::REST
include PayPal::SDK::OpenIDConnect

# Update client_id, client_secret and redirect_uri
PayPal::SDK.configure(
  :openid_client_id     => "client_id",
  :openid_client_secret => "client_secret",
  :openid_redirect_uri  => "http://google.com"
)

# Generate URL to Get Authorize code
puts Tokeninfo.authorize_url( :scope => "openid profile" )

# Create tokeninfo by using AuthorizeCode from redirect_uri
tokeninfo = Tokeninfo.create("Replace with Authorize Code received on redirect_uri")
puts tokeninfo.to_hash

# Refresh tokeninfo object
tokeninfo = tokeninfo.refresh
puts tokeninfo.to_hash

在这个简单的设置代码之后,我试图获取用户的交易,但我不能只使用如下代码的支付实体来做到这一点:

Payment.all(count: 10)

返回错误:

PayPal::SDK::Core::Exceptions::UnauthorizedAccess: Failed.  Response code = 401.  Response message = Unauthorized.  Response debug ID = 409003e14dd9a, 409003e14dd9a.

那么,如何在我的应用中验证用户身份,然后使用他的令牌进行 API 操作?

【问题讨论】:

你确定 paypal API 支持这个吗?可以试试问他们。 【参考方案1】:

我不确定你是否需要这一切。

这是我所做的:

include PayPal::SDK::REST

PayPal::SDK.configure( 
  openid_client_id: "client_id",
  openid_client_secret: "client_secret",
  openid_redirect_uri: "http://google.com"
)

Payment.all
=>

Request[get]: https://api.sandbox.paypal.com/v1/payments/payment
Request.body=null   request.header="X-PAYPAL-SANDBOX-EMAIL-ADDRESS"=>"Platform.sdk.sell@gmail.com", "Authorization"=>"Bearer A101.CLf7NBF8CWMt0Lt4tc9OzrKs9RmGB8wuDBw11n1Ucn8DWTyws8A-nM5b68NYpn8F.qiud2q4fOpca2RSfhZElDV4fzLm", "Content-Type"=>"application/json", "User-Agent"=>"PayPalSDK/PayPal-Ruby-SDK 1.4.4 (paypal-sdk-core 1.4.4; ruby 2.3.0p0-x86_64-linux;OpenSSL 1.0.1f 6 Jan 2014)"
Response[200]: OK, Duration: 30.002s
Response.body="payments":["id":"PAY-
...etcetc

值得注意的是,目前它只显示通过 REST API 创建的付款。

虽然 401 是未经授权的,所以很可能你得到的信息不正确。确保您的 client_id 和 client_secret 正确 - 您可以在开发人员仪表板下找到此信息。

【讨论】:

【参考方案2】:

它现在使用 Transactions API 支持这一点。

https://developer.paypal.com/docs/api/sync/v1/

【讨论】:

以上是关于使用 PayPal ruby​​ gem 获取用户的 PayPal 付款的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 Paypal 交易 ID 并在 ruby​​ on rails 中退款

在 Rails 控制器中包含库时,Paypal SDK Ruby 错误

强制 Rails Paypal gem 使用 Sandbox 而不是 Live

从 Paypal 获取 first_name(和其他信息)并使用 paypal-recurring gem 创建 Rails Devise 帐户

使用 Instagram gem 获取所有用户的图片

使用 ruby​​ 邮件 gem 获取电子邮件正文而不获取附件