PayPal IPN identifiant unique

J'ai toujours supposé que txn_id envoyé avec IPN message est unique. PayPal lignes directrices semblent appuyer cette idée - https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_admin_IPNIntro

Éviter de dupliquer des IPN messages. Vérifiez que vous n'avez pas déjà traité la transaction identifiée par l'ID de transaction retourné dans l'IPN message. Vous pourriez avoir besoin de stocker des Identifiants de transaction retourné par IPN messages dans un fichier ou une base de données de sorte que vous pouvez vérifier les doublons. Si l'ID de transaction envoyé par PayPal est un doublon, vous ne devriez pas traiter de nouveau.

Cependant j'ai trouvé que PayPal eCheck paiement IPN est envoyé deux fois avec le même IDENTIFIANT de transaction. Une fois en cours de paiement initial avec payment_status comme "en Attente" et de nouveau après quelques jours, quand eCheck est effectivement processus avec payment_status comme "Terminée".

Je veux stocker à la fois les opérations, mais toujours tiens à éviter de stocker des doublons. Il est un autre domaine dans IPN appelé ipn_track_id et c'est différent pour ces deux opérations, mais je ne peux pas trouver de la documentation pour elle, sauf que cette vague description:

Interne; pour une utilisation uniquement par les MTS et DTS

Quelqu'un d'autre est à l'aide de ipn_track_id pour identifier de manière unique IPN messages?

  • logiquement, elle est une transaction où l'identique txn_id. L'ajout de la payment_status à l' (primaire) clé permettrait de résoudre, n'est-ce pas? Le doc devrait probablement lire: un txn_id pour le même statut ne doit pas être traité à nouveau.
  • Ce qui est logique, merci pour la suggestion.
  • Intéressant de noter que vous ne devriez processus de la transaction où payment_status="Achevé", selon PayPals IPN lignes directrices.
  • Je suis plutôt payment_status="Achevé" quoi ma BIN btn est supprimé et la transaction entre dans ma DB. Espérons que cela soit une bonne méthode.
  • J'ai le sentiment de l'unicité de la txn_id devrait être vérifiée que lorsque payment_status='Terminé'. Parce que l'absence de documentation mentionnés à l'unicité de la combinaison de payment_status et txn_id, votre programme peut se briser si les deux " en suspens avec les mêmes txn_id frapper votre db. Comme je l'ai dit, c'est mon instinct, Paypal devrait le rendre plus clair dans les documentations.
InformationsquelleAutor arnaslu | 2012-02-11