Ich verwende Stripe, damit mein Kunde eine Kreditkarte speichern und Rechnungen bezahlen kann (die eine eindeutige ID haben). Bei der Bezahlung verwende ich ein Formular, um eine POST-Anfrage mit der Karten-ID (bereitgestellt von stripe) an meinen Server zu senden, und der Controller berechnet diese. Dann markierte ich die Rechnung, die auf meiner Seite bezahlt wurde.Wie kann ich die doppelte Belastung mit Stripe verhindern?
Stellt sich heraus, dass, wenn ich den Absendungsschaltfläche meines Formulars schnell genug doppelklicke, ich zwei POST-Anforderung senden und die Karten zweimal aufgeladen werden, da, wenn die zweite POST-Anforderung auf meinem Server ankommt, die POST-Anforderung von meinem Server an Stripe API (vom ersten Klick an) ist noch nicht beendet, daher wurde die Rechnung noch nicht als bezahlt markiert.
Ich überlege, die Schaltfläche zum Senden von Formularen nach dem ersten Klick zu deaktivieren, aber ich denke, dass es einen saubereren Weg geben kann.
Gibt es auf der Seite von Stripe doppelte Gebühren (vielleicht mit meiner Rechnungs-ID)? Wenn nicht, was wäre die beste Back-End-Methode, um dies auf meiner Seite zu tun?
Geben Sie eine eindeutige Transaktions-ID in ein verstecktes Feld im Formular ein (es muss nur ein Hash der Benutzer-ID und des Zeitstempels sein) und der Server speichert die Transaktions-IDs, die an Stripe und gesendet wurden sich weigern, eine doppelte Einreichung zu senden. –