Estoy intentando la retrollamada de IPN, usando servlet. El código que estoy usando lo proporciona paypal para verificar los datos de ipn. Pero cada vez que recibo una respuesta NO VÁLIDA.Paypal sandbox IPN return NO VÁLIDO
Aquí está el código:
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
}
He comprobado las tres posibilidades previstas por PayPal en caso de retorno paypal VÁLIDA de la siguiente manera:
1) parámetros que faltan - Como soy enviar todos los parámetros sin problema de los parámetros faltantes
2) URL inválida. - Estoy usando sandbox para que URL sea: http://www.sandbox.paypal.com/cgi-bin/webscr
3) Codificación de caracteres. - Probado con la codificación de caracteres igual que la codificación del parámetro de configuración de la cuenta paypal.
la solicitud estoy enviando de nuevo a PayPal utilizando los parámetros siguientes:
cmd = _notify-validar & last_name = Usuario & test_ipn = 1 & ADDRESS_NAME = Prueba + Usuario & txn_type = web_accept & receiver_email = sellr1_1252495907_biz% 40gmail.com & residence_country = US & address_city = San José + & payment_gross = & payment_date = 01% 3A55% 3A04 + septiembre + 26% 2C + 2009 + PDT & address_zip = 95131 & payment_ estado = completado & address_street = 1 + principal + St & nombre apellido = Prueba & PAYER_EMAIL = buyer1_1252495751_per% 40gmail.com & protection_eligibility = Elegible & payer_id = BXBKS22JQCUWL & verify_sign = AOMkeg7ofCL7FJfioyWA19uCxD4XAgZirsjiGh8cUy1fd2YAqBwOkkst & payment_type = instantánea & negocio = sellr1_1252495907_biz% 40gmail.com & address_country_code = EE.UU. & mc_fee = 0,64 & address_status = confirmó & transaction_subject = True + arriba & cantidad = 1 & notify_version = 2,8 & mc_currency = EUR = & encargo & addr ess_state = CA & payment_fee = & handling_amount = 0.00 & payer_status = verificado & envío = 0.00 & item_name = true + Arriba & impuestos = 0.00 & nombre de usuario = hannonj & charset = windows-1252 & item_number = 567 & mc_gross = 10,00 & txn_id = 7F456350BS7942738 & receiver_id = MASSU6BSR9SC2 & address_country = Estados Unidos +
Por favor, cualquiera puede dirigir a la dirección correcta? No obtengo lo que está mal el código o la URL o cualquier otra cosa. Intenté todas las posibilidades. Por favor, ayúdame.
que era exactamente mi problema –