为什么PayPal PDT会返回Return URL查询字符串中的所有变量而不仅仅是事务ID?

时间:2016-05-17 17:08:40

标签: asp.net paypal paypal-pdt

我有一个PayPal订阅按钮,它启用了ReturnURL和PDT。此按钮用于ASP.Net中的aspx页面。

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

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

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

交易完成后

ReturnURL

  

http://localhost/loadsprocure/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的工作流程:

Workflow for PDT

1 个答案:

答案 0 :(得分:0)

经过我方的一些研究后,我终于得到了答案。

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

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

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

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

从ReturnURL aspx页面发送到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