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.

War es hilfreich?

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.

scroll top