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 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
}
5 Réponses :
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. P>
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 ) p>
Merci gars pour votre réponse. Ohhh j'ai résolu enfin. P>
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. P>
Si vous testez PayPal IPN sur SSL, vous devrez utiliser SSL: //www.sandbox.paypal.com strong> sur le port 443 strong> p >
Avec PayPal.com, je suis invalide, avec sandbox.paypal.com, je n'ai même pas de réponse.
Alléluia! Merci beaucoup!
Un message " non valide strud>" est dû aux raisons suivantes: p>
Assurez-vous que vous êtes codage de votre chaîne de réponse forte> 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: P>
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 P>
Pour plus d'informations, j'inclus le lien: https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-Guide/ipntesting/#id091GFE00wy4 P>
@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 .. !!