Page 1 sur 1

[ paypal ] Problème avec la variable invoice

Posté : 29 août 2008, 16:44
par VaN
Bonjour à tous,



Je suis en train de créer une application eCommerce, et j'y intègre un bouton paypal crypté.

Tout marche à peu près, sauf que je rencontre un problème avec la variable invoice.

J'ai décidé d'empêcher les paiements accidentels sur mon compte vendeur sandbox. Il faut donc que cette variable soit unique, à chaque transaction.

La logique voudrait donc que je lui donne l'identifiant de la commande en cours, dans ma base de données. La où ça cloche, c'est que au moment de cliquer sur le bouton paypal, pour payer, la commande en cours n'existe pas encore dans la base de données. Cette insertion doit normalement se faire sur le script IPN, lorsque le paiement a été validé. Car si je la créée avant le paiement, pour passer son ID à la variable invoice, et que finalement, sur la page paypal, l'utilisateur décide qu'il ne veut plus acheter et ferme la page, je me retrouve avec une commande insérée dans ma base de donnée, mais qui n'a pas été payée.

Quelqu'un a t'il déjà été confronté à ce problème ? Si oui, comment l'a t'il résolu ?


Merci d'avance.

Posté : 29 août 2008, 16:57
par zeus
Et que se passe-t-il si ton utilisateur lance un paiement, se rétracte, et relance finalement le paiement ?

Je pense qu'il faut différencier le numéro de la commande du numéro de paiement.
Je pense que gérer une table avec les demandes de paiements, table qui gérerait son propre identifiant, serait une bonne idée.

Comme ça, dès que tu permet un paiement, tu log cette demande et tu utilises le numéro généré.

Posté : 29 août 2008, 17:26
par VaN
Donc j'aurai une table générale, qui stocke toutes les demandes qui aboutissent jusqu'à la page de paiement, et vraie table, qui stockent seulement les commandes validées. C'est surement la meilleure solution effectivement. J'y vois 2 petits problèmes :

1. Il faut créer un script qui permet de vider la table "brouillon" de temps en temps.
2. Lorsque je vais récupérer les commandes validées de la table "brouillon", ma table "commandes" va contenir des identifiants qui ne se suivent pas (ex : commande #1 validée, je la stocke, commande #2 annulée avant le paiement, pas stockée, commande #3 validée, je la stocke. Je me retrouve avec une ligne #1, suivie d'une ligne #3. C'est vraiment un détail, mais mon coté perfectionniste en est tout froissé :? )

Posté : 29 août 2008, 19:42
par zeus
Attention, je distingue les notions de "demande de paiement" et de "commande".

Tu auras une table "paiement" avec une clé primaire auto-incrémentée, et au statut (réussite, échec)
Mais également une table "commande" avec une clé étrangère vers la table "paiement".

Comme ça, tu stockes toutes les demandes de paiement dans une table, et dans ta table commande, tu n'as qu'un lien vers le paiement qui a réussi.