Arbeiten · Integration und Abrechnung

Cashback-Plattform für Dondino

Dondino verspricht einen einfachen Vorgang: über die Plattform einkaufen, einen Teil zurückbekommen. Dahinter liegen Transaktionsmeldungen aus einer Reihe von Affiliate-Netzwerken, jede in eigenem Format und eigenem Statusmodell, die zu einem Guthaben werden müssen, das ein Mitglied nachvollziehen und ein Betreiber verantworten kann. Batunet übernahm 2015 die Entwicklung und Betreuung der Plattform.

Einordnung

Der Fall in einer Minute.

Kunde
Dondino — deutschsprachige Bonus- und Cashback-Plattform mit Mitgliederkonten und Auszahlungen an Mitglieder in Deutschland, Österreich und der Schweiz.
Rolle
Batunet übernahm 2015 die Entwicklung und Betreuung der Plattform.
Geschäftsmodell
Cashback über Partnerprogramme, vergütete Werbemails und ein zweistufiges Werbeprogramm auf einem gemeinsamen Guthabenkonto.
Externe Anbindung
Historisch über zehn Affiliate-Netzwerke, angebunden über Dateiabruf, REST- und SOAP-Schnittstellen in jeweils eigenen Formaten.
Kern der Verarbeitung
Je Netzwerk ein eigener Importweg, der gemeldete Transaktionen in ein einheitliches internes Transaktionsmodell überführt.
Abrechnung
Aufteilung der gemeldeten Provision in Mitglieder- und Betreiberanteil. Kontostände mit nachvollziehbarer Buchungshistorie.
Auszahlung
Eigener Vorgang mit eigenem Status: Auszahlungen haben Voraussetzungen, werden geprüft und freigegeben oder mit Begründung storniert.
Missbrauchsabwehr
Sperrfristen gegen wiederholte Vergütung, Erkennung automatisierter Klicks, Auffinden von Mehrfachkonten, Sperrlisten und stufenweise Sperren bei auffälligen Anmeldeversuchen.
Verarbeitungsmodell
Import, Zuordnung und Prüfläufe sind als wiederkehrende Stapelverarbeitung angelegt, gesteuert über eine Job-Tabelle mit Intervallen und Zeitbudget je Lauf.
Technische Basis
PHP 8 und Laravel 8, verbunden mit einem über Jahre gewachsenen PHP-Bestand, dessen Importe und Prüfläufe schrittweise in die Datenbankschicht von Laravel überführt wurden.
Ausgangslage

Ein Versprechen, das sich einfach anhört.

Cashback ist ein Versprechen mit einem kurzen Wortlaut: Wer über die Plattform einkauft, bekommt einen Teil des Kaufpreises zurück. Der Satz braucht keine Erklärung. Das System dahinter besteht fast vollständig aus dem, was der Satz verschweigt.

Denn der Kauf findet nicht auf der Plattform statt. Er findet beim Händler statt, vermittelt über ein Affiliate-Netzwerk, das den Vorgang später meldet — in seinem Format, zu seinem Zeitpunkt, mit seinem eigenen Statusmodell. Zwischen dem Klick eines Mitglieds und der Gutschrift auf seinem Konto liegen ein fremdes System, eine Wartezeit von Wochen und Zustände, die sich in dieser Zeit noch ändern können.

Dondino verbindet dabei mehrere Arten, Guthaben zu verdienen: Cashback über Partnerprogramme, vergütete Klicks auf Werbemails und Anteile an den Gutschriften geworbener Mitglieder. Mitglieder können ihr Guthaben außerdem selbst für Mail-Werbung einsetzen, die vor dem Versand freigegeben wird.

Batunet übernahm 2015 die Entwicklung und Betreuung der Plattform. Die Aufgabe war nicht, eine Oberfläche für Cashback zu bauen, sondern die Abrechnung dahinter belastbar zu machen: aus den Meldungen vieler fremder Systeme ein Guthabenmodell, das ein Mitglied nachvollziehen und ein Betreiber verantworten kann.

Integration

