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 |
Partager