1

我有一个使用 ReturnURL 和 PDT 启用的 PayPal 订阅按钮。此按钮在 ASP.Net 中的 aspx 页面上使用。

问题是,一旦贝宝上的交易完成,所有 PDT 变量都将作为查询字符串变量返回 ReturnURL 页面;我认为只有 transactionid(即 tx)会在 ReturnURL 的查询字符串中返回,我必须将此交易 ID 和我的令牌发布到 PayPal 以获取其他交易详细信息,如交易状态等。

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

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

交易完成后返回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 的工作流程:

PDT 的工作流程

4

1 回答 1

1

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

回答: PayPal 使用 ReturnURL 发送的查询字符串变量只是一小部分 PDT 交易变量,开发人员需要按照文档中的说明 POST 到 PayPal 以获得完整/完整的交易变量集。

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

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

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

从 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
于 2016-05-17T18:24:54.383 回答