2009-05-18 12 views
1

J'ai un panier. Je souhaite intégrer la passerelle de paiement CCAvenue. J'envoie toujours l'identifiant de commande de la base de données. Après la caisse, mon système s'éteint soudainement. Ensuite, encore une fois, je dois vérifier à nouveau envoyer. L'identifiant de commande de ma base de données est en double pour la passerelle de paiement. C'est mon problème.Comment envoyer un ID de commande unique pour chaque demande à une passerelle de paiement?

Ma question est: Comment envoyer un ID de commande unique à chaque fois? Mon site est en PHP.

+0

Pouvez-vous expliquer ce que vous entendez par "mon système est éteint"? Vous n'avez pas vraiment donné assez d'informations ou d'échantillons de code. –

+0

syste est éteint signifie en raison de coupure de courant mon système est arrêté. ma question est que comment créer un ID de commande unique –

Répondre

0

Je pense qu'il devrait y avoir une fonction distincte pour cela - en cours d'exécution tout le temps, en vérifiant si une version précédente de la commande est dans le panier ou non. En outre, une copie du processus doit être stockée dans la base de données toujours. De cette façon, si pour une raison quelconque, le serveur redémarre, la commande peut être effectuée à partir de la même position (il n'y aura donc aucun problème de duplication des commandes).

+2

NE JAMAIS stocker les détails complets de carte de crédit dans votre DB. Au mieux, vous courez le risque de voir l'information volée. Au pire, vous pouvez être en violation directe de vos accords avec votre fournisseur de compte marchand. Rappelez-vous que quelque chose que vous n'avez pas (informations complètes sur votre carte de crédit) ne peut jamais être volé. Au lieu de cela, ne stocker que les 4 derniers chiffres de la carte de crédit pour activer l'audit. –

+0

@ Larry K: +1 pouah. Violation de l'accord avec la passerelle de paiement n'est jamais amusant, et il est ennuyeux combien de personnes le font. – scraimer

0

veulent probablement un identifiant unique comme celui-ci http://us3.php.net/uniqid si votre question est une sorte de vague

2

Avec la plupart des passerelles de paiement, vous pouvez envoyer un seul auth + capture AKA transaction « vente » ou vous pouvez envoyer une transaction authorize et la capture comme deux demandes distinctes. Si vous êtes préoccupé par les problèmes de cohérence transactionnelle avec l'envoi d'une transaction de vente unique, ma recommandation est d'envoyer une autorisation pour d'abord réserver les fonds et ensuite envoyer une capture à la fin de votre processus de commande.

Si le système échoue lors de l'autorisation initiale, dans le pire des cas, les fonds sont libérés dans les trois jours suivant l'expiration de votre autorisation. Vous devez veiller à ne pas avoir le pire des cas d'autorisation, car cela empêche l'utilisation des fonds autorisés jusqu'à leur liquidation, ce qui peut occasionnellement entraîner des problèmes chez les clients. Si le système échoue lors de la capture finale et que vous ne pouvez pas enregistrer l'état, vous pouvez simplement relancer la capture ultérieurement, auquel cas le résultat sera soit un succès, soit un message de la passerelle indiquant que la capture a déjà eu lieu. mettre à jour le statut de paiement de votre système.

+0

merci pour votre commentaire mon problème est de résoudre –