Paypal Sandbox IPN Rückkehr INVALID
-
18-09-2019 - |
Frage
Ich versuche IPN Rückruf, Servlet verwenden. Der Code, den ich verwende, ist zur Überprüfung der IPN-Daten, die von PayPal zur Verfügung gestellt. Aber jedes Mal, wenn ich immer eine INVALID Antwort.
Hier ist der Code:
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
}
Ich habe haben alle drei Möglichkeiten durch paypal bei paypal Rückkehr INVALID wie folgt vorgesehen:
1) Fehlende Parameter - Wie sende ich bin alle Parameter kein Problem Parameter fehlt
2) Ungültige URL. - Ich bin mit Sandbox so URL ist: http://www.sandbox.paypal.com / cgi-bin / webscr
3) Zeichenkodierung. -. Versuchte mit Zeichencodierung gleiche wie PayPal-Konto Parametercodierung Einstellung
die Anfrage schicke ich zurück zu paypal mit folgenden Parametern:
cmd = _notify-validate & last_name = User & test_ipn = 1 & address_name = Test + User & txn_type = web_accept & receiver_email = sellr1_1252495907_biz% 40gmail.com & residence_country = US & ADDRESS_CITY = San + Jose & payment_gross = & payment_date = 01% 3A55% 3A04 + September + 26% 2C + 2009 + PDT & address_zip = 95131 & payment_status = Abgeschlossen & address_street = 1 + Main + St & first_name = Test & PAYER_EMAIL = buyer1_1252495751_per% 40gmail.com & protection_eligibility = Gültiger & payer_id = BXBKS22JQCUWL & verify_sign = AOMkeg7ofCL7FJfioyWA19uCxD4XAgZirsjiGh8cUy1fd2YAqBwOkkst & payment_type = Instant & business = sellr1_1252495907_biz% 40gmail.com & address_country_code = US & mc_fee = 0,64 & address_status = bestätigt & transaction_subject = True + Up & Menge = 1 & notify_version = 2,8 & mc_currency = EUR & custom = & address_state = CA & payment_fee = & handling_amount = 0,00 & payer_status = verifiziert & Versand = 0,00 & item_name = true + Up & Steuern = 0.00 & username = hannonj & charset = windows-1252 & item_number = 567 & mc_gross = 10.00 & txn_id = 7F456350BS7942738 & receiver_id = MASSU6BSR9SC2 & ADDRESS_COUNTRY = Vereinigte + Staaten
Bitte, kann jemand mir die richtige Richtung lenken? Ich bin nicht das bekommen, was falsch ist der Code oder die URL oder irgendetwas anderes. Ich habe versucht, alle Möglichkeiten. Bitte helfen Sie mir.
Lösung 3
Danke Jungs für Ihre Antwort. ohhh Ich löste es schließlich.
Eigentlich in URL benachrichtigen Ich habe auch einen Benutzernamen Parameter. Paypal die Parameterwerte für IPN wollen gleiche wie es zum Servlet zurück. (Sie können es als req.getParameterNames get ()). Wie ich habe Benutzername Parameter Extra, die paypal nicht bekannt ist. Paypal zurückkehrt INVALID.
Andere Tipps
Ein „ INVALID “ Nachricht ist aufgrund der folgenden Gründe:
- Überprüfen Sie, ob Sie Ihre Antwort auf die korrekte URL veröffentlichen , das ist https://www.sandbox.paypal.com/cgi-bin/webscr oder
- Wählen Sie aus dem Dropdown-Menü: UTF-8
- Wählen Sie die gleiche charset auch für die zweite Option, die IPN verwandt ist
- Klicken Sie auf „Speichern“
Wenn das Problem weiterhin besteht, empfehlen wir das Skript in Gebrauch zu überprüfen, hat PayPal einige IPN Code-Beispiele finden Sie unter: https://github.com/paypal/ipn-code-samples
Weitere Informationen bin ich den Link: https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-guide/IPNTesting/#id091GFE00WY4
Ich bin mir ziemlich sicher, dass die URL zu senden ist nur „www.sandbox.paypal.com“, siehe Kapitel 4 von Sandbox-Benutzerhandbuch, und gut, das ist, was ich für meinen eigenen Code setzen (übrigens live es ist auch nur "www.paypal.com", für ihre
Wenn Sie testen Paypal IPN über SSL, werden Sie verwenden müssen ssl: //www.sandbox.paypal.com auf dem Port 443
Denken Sie daran, paypal Sandbox ganz andere Anmeldeinformationen verfügt. Sie müssen Entwicklungskonto und in Entwicklung Panel angemeldet sein Sandbox zu verwenden.