Domanda

sto cercando IPN richiamata, utilizzando servlet. Il codice che sto usando è fornito da PayPal per la verifica dei dati IPN. Ma ogni volta che ottenere un INVALID risposta.

Ecco il codice:

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   
    }

Ho controllato tutte e tre le possibilità offerte da PayPal in caso di ritorno paypal VALIDO come segue:

1) Parametri mancanti - Come io sono inviare tutti i parametri di alcun problema di parametri mancanti

2) URL non valido. - Sto usando sandbox in modo URL è: http://www.sandbox.paypal.com / cgi-bin / webscr

3) Codifica caratteri. -. Ho provato con codifica dei caratteri stessi di conto paypal impostare la codifica del parametro

la richiesta di I rimando a PayPal utilizzando i seguenti parametri:

  

cmd = _notify-validate e cognome = 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 + settembre + 26% 2C + 2009 + PDT & address_zip = 95131 & payment_status = Completato & address_street = 1 + Main + St & first_name = test & PAYER_EMAIL = buyer1_1252495751_per% 40gmail.com & protection_eligibility = Diritto & payer_id = BXBKS22JQCUWL & verify_sign = AOMkeg7ofCL7FJfioyWA19uCxD4XAgZirsjiGh8cUy1fd2YAqBwOkkst & payment_type = istante & business = sellr1_1252495907_biz% 40gmail.com & address_country_code = US & mc_fee = 0.64 & address_status = confermato & transaction_subject = true + Up & quantità = 1 & notify_version = 2.8 & mc_currency = EUR & custom = & address_state = CA & payment_fee = & handling_amount = 0.00 & payer_status = verificato & shipping = 0.00 & item_name = true + Up & fiscale = 0.00 & username = hannonj & charset = windows-1252 & item_number = 567 & mc_gross = 10.00 & txn_id = 7F456350BS7942738 & receiver_id = MASSU6BSR9SC2 & address_country = Stati + States

, uno può indirizzare al senso adeguato? Non ricevo ciò che è sbagliato il codice o l'URL o qualsiasi altra cosa. Ho provato tutte le possibilità. Ti prego, aiutami.

È stato utile?

Soluzione 3

Grazie ragazzi per la risposta. ohhh ho risolto alla fine.

In realtà nel notificare URL Ho anche aggiunto un parametro di nome utente. Paypal vogliono i valori dei parametri per IPN stesso che tornare al servlet. (È possibile ottenere come req.getParameterNames ()). Come ho parametro nome utente in più, che non è noto a paypal. Paypal stava tornando VALIDO.

Altri suggerimenti

Un “ INVALID ” messaggio è dovuto ai seguenti motivi:

  • Verificare che il vostro sono pubblicare la tua risposta alla URL corretto , che è https://www.sandbox.paypal.com/cgi-bin/webscr o https://www.paypal.com/cgi-bin/webscr , a seconda se si sta testando nella Sandbox o siete in tensione, rispettivamente.
  • Verificare che la risposta al test messaggio IPN contiene esattamente le stesse variabili e valori come il messaggio di prova e che sono nello stesso ordine come nel messaggio di prova . Infine, verificare che le variabili originali sono preceduti da una variabile _notify-validate cmd =.
  • garantire che si sono encoding la stringa di risposta e stanno utilizzando la stessa codifica dei caratteri usati per il test di messaggio IPN. (Per esempio, vedo che lui sta usando le lettere con dieresi e altri simboli come “/”, ecc). Per quanto riguarda l'ultimo punto, il commerciante può cercare di cambiare la lingua di codifica in uso nel suo conto PayPal, seguendo le istruzioni riportate di seguito:

    1. Login sul tuo conto PayPal
    2. Fare clic sul profilo
    3. Fare clic su “Le mie Preferenze per la vendita” scheda
    4. Fare clic su “PayPal codifica pulsante Language” (alla fine della pagina)
    5. Fare clic su "Altre opzioni"
    6. Selezionare dal menu a tendina: UTF-8
    7. Scegli lo stesso set di caratteri anche per la seconda opzione, che è legato alla IPN
    8. Fai clic su “Salva”

Se il problema persiste, si consiglia di rivedere lo script in uso, PayPal ha alcuni esempi di codice IPN disponibili all'indirizzo: https://github.com/paypal/ipn-code-samples

Per ulteriori informazioni ho includono il link: https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-guide/IPNTesting/#id091GFE00WY4

Sono piuttosto sicuro che l'URL per inviare a è solo "www.sandbox.paypal.com", vedere il capitolo 4 della Guida per l'utente Sandbox, e bene, questo è quello che ho messo per il mio proprio codice (per inciso, per vivere , ma è anche solo "www.paypal.com", per la loro codice di esempio )

Se stai testando Paypal IPN su SSL, si dovrà usare ssl: //www.sandbox.paypal.com sulla porta 443

Ricordate sandbox di PayPal dispone di credenziali completamente diverse. È necessario disporre di conto sviluppo e accesso con panel di sviluppo di utilizzare sandbox.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top