Précédent   Forum des professionnels en informatique > Environnements de développement > WinDev > WebDev
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/12/2011, 12h31   #1
Membre à l'essai
 
Inscription : septembre 2006
Messages : 74
Détails du profil
Informations personnelles :
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations forums :
Inscription : septembre 2006
Messages : 74
Points : 20
Points : 20
Par défaut Pour ceux qui coincent avec l'IPN de Paypal

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
fweds est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h09.


 
 
 
 
Partenaires

Hébergement Web