Zehn Anbieter, zehn Vorstellungen davon, wie Daten aussehen.

Ein Affiliate-Netzwerk anzubinden klingt nach einer Schnittstelle. Historisch über zehn Netzwerke anzubinden ist etwas anderes: Es sind über zehn Vorstellungen davon, wie eine Transaktion auszusehen hat.

Die Unterschiede liegen dabei nicht im Groben, sondern im Kleinen — und genau dort entstehen Abrechnungsfehler. Der eine Anbieter stellt Dateien zum Abruf bereit, der nächste eine REST-Ressource, der dritte einen SOAP-Dienst. Der eine kennt wenige Status, der andere mehr, und gleich klingende Bezeichnungen bedeuten nicht dasselbe. Der eine gibt die Kennung zurück, mit der ein Mitglied losgeschickt wurde, der andere reicht sie nur eingeschränkt durch.

Die erste Entwurfsentscheidung war deshalb, keine dieser Formen weiter ins System zu lassen. Jede Anbindung ist ein eigener Importweg mit einer einzigen Aufgabe: aus dem, was ein Netzwerk liefert, das interne Transaktionsmodell zu erzeugen. Ändert ein Netzwerk den Aufbau seiner Datei, erkennt der Import das und protokolliert es, statt stillschweigend falsche Werte zu übernehmen.

Transportweg
Dateiabruf, REST-Schnittstelle, SOAP-Dienst
Datenformat
CSV, XML, Anbietereigene Feldnamen und Spaltenordnungen
Statusmodell
Unterschiedliche Statusbezeichnungen je Anbieter, Unterschiedliche Anzahl an Zuständen, Normalisierung auf ein internes Modell
Kennungsübergabe
Eigene Zuordnungskennung je Vorgang, Rückgabe anbieterabhängig vollständig oder eingeschränkt, Eigener Weg im Import, wo die Kennung nicht durchgereicht wird
Zuordnung

Der Weg einer Transaktion.

Die zentrale Frage dieses Systems lautet nicht, ob eine Transaktion angekommen ist, sondern zu wem sie gehört. Das Netzwerk kennt das Mitglied nicht, und die Plattform kennt den Kauf nicht. Verbunden werden beide Seiten allein über eine Kennung, die die Plattform beim Weiterleiten vergibt und das Netzwerk später zurückmeldet.

Diese Kennung ist deshalb kein technisches Detail, sondern die Voraussetzung jeder Gutschrift. Wo ein Anbieter sie nicht vollständig durchreicht, ist das kein Randfall, den man später löst — es ist ein eigener Weg im Import, der von Anfang an vorgesehen sein muss.

Cashback-Plattform für Dondino: Schematische Darstellung der Transaktionsverarbeitung
  1. 01

    Kennung

    Beim Weiterleiten zu einem Partnerprogramm vergibt die Plattform eine eigene Zuordnungskennung für diesen Vorgang.

  2. 02

    Übergabe

    Die Kennung wird an das Affiliate-Netzwerk übergeben und dort dem Vorgang mitgeführt.

  3. 03

    Rückmeldung

    Später meldet das Netzwerk die Transaktion — im eigenen Format, mit eigenem Status.

  4. 04

    Vereinheitlichung

    Der anbieterspezifische Importweg überführt Felder und Status in das interne Transaktionsmodell.

  5. 05

    Zuordnung

    Über die zurückgegebene Kennung wird die Transaktion einem Mitgliedskonto zugeordnet.

  6. 06

    Gutschrift

    Erst wenn das Netzwerk die Transaktion bestätigt, entsteht aus der gemeldeten Provision eine Gutschrift mit Eintrag in der Buchungshistorie.

Abrechnung

Von der Provision zum Guthaben.

Eine gemeldete Provision ist noch kein Guthaben. Zwischen beiden liegt eine Rechnung, die nachvollziehbar bleiben muss: Aus dem Betrag, den das Netzwerk meldet, ergeben sich der Anteil des Mitglieds und der Anteil des Betreibers. Diese Aufteilung gehört zur Fachlogik und nicht in eine nachgelagerte Auswertung. Auf dieselbe Gutschrift setzt das Werbeprogramm auf: Wer ein Mitglied geworben hat, erhält einen Anteil, in zwei Stufen.

