2016-10-01 13 views
0

私はnode.jsのボディータイプを使用してurlencodeされた文字列を取得し、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&bu[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 Simulatorから日付フィールドを削除して動作させることでした。だから、私はDateフィールドで調べ始めました。 GMTの後に+記号が付きます(フォーマットされた文字列には表示されていません)。 これは、 '+'を正しくエンコードしていないPayPalと関係があり、受信側サーバーはこれを空白として解釈しています。

ソリューション: 私はこれを私のサーバー上で変更し、導入された空白を+記号で置き換えれば、すべて正常に動作します。

これはPayPalの側で、+の空白の変換が正しいため、正しく送信されたデータをエンコードする必要があると考えてください。

+0

はい!それだった!ありがとうございました! – sawa