Danil Sidorov
RU EN DE
Telegram

Online-Buchhandlung mit Kartenzahlung

Ein Shop mit REST-API und Vue: durchsuchbarer Katalog, Versand und Steuer je Land, Zahlung, Storno und Erstattung

Case-Study-Titelbild „Online-Buchhandlung mit Kartenzahlung“

Aufgabe

Eine kleine Buchhandlung wollte online verkaufen. Sie darf nie mehr Exemplare verkaufen, als sie hat, auch wenn zwei Kunden gleichzeitig bestellen. Alte Bestellungen sollen ihre Preise nach Katalog- und Kursänderungen behalten, und Kunden aus verschiedenen Ländern sollen ihre Sprache und Währung sehen.

Lösung

Alle Geschäftsregeln liegen in einer Django-REST-API, die Vue-App ruft sie nur auf. Eine Bestellzeile speichert Titel und Preis zum Kaufzeitpunkt in der gewählten Währung. Bezahlt ist eine Bestellung erst nach einem signierten Stripe-Webhook, jede Erstattung ist ein eigener Datensatz mit Idempotenzschlüssel, deshalb wird nie doppelt erstattet.

Umgesetzte Aufgaben

  • Katalog mit Volltextsuche gebaut, die ein Buch auch mit Tippfehler findet
  • Überverkauf ausgeschlossen: der Checkout sperrt die Buchzeilen in einer Transaktion
  • Versand nach Gewicht und Zone und Steuer nach Land, Bundesstaat oder PLZ berechnet
  • Kartenzahlung über Stripe und einen Demo-Anbieter mit Testkarten angebunden
  • Storno mit Erstattung gebaut, auch teilweise
  • Preise in Dollar, Euro und Rubel gezeigt, Währungen werden im Admin ergänzt
  • Oberfläche und Katalog ins Russische, Englische, Französische und Deutsche übersetzt
  • Kursupdates und erneute Erstattungsversuche in einen eigenen Scheduler verlegt

Ergebnis

Der Shop nimmt Bestellungen vom Handy in vier Sprachen und drei Währungen an, verkauft nie zu viel und erstattet Stornos selbst. Der Code ist offen auf GitHub, der Shop startet mit einem einzigen docker compose up.

Technologien

PythonDjango REST FrameworkVue 3TypeScriptPostgreSQLStripeDocker

Quellen

Die Links belegen die Zahlen in diesem Projekt

Erzählen Sie von Ihrer Aufgabe

Telegram