Paypal sandbox IPN ritorno INVALID
-
18-09-2019 - |
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.
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:
- Login sul tuo conto PayPal
- Fare clic sul profilo
- Fare clic su “Le mie Preferenze per la vendita” scheda
- Fare clic su “PayPal codifica pulsante Language” (alla fine della pagina)
- Fare clic su "Altre opzioni"
- Selezionare dal menu a tendina: UTF-8
- Scegli lo stesso set di caratteri anche per la seconda opzione, che è legato alla IPN
- 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.