Pregunta

Estoy tratando de IPN de devolución de llamada, el uso de servlets.El código que estoy utilizando es proporcionado por paypal para la verificación de la ipn de datos.Pero cada vez que conseguir un No VÁLIDO respuesta.

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 todas las tres posibilidades que ofrecen paypal en caso de que paypal retorno no VÁLIDO como sigue:

1) los Parámetros que Faltan - Como soy enviar todos los parámetros ningún problema de falta de parámetros

2) dirección URL no válida.- Estoy utilizando sandbox tan URL es : http://www.sandbox.paypal.com/cgi-bin/webscr

3) codificación de Caracteres.- Probado con la codificación de caracteres mismo que la cuenta de paypal configurar el parámetro de codificación.

la solicitud de que yo voy a enviar de vuelta a paypal utilizando los siguientes parámetros:

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+Sep+26%2C+2009+PDT&address_zip=95131&payment_status=Completed&address_street=1+Main+St&first_name=Test&payer_email=buyer1_1252495751_per%40gmail.com&protection_eligibility=Eligible&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=confirmed&transaction_subject=True+Up&quantity=1ify_version=2.8&mc_currency=EUR&custom=&address_state=CA&payment_fee=&handling_amount=0.00&payer_status=verified&shipping=0.00&item_name=True+Up&tax=0.00&username=hannonj&charset=windows-1252&item_number=567&mc_gross=10.00&txn_id=7F456350BS7942738&receiver_id=MASSU6BSR9SC2&address_country=United+States

Por favor , ¿puede alguien me dirija a la dirección correcta?No estoy recibiendo lo que está mal el código o la URL o cualquier otra cosa.He intentado todas las posibilidades.Por favor me ayude.

¿Fue útil?

Solución 3

Gracias a todos por su respuesta. ohhh Lo resuelto por fin.

En realidad, en notificar URL también agregué un parámetro de nombre de usuario. PayPal quiere que los valores de los parámetros para IPN mismo que lo devolverá al servlet. (Usted puede conseguirlo como req.getParameterNames ()). Como tengo parámetro de nombre de usuario adicional, que no se conoce a paypal. Paypal regresaba VÁLIDA.

Otros consejos

Un "No VÁLIDO"el mensaje es debido a las siguientes razones:

  • Compruebe que su se la publicación de su respuesta a la URL correcta, que es https://www.sandbox.paypal.com/cgi-bin/webscr o https://www.paypal.com/cgi-bin/webscr, dependiendo de si se está probando en la caja de arena o se está vivo, respectivamente.
  • Compruebe que su respuesta a la prueba IPN mensaje contiene exactamente las mismas variables y valores como el mensaje de prueba y que ellos están en el mismo orden que en el mensaje de prueba.Por último, compruebe que las variables originales están precedidos por un cmd=_notify-validación de la variable.
  • Asegúrese de que usted está codificación su cadena de respuesta y utiliza la misma codificación de caracteres utilizada por la prueba IPN mensaje.(por ejemplo, puedo ver que él está usando letras con diéresis y otros símbolos como "/", etc).Con respecto al último punto, el comerciante puede tratar de cambiar la codificación del lenguaje en uso en su cuenta de PayPal, siguiendo los siguientes pasos:

    1. Inicio de sesión en que la cuenta de PayPal
    2. Haga clic en el Perfil
    3. Haga clic en "Mi Venta de Preferencias" en la ficha
    4. Haga clic en "Botón de PayPal Codificación de Idioma" (al final de la página)
    5. Haga clic en "Otras Opciones".
    6. Seleccione en el menú desplegable:UTF-8
    7. Elegir el mismo juego de caracteres también por la segunda opción, que está relacionado con el IPN
    8. Haga Clic En "Guardar"

Si el problema persiste, te recomendamos revisar la secuencia de comandos en el uso de PayPal tiene algunos IPN ejemplos de código disponible en: https://github.com/paypal/ipn-code-samples

Para obtener información adicional incluyo el enlace: https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-guide/IPNTesting/#id091GFE00WY4

Estoy bastante seguro de que el URL para enviar a es sólo "www.sandbox.paypal.com", véase el capítulo 4 de la Guía del usuario de recinto de seguridad, y bien, esto es lo que he puesto por mi propio código (por cierto, para vivir , también es justo "www.paypal.com", por su código de ejemplo )

Si está probando PayPal IPN a través de SSL, que tendrá que utilizar SSL: //www.sandbox.paypal.com en el puerto 443

Recuerde recinto de seguridad de PayPal tiene completamente diferentes credenciales. Debe tener en cuenta el desarrollo y podrá ingresar con su equipo de desarrollo a utilizar recinto de seguridad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top