2016-07-08 17 views
-1

私はIPNテストにかなり不満を抱いていました。最終的には、ステップタイムスタンプの検証フィールドで問題点を特定することができましたが、+サインインタイムスタンプを処理する方法について助けが必要です。タイムスタンプの+でPaypalデコードエンコード問題

デコードしてエンコードすると気付きましたが、Paypalリクエストのスペースは+記号になりました。だから私は%+ 20の代わりに+を使いました。これは大丈夫です。しかし、支払期日内にタイムゾーン情報があると問題になります。

など。 金%20Jul%2008パーセント202016% 2010パーセント3A22%3A01%20GMT + 0800%〜20%:金2016年7月8日10時22分01秒GMT + 0800(マレー半島標準時)

パラメータは、として送られてきました28Malay%20Peninsula%20Standard%20Time%復号後の29

金2016年7月8日10時22分01秒GMT 0800(マレー半島標準時)< =====プラス記号が欠落しています.. ...

もう一度: 金+ 7月+ 08 + 2016 + 10%3A22%3A01 + GMT + 0800 +%28Malay +半島+標準+時間は、私がやった29

何%であった:リプレイ+記号一部の一時プレースホルダを復号化する前。一度デコード/エンコードすると、置換を元に戻すことができます。

これはどうやってPaypalで確認できなかったのですか?

答えて

0

さて、私はそれが働いている....それが最良の方法であるかどうかは分かりませんが、今は動作します。

基本的には、+をプレースホルダに置き換えて、入力パラメータ値をパッチします。

patchedValue = value.replace("+", "TEMPXXX"); 

.... 

最後に、エンコード後、プレースホルダーを%記号(+記号)で置き換えます。

.... 
URLEncoder.encode(decodedValue, encoding).replace("+", "%20").replace("TEMPXXX", "%2B") 
関連する問題