2 Stimmen

Wie kann ich das Problem lösen, dass ich von dem von meiner Website verwendeten System eines Drittanbieters nicht über erfolgreiche Zahlungen informiert werde?

Ich habe eine abonnementbasierte Website, die mit einem System eines Drittanbieters interagiert, um die Zahlungen abzuwickeln. Die Schritte zur Bearbeitung einer neuen Abonnentenregistrierung sind wie folgt:

  1. Der Abonnent gibt seine Daten in das Anmeldeformular ein und klickt auf die Schaltfläche "Absenden".
  2. Unter der Voraussetzung, dass die angegebenen Daten gültig sind, wird ein neuer Datensatz in der Datenbank angelegt, um diese Daten zu speichern.
  3. Der Abonnent wird dann auf die Website des Drittanbietersystems (ähnlich wie bei Paypal) weitergeleitet, um die Zahlung abzuwickeln.
  4. Sobald die Zahlung erfolgreich war, leitet die Website des Drittanbieters den Abonnenten wieder auf unsere Website zurück.
  5. Zu diesem Zeitpunkt weiß ich, dass die Zahlung erfolgreich war, also wird der Datensatz in der Datenbank aktualisiert, um anzuzeigen, dass die Zahlung erfolgreich durchgeführt wurde.

Ein Problem, das häufig auftritt, ist, dass ein Abonnent, der zwar bezahlt, aber den Vorgang nicht korrekt abschließt (z. B. den Zurück-Browser benutzt oder das Fenster schließt), seinen Datensatz in der Datenbank nicht aktualisiert bekommt. Dementsprechend weiß ich nicht, ob er/sie bezahlt hat, wenn ich mir den Datensatz nur ansehe, und muss auf den Bericht des Drittanbietersystems warten, um dies herauszufinden.

Wie kann man dieses Problem lösen?

PS. Einer der Hauptgründe für die Speicherung ihrer Daten in der Datenbank vor Abschluss des Zahlungsvorgangs ist, dass sie die Zahlung abschließen können, ohne ihre Daten erneut eingeben zu müssen. Zum Beispiel, wenn ihre Kreditkarten von einem Drittanbietersystem abgelehnt wurden und sie dies mit ihrem Finanzinstitut klären müssen, was eine Weile dauern kann.

3voto

Jason Williams Punkte 55292

Das Zahlungssystem des Drittanbieters sollte Sie über die erfolgreiche Transaktion informieren, unabhängig davon, was der Nutzer tut.

Bei PayPal zum Beispiel wird eine IPN (Instant Payment Notification) als POST-Daten an eine von Ihnen angegebene URL an Ihren Server gesendet. Ihr Server prüft dann mit Paypal, ob die Transaktion echt ist, und wenn ja, aktualisiert er den Datenbankeintrag, um anzuzeigen, dass das Abonnement gültig ist. Zu einem späteren Zeitpunkt kann PayPal oder auch nicht und leiten den Nutzer dann zurück auf Ihre Website. (Das "darf nicht" kann z. B. vorkommen, wenn der Nutzer seinen Browser schließt, auf "Zurück" klickt oder zu einer neuen URL springt)

Beachten Sie, dass diese "Konversation" zwischen Paypal und Ihrem Server unabhängig von der Sitzung des Benutzers ist - es handelt sich um eine "private Konversation" zwischen Ihnen und PayPal über die Transaktion des Benutzers.

Natürlich kann es zu Kommunikationsausfällen und Serverfehlern kommen. Wenn Paypal also die Validierungsanforderung von Ihrem Server nicht sofort erhält, sendet es in regelmäßigen Abständen Wiederholungsversuche an Ihren Server, um sicherzustellen, dass die Transaktion schließlich abgeschlossen wird.

Wenn Ihr Zahlungssystem nicht zumindest über einige grundlegende Mechanismen zur Gewährleistung der Zuverlässigkeit von Transaktionen verfügt, sollten Sie einen anderen Anbieter wählen. Die Chancen stehen gut, dass dies der Fall ist, aber Sie müssen die Dinge auf Ihrem Server richtig implementieren, um sicher zu sein, dass das System richtig funktioniert.

P.S. Es ist ganz normal, dass ein Benutzer sich anmelden (und somit in der Datenbank registriert sein) muss, bevor er eine finanzielle Transaktion vornimmt. Sie müssen alle relevanten Informationen sammeln, bevor der Kunde einen Kauf tätigt, denn nach dem Kauf können Sie nicht garantieren, dass er sich noch einmal an Sie wendet, um weitere Informationen zu liefern.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X