Typische Probleme beim Payment in Onlineshops.
Payment ist einer der wichtigsten Faktoren im E-Commerce – ohne Bezahlung kein Kauf und kein Umsatz. Auf dem Markt tummeln sich diverse größtenteils internationale Anbieter, über die man diverse Zahlarten wie Kreditkarte, Rechnungskauf, Paypal, Überweisungen, Ideal, Alipay und eine endlose Liste weiterer in einen Onlineshop integrieren kann.
FATCHIP hat im Laufe der letzten Jahre Payment-Lösungen in Onlineshops (z.B. OXID eShop, Magento, Shopware) und oft in weiterverarbeitende ERP Systeme u.a. für folgende Payment-Anbieter implementiert: Payone, Computop, Paypal, Amazon Pay, Klarna, Sofortüberweisung, Paynova, Barzahlen.de, Ratepay, Mollie, Paymorrow, Heidelpay.
Anbindungen von uns werden in über 500 Shops genutzt.
Bezahlung ohne Bestellung ist ein sehr lästiges Problem, welches immer wieder zu erhöhtem Aufkommen im Kundenservice, nicht gelieferten Bestellungen (mit entsprechend verärgerten Kunden) oder gar Ärger mit dem Finanzamt führt.
Das Szenario stellt sich dem Shopbetreiber so dar, dass es, wie der Titel schon sagt, dazu kommt, dass wir z.B. einen Kreditkarten-Zahlungseingang haben, aber keine oder nur eine unvollständige dazugehörige Bestellung im Shop- oder ERP-System.
Der Kundenservice muss aufwändig und manuell eine Bestellung anlegen, Rücksprache mit dem Kunden halten oder das Geld zurückerstatten.
Für dieses Fehlerbild ist die häufigste Ursache ein unvollständiger Redirect des Kunden vom Zahlungsanbieter zurück in den Shop, sodass die Bestellung nach erfolgreicher Zahlung nicht korrekt angelegt oder finalisiert wird.
Das kann passieren, wenn der Kunde beim Seitenaufruf die Netzverbindung verliert, wenn er mit dem Zug in einen Tunnel fährt, wenn der Shopaufruf fehlschlägt zum Beispiel durch einen in dem Moment überlasteten Webserver oder beispielsweise weil ein Browser Plugin Session-Daten oder Request-Parameter verändert. Oft ist die genaue Ursache nicht eindeutig zu ermitteln oder es ist nicht bei jedem Fehler die gleiche.
Transaktionssicherheit ist hier das Stichwort.
Ein Lösungsansatz, der dieses Problem ein für alle mal aus der Welt schafft, ist es wie folgt vorzugehen:
- Die komplette Bestellung mit allen Produkten, Preisen und Kundendaten muss bereits vor Durchführung des Zahlungsvorgangs im Shop (meistens in der Datenbank) gespeichert werden. Dabei muss sie aber als unvollständig markiert werden oder erst einmal in separaten Datenbank-Tabellen abgelegt werden, sodass keine weiteren Schritte, etwa die Übergabe an das ERP-System, erfolgen.
- Nach erfolgreicher Durchführung der Zahlung wird die bereits gesicherte Bestellung nur noch als abgeschlossen markiert und alle Folgeprozesse können stattfinden.
- Für den Fall, dass der Redirect in den Shop nicht korrekt funktioniert hat (oder auch der Kunde die Bestellung einfach durch Schließen des Browsers abgebrochen hat), verbleibt die Bestellung also unvollständig in der Datenbank.
- Nun entwickeln wir ein Cronjob-gesteuertes Script, welches regelmäßig an der API des Payment-Anbieters nach zu den unvollständigen Bestellungen gehörigen Zahlungen sucht. Findet das Script eine passende, vollständige Zahlung, wird die Bestellung als abgeschlossen markiert. Wird keine Zahlung zu der Order gefunden (Kunde hat abgebrochen), wird die Bestellung gelöscht. Dabei sollte ein Zeitraum von mindestens einer Stunde gewartet werden, bevor Bestellungen gelöscht werden.