Bonjour à tous,
Je viens vous apporter quelques infos pour ceux qui ont des soucis avec les notifications de paiement instantanées de Paypal (IPN) avec des réponses "INVALID" lors de la vérification du paiement, vu que je viens de galérer 3 jours à trouver
Les réglages de votre compte Paypal :
- Dans préférences, Encodage de la langue, cliquez sur Plus d'options et choisissez UTF-8 comme encodage. (TRES IMPORTANT !)
Dans le code d'initialisation de votre page de notification, qui bien sur doit être en AWP :
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
| //Déclaration des variables et récupération de paramètres utils
gsTemp est une chaîne
gsCustom est une chaîne=PageParamètre("custom") //Identifiant personel
gsChaine est une chaîne="cmd=_notify-validate" //Cette Chaine servira a lancer la vérification
gsStatus est une chaîne=PageParamètre("payment_status") //Status de la transaction
gsUnikID est une chaîne=PageParamètre("txn_id") //Identifiant unique de la transaction
gsReceiverAdresse est une chaîne=PageParamètre("receiver_email") //adresse paypal du marchand
sGsPayerEmail est une chaîne=PageParamètre("payer_email") //adresse paypal du client
moGmoMontant est un monétaire=Val(PageParamètre("mc_gross")) //montant de la transaction
sReferencee est chaîne = PageParamètre("item_number")
gsMessage est une chaîne //Message a retourner
gbBKO est un booléen=Faux //Vrai si le process a échouer
//vérification adresse du marchand
SI Minuscule(gsReceiverAdresse)<>"adresse@marchand" ALORS
gsMessage="Erreur Receiver : "+gsReceiverAdresse
gbBKO=Vrai
FIN
//Récupération de tous les paramètres de la page
I est un entier=1
gsTemp=PageParamètre(I)
TANTQUE gsTemp<>"" ET gsTemp<>EOT
SI gsChaine<>"" ALORS
gsChaine+="&"
FIN
gsChaine+=gsTemp
I++
gsTemp=PageParamètre(I)
FIN
// Ne pas oublier le URLEncode !!!!!
gsChaine=URLEncode("https://www.sandbox.paypal.com/cgi-bin/webscr?"+gsChaine)
SI PAS gbBKO ALORS
//Vérifier que l'identifiant unique est bien unique
HLitRecherchePremier(Transactions_Paypal,ID_Transaction,gsUnikID)
SI HTrouve(Transactions_Paypal) ALORS
gsMessage="Erreur ID Duppliqué"
gbBKO=Vrai
FIN
FIN
//Envoi d'une requête au site paypal pour valider la transaction
SI PAS gbBKO ALORS
SI HTTPRequête(gsChaine) ALORS
SI Majuscule(HTTPDonneRésultat(httpRésultat))<>"VERIFIED" ALORS
gsMessage="RESULTAT : "+HTTPDonneRésultat(httpRésultat)
gbBKO=Vrai
FIN
SINON
gsMessage="ERREUR HTTP REQUETE"
gbBKO=Vrai
FIN
FIN
SI PAS gbBKO ALORS
//Enregistrement de la transaction dans une base locale
HRAZ(Transactions_Paypal)
Transactions_Paypal.ID_Transaction=gsUnikID
Transactions_Paypal.Date_Transaction=DateSys+HeureSys
Transactions_Paypal.Status = gsStatus
Transactions_Paypal.Montant=moGmoMontant
Transactions_Paypal.EmailClient=sGsPayerEmail
Transactions_Paypal.Details=gsChaine
Transactions_Paypal.Custom=gsCustom
Transactions_Paypal.IDmembres = gsCustom
HAjoute(Transactions_Paypal)
SELON Minuscule(gsStatus)
CAS "canceled-reversal"
gsMessage="ANNULE - Paiement a été annulée"
CAS "completed","processed","Completed"
//Vérifiez encore ici que le montant de la transaction corresponde bien au montant de la commande
//Si ok, considérez le paiement comme effectué et faite toutes les opérations nécessaires
gsMessage="OK - Est payée et peut être validée"
CAS "denied"
gsMessage="REFUSE - Paiement a été refusé"
CAS "expired"
gsMessage="EXPRIRE - Paiement a expiré"
CAS "failed"
gsMessage="ERREUR - Paiement n'a pas fonctionné"
CAS "in-Progress"
gsMessage="EN COURS - Paiement en cours"
CAS "pending"
gsMessage="SUSPENDU - Paiement est suspendu"
CAS "refunded"
gsMessage="REMBOURSE - Paiement a été remboursé"
CAS "reversed"
gsMessage="REVERSED - Paiement a été remboursé"
CAS "voided"
gsMessage="VOIDED - Paiement a été stoppé"
AUTRE CAS
FIN
SINON
// Ici on traite l'échec des paiements suite à une réponse INVALID de Paypal
FIN |
Voilà, j'espère pouvoir ainsi aider ceux qui ont eu la même galère que moi