Stripe webhook: επαλήθευση και ενημέρωση παραγγελιών

Η λήψη ενός Stripe webhook δεν αρκεί για να θεωρηθεί μια παραγγελία πληρωμένη. Ο διακομιστής πρέπει να επαληθεύσει την προέλευση, να εντοπίσει τη σωστή πράξη και να εφαρμόσει την αλλαγή χωρίς διπλή εκτέλεση. Η παρακάτω διαδικασία βοηθά στην οργάνωση ενός χειριστή που μπορεί να ανακάμψει από καθυστερήσεις και επαναλήψεις.

Συντακτική ομάδα OrsunPayΔημοσιεύτηκε
Εικονογράφηση άρθρου: Stripe webhook: επαλήθευση και ενημέρωση παραγγελιών

Ορίστε τη σημασία κάθε συμβάντος

Επιλέξτε μόνο συμβάντα που αντιστοιχούν σε συγκεκριμένες αποφάσεις της εφαρμογής. Η ενημέρωση μιας πληρωμής και η παράδοση μιας υπηρεσίας είναι διαφορετικές εργασίες. Κρατήστε εσωτερικά αναγνωριστικά και αντιστοίχιση με το αντικείμενο του παρόχου. Πριν αποδεχτείτε μια επιβεβαίωση, ελέγξτε ότι αφορά τον αναμενόμενο λογαριασμό, το σωστό ποσό και το νόμισμα της παραγγελίας.

Για παράδειγμα, σε μια αγορά ψηφιακού μαθήματος η οικονομική επιβεβαίωση επιτρέπει την έναρξη της πρόσβασης. Αν η υπηρεσία πρόσβασης δεν λειτουργεί, η πληρωμή δεν γίνεται ξανά εκκρεμής. Η εφαρμογή πρέπει να δείχνει ότι απομένει η παράδοση. Έτσι η υποστήριξη μπορεί να διορθώσει το σωστό στάδιο αντί να ζητήσει δεύτερη πληρωμή από τον πελάτη.

Webhooks πληρωμών

Επαληθεύστε με τους κανόνες της πηγής

Ακολουθήστε την επίσημη τεκμηρίωση Stripe για το σώμα της αίτησης, την υπογραφή και το μυστικό της συγκεκριμένης διεύθυνσης λήψης. Μη μετασχηματίζετε το περιεχόμενο πριν από τον έλεγχο με τρόπο που εμποδίζει την επαλήθευση. Το μυστικό πρέπει να μένει εκτός προγράμματος περιήγησης, δημόσιου αποθετηρίου και συνηθισμένων αρχείων καταγραφής.

Η τεκμηρίωση Adyen περιγράφει τους δικούς της μηχανισμούς. Τα webhooks OrsunPay έχουν επίσης ξεχωριστό πρωτόκολλο με HMAC. Αν λαμβάνετε μηνύματα από περισσότερες πηγές, διαχωρίστε καθαρά τις ρυθμίσεις και τους ελέγχους. Ένα μήνυμα που μοιάζει με αναμενόμενο συμβάν δεν είναι αξιόπιστο πριν ελεγχθεί σύμφωνα με την πραγματική πηγή του και το σωστό περιβάλλον λειτουργίας.

Εργαλεία ανάπτυξης

Αποθηκεύστε πριν από τις βαριές εργασίες

Μετά την επαλήθευση, δημιουργήστε ανθεκτικό αρχείο λήψης και προγραμματίστε τις εργασίες που μπορεί να καθυστερήσουν. Η αποστολή πολλών μηνυμάτων ή η δημιουργία εγγράφου δεν πρέπει να προκαλεί απώλεια της αρχικής επιβεβαίωσης. Η θετική απάντηση προς την πηγή πρέπει να σημαίνει ότι το συμβάν έχει πραγματικά παραληφθεί με δυνατότητα ανάκτησης.

Διακρίνετε τις καταστάσεις λήφθηκε, εφαρμόστηκε και εκτελέστηκε. Η διαφορά επιτρέπει να εντοπιστεί μια αποτυχία βάσης δεδομένων ή μια αποτυχία παράδοσης χωρίς σύγχυση. Κρατήστε αναγνωριστικό, πηγή, χρόνους και ασφαλή αιτία σφάλματος. Μην αντιγράφετε ολόκληρο το περιεχόμενο σε κάθε σύστημα παρακολούθησης όταν τα προσωπικά δεδομένα δεν είναι απαραίτητα για τη συγκεκριμένη εργασία.

