_cart
はPayPal支払い標準とフォームの統合により、すべてのアイテム情報(名前とオプション)のスペースをプラス記号(+
)にエンコードし始めました。私はこれがChromeで起こっていることを確認し、enctype
属性をフォームに追加しました。これが私の問題を解決してくれたようです。 ChromeとFirefoxでは、PayPalにデータを送信でき、スペースは適切に保存されます。おそらく、これは流行ですか?PayPal _cartフォームのスペースをプラス記号に変換
しかし、購入したほとんどすべての顧客は、情報が正しくエンコードされていないため、IPN要求で購入した製品を確認できません。
形態:
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="upload" value="1">
<input type="hidden" name="business" value="[email protected]">
<input type="hidden" name="charset" value="utf-8">
<input type="hidden" name="item_name_1" value="Product With Spaces">
<input type="hidden" name="quantity_1" value="1">
<input type="hidden" name="amount_1" value="30.00">
<input type="hidden" name="on0_1" value="Name">
<input type="hidden" name="os0_1" value="First Last">
<input type="hidden" name="on1_1" value="Email">
<input type="hidden" name="os1_1" value="[email protected]">
<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif" align="left" style="margin-right:7px; margin-top: 2px;">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>
PayPalに提出された場合、生成物はFirst+Last
としてProduct+With+Spaces
と名前として示されています。したがって、PayPalのトランザクションレコードとIPN要求には、間違ってエンコードされたデータも含まれます。
スペースを%20
または+
(通常はダブルエンコーディングになるので、私はそれが助けられるとは思っていませんでした)としてエンコードしようとしましたが、これらの文字はPayPalに表示されました。
私はPayPalの開発者ドキュメントを読んできました。私は最新のフィールドとURLを使用しているようです。また、このコードは何年も問題なく成功しています。