我正在嘗試IPN回調,使用servlet。我使用的代碼是由paypal提供的,用於驗證ipn數據。但每次我得到一個INVALID的迴應。Paypal沙箱IPN返回無效
下面是代碼:
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
}
我已經檢查了貝寶的情況下,貝寶返回無效如下提供的所有三種可能性:
1)缺少的參數 - 正如我把所有的參數沒有缺少參數的問題
2)無效的URL。 - 我正在使用沙箱,因此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_狀態=完成& address_street = 1 +主+聖& 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 =美國& mc_fee = 0.64 & address_status =證實& transaction_subject =真+向上&量= 1個& notify_version = 2.8 & mc_currency = EUR &定製= &地址ess_state = CA & payment_fee = & handling_amount = 0.00 & payer_status =驗證&運費= 0.00 & ITEM_NAME = TRUE +向上&稅= 0.00 &用戶名= hannonj &的charset =窗口1252 & ITEM_NUMBER = 567 & mc_gross = 10.00 & txn_id = 7F456350BS7942738 & receiver_id = MASSU6BSR9SC2 & = ADDRESS_COUNTRY美國+美國
請,任何一個可以指導我正確的方向?我沒有得到錯誤的代碼或URL或其他任何東西。我嘗試了所有的可能性。請幫幫我。
這正是我的問題 – 2011-06-25 23:27:15