Muster für zahlungsaufforderung

Durch Information des Benutzers, wenn seine Zahlung abgebrochen wurde. Die meisten Websites werden Zahlungen nicht selbst abwickeln (etwas, das viel Sorgfalt und PCI DSS-Compliance erfordern würde), sondern verwenden ein Drittanbieter Payment Gateway (PG) oder Payment Service Provider (PSP). Eine Reihe von Zahlungsgateways hat bereits spezifische Unterstützung für die Zahlungsanforderungs-API eingeführt. Sie können die Zahlungsanforderung über ihr eigenes Skript initiieren, das Sie auf Ihrer Seite einfügen, um sicherzustellen, dass die Daten sicher gesendet werden und Sie sie nicht selbst verarbeiten müssen. Sie können auch eine iFrame- oder Umleitungslösung anbieten. Der beste Weg, um fortzufahren, ist, mit Ihrem Payment Gateway zu überprüfen, wie sie die Einbeziehung von Zahlungsanforderungen empfehlen. Um eine Zahlung anzufordern, erstellt eine Webseite ein PaymentRequest-Objekt als Reaktion auf eine Benutzeraktion, die eine Zahlung initiiert, z. B. durch Klicken auf die Schaltfläche “Kaufen”. Mit der PaymentRequest kann die Webseite Informationen mit dem Benutzer-Agenten austauschen, während der Benutzer Eingaben zum Abschließen der Transaktion bereitstellt.

Wenn der Benutzer auf “PAY” drückt, wird die Zahlungsaufforderung gelöst und Sie erhalten eine ZahlungResponseas die Zahlungsinformationen. Wenn der Benutzer sich für eine Basiskarte als Zahlungsmethode entscheidet, würde es wie folgt aussehen: Wenn wir die Benutzeroberfläche anzeigen möchten (z.B. wenn der Benutzer auf “Jetzt kaufen” klickt), können wir show() aufrufen. Dann behandeln wir die Daten, die der Benutzer zur Verfügung gestellt hat, wenn das Versprechen gelöst wird: Aus dem obigen Szenario erkannte ich, dass ich ein geeignetes Designmuster brauchte, um es anzugehen. Und hier kommt – das Strategiemuster. Hier wird die Logik aus einer komplexen Klasse in einfachere Komponenten extrahiert, so dass sie durch einfachere Methoden ersetzt werden können — Lassen Sie mich dies aufschlüsseln; In den obigen Beispielen rufen wir event.updateWith() direkt mit unseren zahlungsdetails an, die die Gesamt- und Versandoptionen enthalten. Wenn wir dies tun, wird der Benutzer keinen Ladespinner sehen und kann mit dem Rest des Kassenflusses fortfahren. Wenn Sie die Zahlung verarbeiten möchten, während die Benutzeroberfläche für Zahlungsanfragen einen Spinner anzeigt, verzögern Sie den Abschluss des Anrufs().

Nehmen wir an, wir haben eine Methode namens validatePaymentWithBackend(), die die Details mit unserem Backend überprüft und ein Versprechen an ein boolesches zurückgibt (true wenn die Zahlung erfolgreich war, andernfalls falsch). Wir würden den Spinner hochhalten und complete() aufrufen, nachdem diese Methode aufgelöst wurde, wie so: Der Punkt hier ist, dass die meisten dieser Operationen von PSPs Client-Seite SDK abgewickelt werden, was es dem Händler ermöglicht, Zahlungen zu verarbeiten, ohne eine einzelne Ziffer der Kreditkartennummer eines Benutzers zu berühren. Es gibt einige kleinere Edge-Fälle mit dem Argument paymentDetails, in denen Sie die Benutzeroberfläche betonen und das Objekt falsch definieren können, was zu einem Fehler führt.