2013-06-05 84 views
5

我在我的付款申請中使用貝寶支付網關IPN。多次接收貝寶IPN響應

付款成功完成後,我正確接收IPN響應。

收到後,我將其發送回來進行驗證。

$ch = curl_init(); 

$paypalUrl = PAYPAL_URL; 
curl_setopt($ch, CURLOPT_URL, $paypalUrl); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_field); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
$res = curl_exec($ch); 

現在我多次接收相同的IPN響應(正好約9次)。我發送以下格式的變體IPN響應:

cmd=_notify-validate&orderUUID=eac962fe-3a0a-4b26-be89-e5ccf54ee2cb& 
    mc_gross=15.00&settle_amount=11.58& 
    protection_eligibility=Ineligible&payer_id=LR3LZ8R978ZK8&tax=0.00 
    &payment_date=06%3A55%3A17+Jun+05%2C+2013+PDT&payment_status=Completed 
    &charset=windows1252&first_name=abc&option_selection1=&option_selection2=& 
mc_fee=0.74&exchange_rate=0.812061&notify_version=3.7 
    &settle_currency=USD&custom=&payer_status=verified&business=business%40mydomain.com 
    &quantity=1&verify_sign=AFcWxV21C7fd0v3bYYYRCpSSRl31AlU7JAwS8--HoB6lJfimizlVxnVa&payer_email=personal%40mydomain.com&option_name1=tour&option_name2=abc+abc&txn_id=6RU07240YB682730C&payment_type=instant&last_name=abc&receiver_email=business%40mydomain.com&payment_fee=&receiver_id=LW9JSM57BYH5Q&txn_type=web_accept&item_name=ite m+name&mc_currency=AUD&item_number=&residence_country=US&test_ipn=1&handling_amount=0.00 &transaction_subject=item+reserva!tion+for+1+spaces+on+Jun+06&payment_gross=&shipping=0.00&ipn_track_id=b85bc954da9e5 

多次接收相同響應的原因是什麼?

正如我之前所說的,我們需要發送200 OK到PayPal的IPN響應,如果Paypal沒有得到200 OK,它會再次嘗試......是否一樣?

回答

3

在這裏,我經歷過的一件事。假設我的原始主機名是abc.com,並且我已經創建了一個測試實例。現在我的新主機名將是testing.abc.com。當我從上面的測試實例進行事務時發生問題(多次接收IPN響應)。我正確處理了回覆(即檢查了這個重複回覆或新回覆)。現在我的應用程序移到生產環境中,我的主機名是abc.com,一切正常! (只接收一次IPN響應)。我認爲貝寶無法從我的測試實例獲得成功狀態,因爲它試圖多次發送相同的響應。

2

如果您在PayPal賬戶中查看您的IPN歷史記錄,是否顯示發送200的狀態碼?通常這是看到IPN多次的常見原因。

+1

感謝您的回覆。我已經在商業帳戶上查看了我的IPN歷史記錄。在歷史上它顯示:交付狀態= **失敗**和**否。重試** = ** 8 **並顯示空白HTTP響應代碼。我怎麼能知道失敗的原因是什麼? –

+0

我也發送了標題(「狀態:200 OK」);我得到IPN響應後的迴應。 –

+0

請幫助我,我還沒有得到解決方案 –

0

只是檢查了我的工作IPN處理程序,我追加「& CMD = _notify - 驗證」的請求的結束,而不是把它在一開始