2013-01-18 107 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數據。