Neben dem Kontostand steht deshalb eine Buchungshistorie. Ein Guthaben, das nur als Summe existiert, ist im Zweifelsfall nicht erklärbar; eines mit Historie lässt sich Posten für Posten aufschlüsseln — welche Transaktion, welcher Zeitpunkt, welcher Status.

Externe Statusmodelle werden dabei normalisiert. Bestätigt und storniert sind Teil des internen Transaktionsmodells und nicht Vokabeln einzelner Anbieter. Guthaben und Buchungshistorie bleiben getrennt nachvollziehbar.

Auszahlung

Der Schritt, der bewusst nicht automatisch läuft.

Am Ende steht eine Auszahlung — der einzige Punkt, an dem Geld das System verlässt. Genau dort läuft absichtlich nicht alles von selbst.

Ein Auszahlungswunsch ist deshalb ein eigener Vorgang mit eigenem Status. Er hat Voraussetzungen — einen Mindestbetrag, eine geprüfte Bankverbindung oder ein freigegebenes PayPal-Konto —, er wird geprüft, und er wird freigegeben oder mit Begründung storniert. Zwischen ausreichendem Guthaben und tatsächlicher Auszahlung liegt eine Entscheidung, die im System sichtbar bleibt; Auszahlungsbelege stehen als PDF bereit.

Das ist keine technische Bequemlichkeit, sondern eine Entwurfsentscheidung. Automatisierung ist überall dort richtig, wo ein Fehler korrigierbar ist. Eine ausgezahlte Summe ist es nicht.

Missbrauchsabwehr

Wo Geld entsteht, wird es versucht.

Sobald ein System Geld ausschüttet, wird es zum Ziel. Das ist kein Verdacht gegen Mitglieder, sondern eine Eigenschaft des Geschäftsmodells: Ein Vorgang, an dessen Ende eine Gutschrift steht, lohnt den Versuch, ihn zu erzeugen, ohne ihn zu durchlaufen.

Die Gegenmaßnahmen liegen deshalb nicht an einer Stelle, sondern verteilt über den Ablauf. Nach einem erfassten Vorgang greift je Mitglied und Partnerprogramm eine Sperrfrist, bevor derselbe Weg erneut vergütet wird. Automatisierte Klicks auf Werbemails werden erkannt und aussortiert. Mehrfachkonten werden über gemeinsame Merkmale auffindbar gemacht, bis hin zu übereinstimmenden Bankverbindungen. Sperrlisten greifen dort, wo ein Muster bereits bekannt ist. Zugänge mit auffällig vielen Fehlanmeldungen werden stufenweise gesperrt statt sofort und endgültig.

Keine dieser Maßnahmen ist für sich genommen aufwendig. Zusammen sind sie der Unterschied zwischen einem Cashback-Programm, das sich rechnet, und einem, das ausgenutzt wird.

Langzeit

Was eine Integration über Jahre bedeutet.

Eine Affiliate-Integration ist kein Vorhaben mit Enddatum. Die Netzwerke, an die sie angeschlossen ist, gehören anderen Unternehmen: Sie ändern Felder, Formate, Statusbezeichnungen und Zugangswege, ohne zu fragen — und sie tun das nicht gleichzeitig.

Für die Plattform heißt das, dass die Arbeit an den Rändern nie aufhört, während die Mitte stabil bleiben muss. Genau dafür ist die Trennung zwischen anbieterspezifischem Import und internem Transaktionsmodell da: Ein geändertes Format berührt einen Importweg, nicht die Abrechnung.

Der Wert eines solchen Systems liegt ohnehin nicht in seiner Technik, sondern in den Regeln, die über Jahre hineingewachsen sind — Zuordnung, Aufteilung, Fristen, Eigenheiten einzelner Anbieter. Wer diese Regeln behalten will, pflegt die Ränder, statt die Mitte neu zu bauen.

