2016-10-01 162 views
0

我使用node.js bodyparser來獲取urlencoded字符串並操縱字符串來模擬前面帶有cmd=_notify-validate的查詢字符串。每當IPN響應發送時,我都會收到INVALID消息。我懷疑這可能與編碼/解碼問題有關。以下代碼是Paypal INVALID消息的正文部分,即我操縱的查詢字符串。有人可以驗證這是否是發送IPN響應的正確格式?如果不是,我應該如何格式化字符串?Paypal IPN無效

body: 'cmd=_notify-validate&payment_type=instant&payment_date=Sat Oct 01 2016 10:15:51 GMT 0900 (%uB300%uD55C%uBBFC%uAD6D %uD45C%uC900%uC2DC)&payment_status=Completed&address_status=confirmed&payer_status=verified&first_name=John&last_name=Smith&[email protected]&payer_id=TESTBUYERID01&address_name=John Smith&address_country=United States&address_country_code=US&address_zip=95131&address_state=CA&address_city=San Jose&address_street=123 any street&[email protected]&[email protected]&[email protected]&residence_country=US&item_name1=something&item_number1=AK-1234&tax=2.02&mc_currency=USD&mc_fee=0.44&mc_gross=12.34&mc_gross_1=12.34&mc_handling=2.06&mc_handling1=1.67&mc_shipping=3.02&mc_shipping1=1.02&txn_type=cart&txn_id=939521005&notify_version=2.1&custom=xyz123&invoice=abc1234&test_ipn=1&verify_sign=AFcWxV21C7fd0v3bYYYRCpSSRl31ACcRGK9bZMBhEskX.HORa2EqEcwh', 

回答

2

今天我遇到了同樣的問題。 我最初的解決方案是從IPN模擬器中刪除日期字段,從而使其工作。所以我開始在日期字段進行調查。 格林尼治標準時間之後的+符號(正如你在格式化字符串中看到的那樣)不存在。 這與PayPal沒有正確編碼'+'並且接收服務器正在將其翻譯爲白色空間有關。

解決方案: 所以,如果我改變了我的服務器上,並用一個+號,而不是取代引入白色空間,一切工作正常。 (確實醜陋的解決方案)

認爲這是對貝寶的身邊來解決,作爲一個+與空白的翻譯是正確的,所以他們需要正確地編碼發送的數據。

+0

是的!就是這樣!謝謝! – sawa