2

我正在努力实施 PayPal 的即时付款通知。我确实收到了来自 PayPal 的 IPN 请求,但它只是没有 PayPal 所说的字段。例如,没有“mc_gross”、“payment_gross”或“txn_id”。如果缺少所有这些字段,我应该如何验证 IPN?

使用 PayPal 沙盒网站上的即时支付通知 (IPN) 模拟器会产生一个完全不同的 IPN(当然,它包含 API 文档中提到的所有字段)。

我正在使用“自适应支付”API,并将其设置为只执行一个非常简单的 PAY 操作(否则效果很好)。我现在整天都在阅读 SO 和互联网上的帖子,但我就是不知道出了什么问题。

这是我的 IPN 处理程序的 Request.Params 数组的转储(省略了不相关的变量):

payment_request_date => Fri Jan 18 05:50:04 PST 2013
return_url => http://MYHOST/ReturnUrl
fees_payer => EACHRECEIVER
ipn_notification_url => http://MYHOST/PayPal.aspx
sender_email => sender_acc_pre@gmx.net
verify_sign => AoIh-cQwnxZ7nSmfalIL7L182SDTA2JKiIrVnwt.uetdGX.Jw0bG2C1f
test_ipn => 1
transaction[0].id_for_sender_txn => 66X080248E331472D
transaction[0].receiver => some_email_biz@gmx.net
cancel_url => http://MYHOST/CancelUrl
transaction[0].is_primary_receiver => false
pay_key => AP-28U75135KE1302901
action_type => PAY
transaction[0].id => 96E03111D3558372G
memo => This is a sandbox test payment
transaction[0].status => Completed
transaction[0].paymentType => SERVICE
transaction[0].status_for_sender_txn => Completed
transaction[0].pending_reason => NONE
transaction_type => Adaptive Payment PAY
transaction[0].amount => EUR 30.25
status => COMPLETED
log_default_shipping_address_in_transaction => false
charset => windows-1252
notify_version => UNVERSIONED
reverse_all_parallel_payments_on_error => false
ALL_HTTP => HTTP_CONTENT_LENGTH:1102
HTTP_CONTENT_TYPE:application/x-www-form-urlencoded
HTTP_HOST:92.231.161.192

有任何想法吗?

4

1 回答 1

2

自适应支付 IPN 与您的典型 IPN 略有不同。

使用自适应支付,您的应用程序有自己的 IPN 通知程序,与接收方帐户分开。您的应用程序只是收到交易发生的通知,并且根本没有像您发现的那样为您提供有关项目、定价等的详细信息。

接收者的帐户将获得一个单独的 IPN(如果他们配置了它),其中包含您希望看到的字段。

在您的情况下,您需要做的是将交易数据作为“待处理”或任何您想要调用的数据保存到您的数据库中,然后根据交易 ID 关联回传入的 IPN 数据。

于 2013-01-18T22:49:07.250 回答