2013-01-18 150 views
1

我很努力实施PayPal的即时付款通知。我确实从PayPal获得IPN请求,但它没有PayPal所说的字段。例如,没有“mc_gross”,“payment_gross”或“txn_id”。我应该如何验证所有这些字段丢失的IPN?PayPal IPN缺少字段

在PayPal的沙盒网站上使用即时付款通知(IPN)模拟器会产生完全不同的IPN(当然这具有API文档中提到的所有特征)。

我使用的是“Adaptive Payments”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 => [email protected] 
verify_sign => AoIh-cQwnxZ7nSmfalIL7L182SDTA2JKiIrVnwt.uetdGX.Jw0bG2C1f 
test_ipn => 1 
transaction[0].id_for_sender_txn => 66X080248E331472D 
transaction[0].receiver => [email protected] 
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 

任何想法?

回答

2

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

使用Adaptive Payments,您的应用程序拥有自己的IPN通知程序,与接收方帐户分开。您的应用程序只是收到通知,说明交易已经发生,并且根本没有提供关于您发现的物品,定价等详细信息。

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

在你的情况下,你需要做的是将交易数据保存到数据库中作为“挂起”或任何你想要调用的数据,然后再根据事务ID关联到IPN数据。