2

PayPal 通知を検証する IPN リスナーを作成します。パラメータ item_name に特別な文字がある場合を除いて、すべての通知は適切に検証されています。アイテム名の例:「Um mes」

いくつかの文字セットで URL をエンコードしようとしましたが、誰も機能しませんでした。item_name の特殊文字を削除すると、IPN 検証で VALID が返されますが、単純な特殊文字だけを配置すると、常に INVALID が返されます。

リクエストを実行する前に使用する必要がある正しいエンコーディングは何ですか?

これが私のコードです: ` public void verificaIPN(FacesContext fc) throws FalseINPException, IOException { イテレータ requestParameterNames = externalContext .getRequestParameterNames();

 String requestUrl = Messages.getString("PayPalUtil.paypalURL"); //$NON-NLS-1$
 while (requestParameterNames.hasNext()) {
    String chave = requestParameterNames.next();
    String valor = externalContext.getRequestParameterMap().get(chave);

    //is this below right?
    requestUrl += "&" + chave + "=" + URLEncoder.encode(valor, "UTF-8");
 }

 URL urlConPayPal = new URL(requestUrl);
 URLConnection yc = urlConPayPal.openConnection();
 yc.setDoOutput(true);
 yc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

 BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
 String inputLine;

 while ((inputLine = in.readLine()) != null) {
    if (inputLine.equals("VERIFIED")) {
    } else {
       throw new FalseINPException("O paypal não confirma esta transação: "
           + inputLine);
    }
 }
 in.close();

}

4

2 に答える 2

1

アカウントのエンコーディングを変更して、アプリで URL エンコーディングだけを試しましたか?

そのため、PayPal はこのリンクを非表示にしました (理由は不明です)。文字通り、アカウント内のどこにでも移動してアクセスすることはできません(私が見つけたものです)。アカウントにログインして、これをクリックしてください。

https://www.paypal.com/us/cgi-bin/webscr?cmd=_profile-language-encoding

その他のオプションをクリックします

そして、エンコーディングをあなたの言語に必要なものに変更してください。

これでうまくいくはずです。

于 2013-02-13T19:09:52.723 に答える
0

この問題は、呼び出しでパラメーターを 1 つ忘れたことに起因しています。あなたは私のようにポルトガル語を送ろうとしているようです。:)あなたが持っている必要があります:

 <INPUT TYPE="hidden" name="charset" value="utf-8">

(utf-8またはエンコードに応じて必要なもの)。そして、「Doação」などの名前を付けることができます....

参照: https://developer.paypal.com/docs/classic/paypal-payments-standard /integration-guide/formbasics/#id08A6F0RK0PN

于 2016-11-18T14:03:25.570 に答える