Paypal IPN bac à sable retour VALIDE
-
18-09-2019 - |
Question
Je suis en train rappel IPN, en utilisant servlet. Le code que je utilise est fourni par paypal pour vérifier les données IPN. Mais chaque fois que j'obtenir un Infirme réponse.
Voici le code:
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
}
J'ai vérifié les trois possibilités offertes par paypal en cas de retour paypal VALIDE comme suit:
1) Paramètres manquants - Comme je suis envoyer tous les paramètres aucun problème de paramètres manquants
2) URL non valide. - J'utilise bac à sable est donc URL: http://www.sandbox.paypal.com / cgi-bin / webscr
3) de codage de caractère. -. Essayé avec codage de caractères identique paramètre de réglage compte paypal encodage
la demande Je RENVOYER à paypal en utilisant les paramètres suivants:
cmd = _notify-validate & last_name = User & test_ipn = 1 & address_name = Test + utilisateur & 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 + septembre + 26% 2C + 2009 + PDT & address_zip = 95131 & payment_status = Terminé & address_street = 1 + Main + St & prenom = 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 & quantité = 1 & notify_version = 2,8 & mc_currency = EUR & custom = & address_state = CA & payment_fee = & handling_amount = 0.00 & payer_status = vérifié & expédition = 0.00 & item_name = True + Up & taxes = 0.00 & username = hannonj & charset = windows-1252 & item_number = 567 & mc_gross = 10.00 & txn_id = 7F456350BS7942738 & receiver_id = MASSU6BSR9SC2 & address_country = Etats + Unis
S'il vous plaît, quelqu'un peut me diriger vers la bonne direction? Je ne reçois pas ce qui est mal le code ou l'URL ou toute autre chose. J'ai essayé toutes les possibilités. S'il vous plaît aidez-moi.
La solution 3
Merci les gars pour votre réponse. ohhh Je l'ai résolu enfin.
En fait, en aviser URL J'ai aussi ajouté un paramètre de nom d'utilisateur. Paypal veulent les valeurs des paramètres pour IPN même que revenir au servlet. (Vous pouvez l'obtenir comme req.getParameterNames ()). Comme je l'ai paramètre nom d'utilisateur supplémentaire, qui n'est pas connu paypal. Paypal rentrait VALIDE.
Autres conseils
Un « Infirme » message est due aux raisons suivantes:
- Vérifiez que vous êtes afficher votre réponse à l'URL correcte , qui est https://www.sandbox.paypal.com/cgi-bin/webscr ou
- Sélectionnez dans le menu déroulant: UTF-8
- Choisissez la même charset aussi pour la deuxième option, qui est liée à IPN
- Cliquez sur « Enregistrer »
Si le problème persiste, nous vous recommandons d'examiner le script en cours d'utilisation, PayPal a quelques exemples de code IPN disponibles à: https://github.com/paypal/ipn-code-samples
Pour plus d'informations, je comprennent le lien: https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-guide/IPNTesting/#id091GFE00WY4
Je suis assez sûr que l'URL à envoyer à est juste « www.sandbox.paypal.com », voir le chapitre 4 du Guide d'utilisation de, et bien, ce que je mets pour mon propre code (soit dit en passant, pour le live , il est également juste "www.paypal.com", pour leur
Si vous testez Paypal IPN via SSL, vous devrez utiliser ssl: //www.sandbox.paypal.com sur le port 443
Souvenez-vous de bac à sable paypal a des références complètement différentes. Vous devez avoir un compte de développement et être connecté dans le panneau de développement à utiliser bac à sable.