为什么 PayPal PDT return Return URL 查询字符串中的所有变量而不仅仅是交易 ID?

Why does PayPal PDT return all variables in Return URL query string instead of just transaction id?

我有一个 PayPal 订阅按钮,它在启用 ReturnURL 和 PDT 的情况下工作。 ASP.Net.

中的 aspx 页面正在使用此按钮

问题在于,一旦 paypal 上的交易完成,所有 PDT 变量都将 returned 作为 ReturnURL 页面中的查询字符串变量;我认为只有 transactionid(即 tx)会在 ReturnURL 的查询字符串中被 returned,我必须 post 这个交易 ID 和我的 PayPal 令牌才能获得其他交易细节,比如交易状态等

问题为什么 PDT return 所有变量,如交易状态、项目编号、金额和货币代码,而不仅仅是他们文档中提到的交易 ID?

这意味着我不必通过从我的 ReturnURL 页面 posting 到 PayPal 来编写代码来获取其他交易详细信息,因为我已经从 ReturnURL 的查询字符串中获取了所有详细信息,但这听起来有悖于贝宝文档说。

交易完成后返回URL

http://localhost/xyz/pp.aspx?c=0&tx=3MA744263S4136832&st=Completed&amt=100%2e00&cc=USD&cm=&item_number=brokerplans&sig=mVojxSFzXH%2fk0RBOwUAMe8kq8jt7glCdnKYFfk9kZxWkuqru4wM1yfkD8FiAJVaoHeGlWY252ZiWwuCw0VJ8L8RU%2bUtnzGTVEgq3w1MQbqsCfZUwImlIfo%2fgV88wYf8V%2fgNgUmVCxBweZ8faFsKDlRr08julLC7ancjIDOkOY2o%3d

https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/paymentdatatransfer/ 上的 PayPal 文档显示了以下 PDT 工作流程:

经过我这边的更多研究,我终于得到了答案。

回答: PayPal 使用 ReturnURL 发送的查询字符串变量只是一小部分 PDT 交易变量,开发人员需要 POST 到 PayPal,如他们的文档中所述,以获得 full/complete 交易变量集。

因此,即使您在 ReturnURL 查询字符串变量中得到 st=Completed,您也必须 POST 到 PayPal。

就我而言,在我根据我的 ReturnURL aspx 页面的 Page_Load 事件中的 PayPal 文档执行 POST 之后,我得到了更多变量,如下所示。

您可以看到 payment_status 在此完整集合中返回,该完整集合在使用 ReturnURL 接收的查询字符串变量中以不同的名称 st 调用。事务 ID 也是如此,它在查询字符串变量中被称为 tx,但在 POST 响应中被称为 txn_id

从 ReturnURL aspx 页面 POST 到 PayPal 后从 PayPal 收到的变量

SUCCESS
transaction_subject=Plans
payment_date=11%3A12%3A13+May+17%2C+2016+PDT
txn_type=subscr_payment
subscr_id=I-BRSWRVNGN324
last_name=buyer
option_selection1=Basic
residence_country=US
item_name=Plans
payment_gross=100.00
mc_currency=USD
business=xyz123-facilitator%40gmail.com
payment_type=instant
protection_eligibility=Ineligible
payer_status=verified
payer_email=sun21170-buyer%40gmail.com
txn_id=3MA744263S4136832
receiver_email=abc123-facilitator%40gmail.com
first_name=test
option_name1=Plan+Options
payer_id=45HWR9TGYNPD8
receiver_id=9H9UCPFXX96KG
item_number=brokerplans
payment_status=Completed
payment_fee=3.20
mc_fee=3.20
btn_id=3335152
mc_gross=100.00
charset=windows-1252