Modernisierung

Ein gewachsener Bestand auf neuer Basis.

Dondino ist älter als seine jüngere technische Grundlage. Mitgliederbereich und Verwaltung liegen in einer Laravel-8-Anwendung auf PHP 8; daneben besteht ein über Jahre gewachsener PHP-Bestand mit eigenen Import- und Prüfskripten.

Diesen Bestand haben wir nicht auf einen Schlag ersetzt. Älterer Datenbankzugriff läuft über eine Kompatibilitätsschicht weiter, und Importe und Prüfläufe wurden Schritt für Schritt auf die Datenbankschicht von Laravel umgestellt. Gesteuert werden sie über eine Job-Tabelle mit Priorität, Intervall und festem Zeitbudget je Lauf, sodass kein einzelner Import den nächsten blockiert.

Auch die Mitgliederkonten sind mitgewachsen, ohne dass jemand es merken musste: Ältere Passwort-Hashes werden bei der nächsten Anmeldung auf ein aktuelles Verfahren umgestellt — ohne erzwungenen Passwortwechsel für alle Mitglieder.

Eingesetzte Technologien

Genannt ist nur, was im System tatsächlich trägt. Die Vielfalt liegt bei dieser Plattform nicht im Stack, sondern an seinen Rändern: in den Formaten, die von außen hereinkommen.

PHPLaravelMySQLJavaScriptREST- und SOAP-Schnittstellen
Fragen

Fragen zu diesem Fall

  • Wie bindet man mehrere Affiliate-Netzwerke an ein gemeinsames Abrechnungsmodell an?

    Indem man keinem Anbieterformat erlaubt, weiter ins System zu gelangen. Jede Anbindung ist ein eigener Importweg mit einer einzigen Aufgabe: Felder, Formate und Statusbezeichnungen des Netzwerks in ein internes Transaktionsmodell zu überführen. Alles danach — Zuordnung, Abrechnung, Guthaben — kennt nur noch dieses eine Modell.

  • Wie wird eine Affiliate-Transaktion dem richtigen Mitglied zugeordnet?

    Über eine Zuordnungskennung, die die Plattform beim Weiterleiten zum Partnerprogramm vergibt und die das Netzwerk mit der gemeldeten Transaktion zurückgibt. Zwischen beiden Ereignissen können Wochen liegen. Wo ein Anbieter die Kennung nicht vollständig durchreicht, ist dafür ein eigener Weg im Import vorgesehen.

  • Warum wird eine Auszahlung nicht automatisch ausgelöst?

    Weil sie der Schritt ist, der sich nicht zurücknehmen lässt. Eine Auszahlung ist deshalb ein eigener Vorgang mit eigenem Status: Sie hat Voraussetzungen, sie wird geprüft und sie wird freigegeben oder mit Begründung storniert. Automatisierung ist dort richtig, wo ein Fehler korrigierbar bleibt.

  • Wie geht eine Cashback-Plattform mit Missbrauch um?

    Über mehrere Kontrollen entlang des Ablaufs statt über eine einzelne Prüfung: Sperrfristen gegen wiederholte Vergütung, Erkennung automatisierter Klicks, Auffinden von Mehrfachkonten, Sperrlisten für bereits bekannte Muster und stufenweise Sperren bei auffällig vielen Fehlanmeldungen.

  • Warum nennen Sie die angebundenen Affiliate-Netzwerke nicht?

    Weil sie für die Engineering-Leistung nicht erforderlich sind. Integration, Zuordnung, Abrechnung, Auszahlung und Missbrauchsabwehr lassen sich vollständig beschreiben, ohne die Anbieter zu benennen; die Beziehungen zu den Netzwerken gehören zum Geschäft von Dondino.

Wissensgraph

Setzen Sie Ihren Engineering-Weg fort.

Verwandte Konzepte, Entscheidungen, Playbooks und Standpunkte — als zusammenhängender Pfad, nicht als Linkliste.

Sprechen wir über Ihr Vorhaben.

Kein Vertrieb. Ein direktes Gespräch mit der Geschäftsführung.