您如何将来自 PayPal 的 PDT 响应转换为哈希?

Posted

技术标签:

【中文标题】您如何将来自 PayPal 的 PDT 响应转换为哈希?【英文标题】:How do you turn the PDT response from PayPal into a hash? 【发布时间】:2017-12-27 03:04:30 【问题描述】:

我正在尝试使用 PayPal 上的 PDT 系统来管理我网站上的付款。我的网站正在正确接收发送回贝宝以接收交易数据的交易 ID。

这是我用来将交易 ID 发布到贝宝并接收响应的代码。

response = Net::HTTP.post_form(URI.parse("#Rails.application.secrets.paypal_host/cgi-bin/webscr?"), values)
    puts response.body

我收到了正确的响应,其中 response.body 在终端中显示。

SUCCESS
transaction_subject=SPORTS+PACKAGE+%281+Week%29
payment_date=23%3A32%3A01+Jul+20%2C+2017+PDT
txn_type=subscr_payment
subscr_id=I-WHFVMBY57NX2
last_name=Lucas
residence_country=US
item_name=SPORTS+PACKAGE+%281+Week%29
payment_gross=
mc_currency=AUD
business=merchant-success%40puntsquad.com
payment_type=instant
protection_eligibility=Ineligible
payer_status=verified
payer_email=buyer-success%40puntsquad.com
txn_id=8M5887849L359363Y
receiver_email=merchant-success%40puntsquad.com
first_name=George
payer_id=667TSNBH7R7X4
receiver_id=WJYE8WGSREP98
payment_status=Completed
payment_fee=
mc_fee=2.00
mc_gross=50.00
charset=windows-1252

我的问题是我不确定如何访问这些值。

【问题讨论】:

【参考方案1】:

您可以将响应正文转换为哈希,如下所示

hsh = CGI::parse(response.body)
puts hsh['transaction_subject']

【讨论】:

以上是关于您如何将来自 PayPal 的 PDT 响应转换为哈希?的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 PayPal PDT 从我的 JSP 应用程序获得响应

使用 Paypal ipn 和 pdt 进行付款

nodejs 贝宝 pdt 返回 302

PayPal 订阅 - 缺少 PDT 发票

Paypal PDT 未返回所有变量

paypal如何避免PDT数据的双重回复