2016-06-07 117 views
1

所以我有一個PHP服務,這只是工作是接受PayPal IPN連接。我使用PSR7 $request->getBody()->getContents()從PayPal IPN模擬器請求獲取以下內容。PayPal IPN模擬器返回「INVALID」,但我遵守規則

payment_type=echeck&payment_date=Tue%20Jun%2007%202016%2012%3A56%3A47%20GMT+0100%20%28BST%29&payment_status=Completed&address_status=confirmed&payer_status=verified&first_name=John&last_name=Smith&[email protected]&payer_id=TESTBUYERID01&address_name=John%20Smith&address_country=United%20States&address_country_code=US&address_zip=95131&address_state=CA&address_city=San%20Jose&address_street=123%20any%20street&[email protected]&[email protected]&[email protected]&residence_country=US&item_name=something&item_number=AK-1234&quantity=1&shipping=3.04&tax=2.02&mc_currency=USD&mc_fee=0.44&mc_gross=12.34&mc_gross_1=12.34&txn_type=web_accept&txn_id=787223012&notify_version=2.1&custom=xyz123&invoice=abc1234&test_ipn=1&verify_sign=AFcWxV21C7fd0v3bYYYRCpSSRl31AfBnnvbsi0E9urbgYYn51fFWPj23 

所以,當我使用後狂飲6 POST這回使用以下body荷蘭國際集團以https://www.sandbox.paypal.com/cgi-bin/webscr

cmd=_notify-validate&payment_type=echeck&payment_date=Tue%20Jun%2007%202016%2012%3A56%3A47%20GMT+0100%20%28BST%29&payment_status=Completed&address_status=confirmed&payer_status=verified&first_name=John&last_name=Smith&[email protected]&payer_id=TESTBUYERID01&address_name=John%20Smith&address_country=United%20States&address_country_code=US&address_zip=95131&address_state=CA&address_city=San%20Jose&address_street=123%20any%20street&[email protected]&[email protected]&[email protected]&residence_country=US&item_name=something&item_number=AK-1234&quantity=1&shipping=3.04&tax=2.02&mc_currency=USD&mc_fee=0.44&mc_gross=12.34&mc_gross_1=12.34&txn_type=web_accept&txn_id=787223012&notify_version=2.1&custom=xyz123&invoice=abc1234&test_ipn=1&verify_sign=AFcWxV21C7fd0v3bYYYRCpSSRl31AfBnnvbsi0E9urbgYYn51fFWPj23 

我得到INVALID作爲迴應。我不知道它是否從一個不同的IP地址到服務器處理SSL終止是問題,或者如果我只是發瘋。

我已經跑了PayPal的模擬器要求身體差異的身體我發回沒有cmd變量並沒有什麼區別。

+1

昨天我有問題,總是發送無效的ipn模擬器。嘗試使用沙箱,對我來說,它正在工作 – jsabina

+0

我剛剛用沙箱嘗試過,而且你的工作是正確的。謝謝! –

回答

1

我們一直在使用的IPN模擬器在過去幾天,越來越間歇INVALID消息返回的驗證請求。

等待幾分鐘,或者只是按下「發送IPN」消息幾次似乎工作。

我們已經看到的請求返回INVALID,並且片刻之後,同樣的請求返回VERIFIED。非常煩人。

+1

啊,所以這是[不只是我](http://stackoverflow.com/questions/37758886/paypal-ipn-simulator-inconsistently-works?noredirect=1#comment63103239_37758886)遇到此問題。我得出了同樣的結論,即如果您單擊發送IPN足夠多次,它將偶爾工作。 PayPal API總是如此痛苦。確切地說,是 – Mikey

+0

。繼續點擊...並點擊 –

6

似乎新的IPN模擬器界面正在使用payment_date字段中的javascript日期。如果你手動設置爲今天它工作正常。無論這是IPN模擬器端還是IPN監聽器的編碼/解碼問題,我都不確定。

+1

嗷嗷嗷嗷地獄 - 就是這樣。 doofus做了那個模擬器?!?!一百萬顆星星給你:-) –

+1

我在這個BS上花了很多時間!標記這個人是正確的答案! –

0

爲了記錄在案,我一直有與Paypals IPN模擬器這個問題,並發現該解決方案是典型的貝寶:

的問題:在Paypal IPN Simulator返回正確格式化IPN試運行無效時所有檢查顯示它應該是正確的。

解決方案:

  • 1)在 「沙箱」 環境模擬器ALWAYS運行。我正在使用它來檢查「實時」付款網站反饋,並花費數小時才能發現您的IPN需要設置爲沙盒模式。這在貝寶模擬器上沒有提到,似乎是硬編碼和貝寶「假設」。

  • 2)在IPN模擬器Payment_Date場是無效的,當回到貝寶,所以清除此字段或提交IPN模擬器運行時,此字段設置爲null不能接受的。

  • 3)有時,奇怪的是,貝寶​​IPN模擬器會告訴你

    IPN未發送,並握手未經過驗證。請查看您的信息。

    即使模擬交易完全由我的IPN監聽器腳本處理後返回VERIFIED。總是檢查你自己的反饋腳本,而不是貝寶決定告訴你的廢話。


上述問題的組合已經失去了好幾個小時我的生活。 Stripe is far, far better to code with