paypalipnのテスト環境(sandbox)での注意点

main > paypal > paypalipnのテスト環境(sandbox)での注意点

paypalのテスト環境で何度も『INVALID』判定を食らいましたので、その忘備録を記します。

paypalipnへのリクエストプログラムは、Paypal「PDT」「IPN」を使った決済とバックエンドの統合(2)を参考にさせていただきました。

文字のエンコード設定

PayPalのサイトで(勿論、SandBoxでテストしているならSandBoxで)、設定を変えないとShift_JISになってしまうのですが、

「マイアカウント」
「個人設定」
と進み、「販売の設定」の欄にある「言語のエンコード」を選択して「ウェブサイトの言語」を「日本語」にします。

そして、「詳細オプション」に進みます。

この「詳細オプション」に落とし穴があって、

「エンコード方式」を「UTF-8」
「PayPalから送信されたデータと同じエンコード方式を使用しますか(IPN、ダウンロード可能なログ、メールなど)?」を「はい」
にすると、前の画面の「ウェブサイトの言語」の設定が何故か「西欧言語(英語を含む)」になってしまいます。

これに気づかずに、IPN通知をポストバックしてみたら、ものの見事にINVALIDとなってしまいました。

(UTF-8て日本語使えるのにね。3バイトとかの文字もあるけど)

そこで、先ほどの「詳細オプション」では、

「エンコード方式」を「Shift_JIS」
「PayPalから送信されたデータと同じエンコード方式を使用しますか(IPN、ダウンロード可能なログ、メールなど)?」を「いいえ。次のエンコード方式を使用します。」
その下のプルダウンで「UTF-8」を選択して「保存」とします。

参考記事PayPalのIPNでハマった

最終ポイント

しかし、上記を含め全て修正したつもりなのになぜかsandbox.paypal.comへのリクエストでINVALID判定。

最後に仕方なく、本番環境で(paypal.com)リクエストしたら、valided判定になりました。

なので、結論としては、paypalapiの最終チェックは、本番環境でないとわからないということでした。

sandboxで正しい回答が得られないときは、思い切って本番環境で確認してみてください。