Wenn eine Bestellung plötzlich doppelt ausgelöst wird

15.5.2025 - David Gunzinger

Hauptbild

Stellen Sie sich vor, ein Kunde bestellt Waren im Wert von 100.000 CHF – und erhält diese Lieferung zweimal. Ein solcher Vorfall bedeutet nicht nur Verwirrung und Rückabwicklung, sondern auch Zeitaufwand und finanzielle Verluste. Der Kunde reklamiert, der Support muss reagieren, die Buchhaltung wird belastet. Solche Doppelbuchungen sind keine Seltenheit: Nach unseren Erfahrungen treten sie bei mobilen Bestellungen in bis zu 3 % der Fälle auf. Und meist ist nicht der Benutzer schuld – sondern technische Schwächen in der Kommunikation zwischen Anwendung und Backend-Systemen. In diesem Artikel erfahren Sie, warum solche Fehler auftreten und mit welcher einfachen Massnahme man sie zuverlässig verhindern kann.

Wo das Problem entsteht

Typischerweise läuft eine Bestellung so ab: Der Kunde löst eine Bestellung über eine App oder Webseite aus. Diese sendet eine Anfrage an das Backend-System. Das Backend speichert die Bestellung und schickt eine Bestätigung zurück.

normal_transaction

Allerdings kann es in dieser Kommunikation zu Fehlern kommen, wie etwa einem kurzen Verbindungsunterbruch, wodurch die Antwort vom Backend verloren geht. Jeder von uns kennt das, etwa wenn wir mit unseren Smartphones den Aufzug betreten oder in die Tiefgarage fahren.

Dieser Fehler kann bei der Anfrage an das Backend sowie bei der Antwort des Backends an die Anwendung auftreten.

Tritt der Fehler bei der Anfrage an das Backend auf, so gibt es zwar keine Bestellung, aber sowohl das Backend als auch die Applikation befinden sich in einem konsistenten Zustand.

Tritt der Fehler jedoch bei der Antwort des Backends auf, so ist der Applikation nicht bekannt, dass die Anfrage bereits gespeichert und die Bestellung ausgelöst wurde.

broken_transaction

Die Applikation kann nun auf zwei Arten reagieren: Sie schickt, ohne den Benutzer darüber in Kenntnis zu setzen, die Bestellung nochmals an das Backend. Oder sie präsentiert dem Nutzer eine Fehlermeldung und fragt, ob dieser die Bestellung nochmals senden möchte. Wenn der Nutzer nun den Fehler sieht, wird er einen neuen Versuch starten, wobei wir wieder bei der ersten Variante sind.

Nun sind im Backend zwei identische Bestellungen erfasst, was erhebliche Folgen hat: Der Kunde erhält die Lieferung doppelt, muss sie reklamieren und eventuell retournieren. Das Unternehmen hat zusätzlichen Aufwand in den Bereichen Support, Logistik und Buchhaltung – ganz zu schweigen von möglichen Imageschäden.

broken_with_resend_transaction

Lösungsmöglichkeiten

Duplikat-Erkennung

Man könnte versuchen, jede neue Bestellung mit den bestehenden abzugleichen. Doch dieser Ansatz ist technisch komplex, da sich Details wie Zeitstempel oder Artikelreihenfolgen unterscheiden können. Eine zuverlässige Erkennung ist dadurch schwierig. In der Praxis zeigt sich, dass diese Methode in komplexen Systemen oft fehleranfällig ist.

Idempotenz-Token

Eine andere Option besteht darin, einen Idempotenz-Token zu verwenden. Unter Idempotenz versteht man, dass eine Anfrage mehrmals gesendet werden kann, ohne dass sich das Ergebnis ändert.

Bei der Bestellung könnte dies so aussehen: Der Kunde löst eine Bestellung aus und die Applikation generiert einen Token. Dieser Token wird zusammen mit der Bestellung an das Backend gesendet. Das Backend speichert den Token zusammen mit der Bestellung.

Geht nun die Antwort verloren, sendet die Applikation die Bestellung erneut mit dem gleichen Token. Das Backend prüft, ob der Token bereits verwendet wurde. Wenn ja, wird die ursprüngliche Bestellung zurückgegeben. Wenn nicht, wird eine neue Bestellung erstellt.

Diese methode ist einfach zu implementieren und funktioniert zuverlässig. Sie verhindert doppelte Bestellungen, ohne dass eine komplexe Logik zur Duplikat-Erkennung erforderlich ist.

broken_with_token_transaction

Fazit

Um doppelte Bestellungen und ähnliche Probleme zu vermeiden, ist die Verwendung von Idempotenz-Token eine bewährte Methode. Diese Technik ist einfach zu implementieren und bietet eine zuverlässige Lösung für ein häufiges Problem in der Softwareentwicklung.

Sollten Sie Fragen zu diesem Thema haben oder Unterstützung bei der Implementierung benötigen, zögern Sie nicht, uns zu kontaktieren. Wir helfen Ihnen gerne weiter.

Kontakt

Smoca AG
Technoparkstrasse 2
Gebäude A, 3. Stock
8406 Winterthur

Jobs

  • Momentan sind keine Stellenangebote verfügbar

Letzter Blogeintrag

Wenn eine Bestellung plötzlich doppelt ausgelöst wirdDavid Gunzinger - 15.5.2025

Stellen Sie sich vor, ein Kunde bestellt Waren im Wert von 100.000 CHF – und erhält diese Lieferung zweimal. Ein solcher Vorfall bedeutet nicht nur Verwirrung und Rückabwicklung, sondern auch Zeitaufwand und finanzielle Verluste. Der Kunde reklamiert, der Support muss reagieren, die Buchhaltung wird belastet. Solche Doppelbuchungen sind keine Seltenheit: Nach unseren Erfahrungen treten sie bei mobilen Bestellungen in bis zu 3 % der Fälle auf. Und meist ist nicht der Benutzer mehr ...

  • Smoca Facebook
  • Smoca Twitter
  • Smoca LinkedIn
  • Smoca RSS Feed