jax*_*axb 6 paypal sandbox paypal-sandbox
我正在尝试使用servlet进行IPN回调.我正在使用的代码由paypal提供,用于验证ipn数据.但每次我收到INVALID回复.
这是代码:
Enumeration en = req.getParameterNames();
String str = "cmd=_notify-validate";
while (en.hasMoreElements()) {
String paramName = (String) en.nextElement();
String paramValue = req.getParameter(paramName);
//str = str + "&" + paramName + "=" + URLEncoder.encode(paramValue,"UTF-8"); // for UTF-8 i set the encode format in my account as UTF-8
//str = str + "&" + paramName + "=" + URLEncoder.encode(paramValue,"ISO-8859-1");// for ISO-8859-1 i set the encode format in my account as ISO-8859-1
str = str + "&" + paramName + "=" + URLEncoder.encode(paramValue); //default as provided by paypal
}
URL u = new URL("http://www.sandbox.paypal.com/cgi-bin/webscr");
URLConnection uc = u.openConnection();
uc.setDoOutput(true);
uc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
PrintWriter pw = new PrintWriter(uc.getOutputStream());
pw.println(str);
pw.close();
BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream()));
String res = in.readLine();
in.close();
if (res.equals("VERIFIED") || !res.equals("VERIFIED")) {
//Update database...
} else if (res.equals("INVALID")) {
//INVALID
}
Run Code Online (Sandbox Code Playgroud)
我检查了paypal提供的所有三种可能性,如果paypal返回INVALID如下:
1)缺少参数 - 因为我发送所有参数没有缺少参数的问题
2)无效的网址.- 我正在使用沙箱,所以URL是:http://www.sandbox.paypal.com/cgi-bin/webscr
3)字符编码. - 尝试使用与paypal帐户设置参数编码相同的字符编码.
我使用以下参数发送回paypal的请求:
CMD = _notify-验证&姓氏=用户&的test_ipn = 1&ADDRESS_NAME =测试+使用者&txn_type = web_accept&RECEIVER_EMAIL = sellr1_1252495907_biz%40gmail.com&residence_country = US&ADDRESS_CITY =圣+圣何塞&payment_gross =&PAYMENT_DATE = 01%3A55%3A04 +月+ 26%2C + 2009 + PDT&address_zip = 95131&PAYMENT_STATUS =完成&address_street = 1 +主+ ST&FIRST_NAME =测试与PAYER_EMAIL = buyer1_1252495751_per%40gmail.com&protection_eligibility =合格&payer_id = BXBKS22JQCUWL&verify_sign = AOMkeg7ofCL7FJfioyWA19uCxD4XAgZirsjiGh8cUy1fd2YAqBwOkkst&payment_type =瞬间和商务= sellr1_1252495907_biz%40gmail.com&address_country_code = US&mc_fee = 0.64 address_status =证实与transaction_subject =真+向上和数量= 1¬ify_version = 2.8&mc_currency =欧元和定制= ADDRESS_STATE = CA&payment_fee = &handling_amount = 0.00&payer_status =验证及运送= 0.00&ITEM_NAME =真+向上&税= 0.00和用户名= hannonj&字符集=窗口1252&ITEM_NUMBER = 567&mc_gross = 10.00 txn_id = 7F456350BS7942738&receiver_id = MASSU6BSR9SC2&ADDRESS_COUNTRY =美+美国
请问,任何人都可以指导我正确指导吗?我没有得到代码或URL或其他任何错误.我尝试了所有的可能性.请帮我.
小智 18
" INVALID "消息是由于以下原因:
确保您编码您的响应字符串,并使用相同的字符编码使用的考验IPN消息.(例如,我可以看到他正在使用带有变音符号的字母和其他符号,如"/"等).关于最后一点,商家可以尝试更改其PayPal帐户中使用的编码语言,请按照以下步骤操作:
如果问题仍然存在,我们建议您查看正在使用的脚本,PayPal有一些IPN代码示例,请访问:https://github.com/paypal/ipn-code-samples
有关其他信息,请包含以下链接:https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-guide/IPNTesting/#id091GFE00WY4
谢谢你们的回复。哦哦我终于解决了。
实际上在通知 URL 中我还添加了一个用户名参数。Paypal 希望 IPN 的参数值与返回到 servlet 的参数值相同。(您可以通过 req.getParameterNames() 获取它)。因为我有额外的用户名参数,这是贝宝不知道的。Paypal 返回无效。
归档时间: |
|
查看次数: |
28929 次 |
最近记录: |