Προστατέψτε από διπλή εφαρμογή

Η επαναλαμβανόμενη παράδοση πρέπει να θεωρείται κανονικό ενδεχόμενο. Καταγράψτε τα επεξεργασμένα αναγνωριστικά και προστατέψτε τη μεταβολή κατάστασης από ταυτόχρονη εφαρμογή. Ένας απλός έλεγχος πριν από τη γραφή μπορεί να αποτύχει αν δύο διεργασίες ενεργήσουν ταυτόχρονα. Χρειάζεται συνέπεια στο αποθηκευτικό σύστημα όπου καταγράφεται το αποτέλεσμα.

Εξετάστε και τη χρονική σειρά. Το τελευταίο μήνυμα που έφτασε μπορεί να περιγράφει παλαιότερη κατάσταση. Μην αφήνετε ένα καθυστερημένο συμβάν να αντικαταστήσει αυτόματα οριστικό αποτέλεσμα. Αν υπάρχει αντίφαση, ελέγξτε το εξουσιοδοτημένο αντικείμενο ή αναθέστε διερεύνηση. Η ιστορία πρέπει να εξηγεί την απόφαση, όχι να εξαφανίζεται με κάθε νέα ενημέρωση της ίδιας εγγραφής.

Ελέγξτε συγκεκριμένες αποτυχίες

Ορίστε για κάθε δοκιμή την αναμενόμενη κατάσταση πληρωμής και παραγγελίας. Μια δοκιμή που ελέγχει μόνο τον κωδικό HTTP δεν δείχνει αν δημιουργήθηκαν δύο προσβάσεις. Δοκιμάστε διακοπή αμέσως μετά την αποθήκευση και επιβεβαιώστε ότι η επεξεργασία μπορεί να συνεχιστεί χωρίς δεύτερο οικονομικό αποτέλεσμα ή διπλή εμπορική εκτέλεση.

  • Απορρίψτε λανθασμένη υπογραφή χωρίς αλλαγή παραγγελίας.
  • Εφαρμόστε το ίδιο συμβάν δύο φορές με ένα μόνο αποτέλεσμα.
  • Ελέγξτε ανάκτηση μετά από προσωρινή αστοχία εξάρτησης.
  • Παραλάβετε παλιό συμβάν μετά από οριστική επιβεβαίωση.

Ορίστε υπεύθυνο για τις εκκρεμότητες

Η ομάδα χρειάζεται λίστα συμβάντων ή εργασιών που δεν ολοκληρώθηκαν, με αιτία και επόμενο βήμα. Η αναζήτηση πρέπει να γίνεται με εσωτερική αναφορά, χωρίς απαίτηση για μυστικά του πελάτη. Καταγράψτε ποιος επιτρέπεται να επανεκκινήσει μια εργασία και πώς επιβεβαιώνει ότι δεν έχει ήδη εκτελεστεί.

Οι επαναλήψεις OrsunPay είναι περιορισμένες, άρα μια μεγάλη διακοπή μπορεί να απαιτεί συμφωνία και ελεγχόμενη αποκατάσταση. Μην σχεδιάζετε με την υπόθεση ότι τα μηνύματα θα επανέρχονται για πάντα. Η σωστή λειτουργία αφήνει μια σαφή αλυσίδα από την έγκυρη επιβεβαίωση μέχρι την ολοκληρωμένη παραγγελία, ακόμη και όταν κάποιο ενδιάμεσο σύστημα χρειάστηκε ανθρώπινη παρέμβαση.

Εξερευνήστε την OrsunPay

Μιλήστε με την ομάδα μας

Πηγές

Διαβάστε επίσης

Εικονογράφηση άρθρου: Συμφωνία πληρωμών: καθημερινός έλεγχος συναλλαγών και παραγγελιών

Συμφωνία πληρωμών: καθημερινός έλεγχος συναλλαγών και παραγγελιών

Η συμφωνία πληρωμών ξεκινά από μια απλή ερώτηση: μπορεί η ομάδα να εξηγήσει τη σχέση κάθε παραγγελίας με τις αντίστοιχες προσπάθειες και το επιβεβαιωμένο αποτέλεσμα; Η καθημερινή εργασία δεν χρειάζ.

Διαβάστε τον οδηγό