8
votes

PayPal Sandbox IPN retour invalide

J'essaie un rappel IPN, à l'aide de servlet. Le code que j'utilise est fourni par PayPal pour vérifier les données IPN. Mais chaque fois que je reçois une réponse invalide forte> non valide.

Voici le code: p>

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   
    }


0 commentaires

5 Réponses :


1
votes

N'oubliez pas que le bac à sable de PayPal a des informations d'identification complètement différentes. Vous devez avoir un compte de développement et être connecté au panneau de développement pour utiliser Sandbox.


0 commentaires

9
votes

Je suis à peu près sûr que l'URL à envoyer est juste "www.sandbox.paypal.com", voir le chapitre 4 du Guide de l'utilisateur Sandbox, et bien, c'est ce que j'ai mis pour mon propre code (incidemment, pour Live , il est également juste juste "www.paypal.com", pour leur exemple de code )


0 commentaires

3
votes

Merci gars pour votre réponse. Ohhh j'ai résolu enfin.

En réalité en notify URL, j'ai également ajouté un paramètre Nom d'utilisateur. PayPal veut que les valeurs de paramètre pour IPN sont identiques au retour au servlet. (Vous pouvez l'obtenir comme REQ.GETPARAMETERNAMES ()). Comme je possède un paramètre Nom d'utilisateur Extra, ce qui n'est pas connu de PayPal. PayPal retournait invalide.


0 commentaires

2
votes

Si vous testez PayPal IPN sur SSL, vous devrez utiliser SSL: //www.sandbox.paypal.com sur le port 443


2 commentaires

Avec PayPal.com, je suis invalide, avec sandbox.paypal.com, je n'ai même pas de réponse.


Alléluia! Merci beaucoup!



21
votes

Un message " non valide " est dû aux raisons suivantes:

  • Vérifiez que vous êtes Postez votre réponse à l'URL correcte , qui est https://www.sandbox.paypal.com/cgi-bin/webscr ou https://www.paypal.com/cgi-bin/webscr , selon que vous testez dans le bac à sable ou que vous vivez, respectivement.
  • Vérifiez que votre réponse au message TEST IPN Message contient exactement les mêmes variables et valeurs comme le message de test et qu'ils sont dans le même ordre que dans le message de test . Enfin, vérifiez que les variables d'origine sont précédées d'une variable CMD = _Notify-validate.
  • Assurez-vous que vous êtes codage de votre chaîne de réponse Utilisez le même codage de caractères que celui utilisé par le message TEST IPN. (Par exemple, je peux voir qu'il utilise des lettres avec Umlaut et d'autres symboles comme "/", etc.). En ce qui concerne le dernier point, le commerçant peut essayer de modifier le langage de codage utilisé dans son compte PayPal, en suivant les étapes ci-dessous:

    1. Connectez-vous sur votre compte PayPal
    2. Cliquez sur le profil
    3. Cliquez sur "Mes Préférences de vente" onglet
    4. Cliquez sur "Bouton PayPal Encodage de la langue" (à la fin de la page)
    5. Cliquez sur "Autres options"
    6. Sélectionnez dans le menu déroulant: UTF-8
    7. Choisissez le même Charset également pour la deuxième option, qui est liée à IPN
    8. Cliquez sur "Enregistrer"

      Si le problème persiste, nous vous recommandons d'examiner le script utilisé, PayPal dispose de certains échantillons de code IPN disponibles à l'adresse suivante: https://github.com/paypal/ipn-code-semples

      Pour plus d'informations, j'inclus le lien: https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-Guide/ipntesting/#id091GFE00wy4


2 commentaires

@Paypal_federica change codant en utf8 corrige mon problème , Merci


C'est vraiment utile que j'avais le même problème a été résolu en utilisant github.com/paypal/ipn-code- Échantillons exemple de fichier ... merci .. !!