PayPal IPN缺少字段

时间:2013-01-18 14:11:20

标签: asp.net paypal paypal-ipn

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

在PayPal的Sandbox网站上使用即时付款通知(IPN)模拟器会产生完全不同的IPN(当然,它包含API文档中提到的所有内容)。

我正在使用“自适应付款”API,我将其设置为只执行一个非常简单的PAY操作(否则会正常工作)。我现在整天都在阅读SO和互联网上的帖子,但我无法弄清楚出了什么问题。

这是我的IPN处理程序的Request.Params数组的转储(省略了无关的vars):

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

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

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

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

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

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