2009-09-28 20 views
5

Sto tentando la richiamata IPN, utilizzando la servlet. Il codice che sto usando è fornito da paypal per verificare i dati dell'ipn. Ma ogni volta ottengo una risposta INVALID.Sandbox paypal Ritorno IPN NON VALIDO

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 senza problema dei parametri mancanti

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

3) Codifica dei caratteri. - Provato con codifica dei caratteri uguale alla codifica dei parametri di impostazione dell'account paypal.

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

cmd = _notify-convalidare & cognome = Utente & test_ipn = 1 & address_name = Test + utente & 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 = idoneo & payer_id = BXBKS22JQCUWL & verify_sign = AOMkeg7ofCL7FJfioyWA19uCxD4XAgZirsjiGh8cUy1fd2YAqBwOkkst & payment_type = istante & affari = sellr1_1252495907_biz% 40gmail.com & address_country_code = US & mc_fee = 0.64 & address_status = confermato & transaction_subject = true + Su & quantità = 1 & notify_version = 2.8 & mc_currency = EUR & personalizzato = & addr ess_state = CA & payment_fee = & handling_amount = 0.00 & payer_status = verificato & il trasporto = 0.00 & item_name = true + Su & fiscale = 0.00 & username = hannonj & charset = windows-1252 & item_number = 567 & mc_gross = 10.00 & txn_id = 7F456350BS7942738 & receiver_id = MASSU6BSR9SC2 & address_country = Stati Uniti +

prega, uno può indirizzare al senso adeguato? Non riesco a ottenere ciò che è sbagliato nel codice o nell'URL o in qualsiasi altra cosa. Ho provato tutte le possibilità. Mi aiuti per favore.

risposta

3

Grazie voi ragazzi per la vostra risposta ohhh l'ho risolto finalmente

In realtà nell'URL di notifica ho anche aggiunto un parametro username Paypal desidera i valori dei parametri per IPN come restituisce il servlet. (Puoi ottenerlo come req.getParameterNames()). Come ho il parametro username extra, che non è noto per paypal.Pay Paypal restituiva INVALIDO

0

Ricordare che la sandbox di PayPal ha credenziali completamente diverse. È necessario disporre di un account di sviluppo e accedere al pannello di sviluppo per utilizzare sandbox.

9

Sono abbastanza sicuro che l'URL da inviare sia solo "www.sandbox.paypal".com ", vedi il capitolo 4 di Sandbox User Guide, e bene, questo è quello che ho messo per il mio codice (per inciso, per il vivo, è anche solo" www.paypal.com ", per il loro sample code)

+1

che era esattamente il mio problema –

2

Se stai testando IPN Paypal su SSL, dovrai usare ssl: //www.sandbox.paypal.com sulla porta

+3

Con paypal.com non sono più valido, con sandbox.paypal.com non ho nemmeno una risposta. – Exegesis

+1

alleluia! Grazie mille! –

13

Un “VALIDO” messaggio è dovuto alle seguenti ragioni:

  • Verificare che il vostro sono pubblicare la tua risposta all'URL corretto, che è https://www.sandbox.paypal.com/cgi-bin/webscr o https://www.paypal.com/cgi-bin/webscr, a seconda che si stia testando in Sandbox o se si è dal vivo, rispettivamente.
  • Verificare che la risposta al messaggio IPN di prova contenga esattamente le stesse variabili e valori come messaggio di prova e che siano nello stesso ordine del messaggio di prova. Infine, verifica che le variabili originali siano precedute da una variabile cmd = _notify-validate.
  • Verificare di essere la codifica e utilizzare la stessa codifica di caratteri utilizzata dal messaggio IPN di prova. (per esempio, posso vedere che sta usando lettere con umlaut 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 la procedura di seguito:

    1. Entrata su di voi conto PayPal
    2. Cliccare su Profile
    3. Click su “le mie Preferenze per la vendita” tAB
    4. Fare clic su “PayPal codifica pulsante della lingua” (alla fine della pagina)
    5. Fare clic su "Altre opzioni"
    6. selezionare dal menu a tendina: UTF-8
    7. scegliere lo stesso set di caratteri anche per la seconda opzione, che è legato alla IPN
    8. Fare clic su “Salva”

Se il problema persiste, si consiglia di rivedere lo script in uso, PayPal ha alcuni esempi di codice IPN disponibili presso: 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

+0

Elenchi puntati, quindi non sono troppo pigro per leggerlo. Grazie! –

+1

@PayPal_Federica cambia la codifica in utf8 risolva il mio problema ,,, grazie –

+0

Questo è veramente utile stavo avendo lo stesso problema risolto usando https://github.com/paypal/ipn-code-samples file di esempio ... Grazie .. !! –