gpt4 book ai didi

java - 使用 Java 验证 PayPal 的 IPN 通知。如何用特殊字符编码 "item_name"参数

转载 作者:行者123 更新时间:2023-11-30 11:41:23 25 4
gpt4 key购买 nike

我构建了一个 IPN 监听器来验证 PayPal 通知。所有通知都验证良好,参数 item_name 具有特殊字符时除外。项目名称示例:“Um mês”

我试过用一些字符集对 url 进行编码,但没有人奏效。如果我删除 item_name 的特殊字符,IPN 验证会返回 VALID,但是当只放入一个简单的特殊字符时,返回的总是 INVALID。

在执行请求之前我必须使用的正确编码是什么?

这是我的代码:` public void verificaIPN(FacesContext fc) 抛出 FalseINPException, IOException { ExternalContext externalContext = fc.getExternalContext(); 迭代器 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();

最佳答案

您是否尝试过更改您的帐户编码并仅在您的应用中进行 URL 编码?

所以 PayPal 隐藏了这个链接(不知道为什么)。您实际上无法通过在您的帐户中导航到任何地方(我发现)来访问它。因此,登录您的帐户并单击此按钮:

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

点击更多选项

并将您的编码更改为您的语言所需的编码。

这应该可以解决问题。

关于java - 使用 Java 验证 PayPal 的 IPN 通知。如何用特殊字符编码 "item_name"参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12273134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com