我有一个PayPal订阅按钮,它启用了ReturnURL和PDT。此按钮用于ASP.Net中的aspx页面。
问题是,一旦paypal上的事务完成,所有PDT变量都将作为QueryURL页面中的查询字符串变量返回;我认为只有transactionid
(即tx)将在ReturnURL的查询字符串中返回,我必须将此交易ID和我的令牌发布到PayPal以获取其他交易详情,如交易状态等。
问题为什么PDT会返回所有变量,例如交易状态,料品编号,金额和货币代码,而不仅仅是文档中提到的交易ID?
这意味着我不必编写代码来通过从ReturnURL页面发布到PayPal来获取其他交易详细信息,因为我已经从ReturnURL的查询字符串中获取了所有详细信息,但这听起来与PayPal文档所说的相反。
交易完成后ReturnURL
https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/paymentdatatransfer/处的PayPal文档显示以下作为PDT的工作流程:
答案 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