3.1.5. Erkennung von Rückkäufen und Erfüllungs-URLs#
Taler-Bestellungen und -Verträge müssen entweder eine fulfillment_url oder eine fulfillment_message enthalten, die von der Wallet verwendet werden, nachdem der Vertrag bezahlt worden ist. Dieses Tutorial erklärt, wie man diese Werte richtig einstellt.
3.1.5.1. Nachricht zur Erfüllung#
Dieses Feld ist einfach eine Nachricht, die dem Benutzer von der Taler-Brieftasche angezeigt wird, nachdem der Benutzer den Kauf abgeschlossen hat. Es kann auf jede Art von UTF-8-Text eingestellt werden und soll als freundliche Abschlussnachricht des Händlers am Ende des Geschäftsvorgangs verwendet werden.
Bemerkung
Die Geldbörsen erfahren den Text, bevor der Kauf getätigt wird, so dass die Nutzer die Erfüllungsnachricht vor dem eigentlichen Kauf erhalten könnten. Daher sollte sie keine tatsächlichen Anmeldedaten oder Informationen enthalten, die der Nutzer mit dem Vertrag kaufen könnte.
Erfüllungsnachrichten werden verwendet, wenn der Händler keine Erfüllungs-URL hat, an die er den Benutzer weiterleiten kann.
3.1.5.2. fulfillment_url#
Verträge können eine fulfillment_url anstelle einer fulfillment_message enthalten. Die fulfillment_url muss auf eine Website verweisen (beginnend mit http:// oder https://) und der Nutzer wird sofort nach Abschluss des Kaufs und möglicherweise später über den Kaufdetaildialog in der Transaktionshistorie seiner Brieftasche dorthin weitergeleitet.
Fulfillment-URLs dienen einem zweiten Zweck, nämlich der Wiederkaufserkennung. Daher muss auf die korrekte Verwendung von Fulfillment-URLs geachtet werden. Wir erläutern die beiden relevanten Szenarien und ihre Beweggründe in den nächsten beiden Abschnitten.
3.1.5.3. Erkennung von Rückkäufen und Erfüllungs-URLs#
Ein mögliches Problem für Händler, die Zugang zu digitalen Artikeln verkaufen, besteht darin, dass ein Kunde möglicherweise für einen Artikel auf einem Gerät bezahlt hat, ihn dann aber auf einem anderen Gerät lesen möchte, möglicherweise einem, auf dem noch nicht einmal eine Taler-Wallet installiert ist.
Natürlich würde der Kunde an dieser Stelle zunächst noch aufgefordert werden, den Artikel erneut zu bezahlen. Öffnet der Kunde dann den Link taler:// in der Wallet, mit der er zuvor den Artikel bezahlt hat (z.B. durch Scannen des QR-Codes auf dem Desktop mit der Android-App), wird die Wallet den Vertrag beanspruchen, erkennen, dass die Fulfillment-URL identisch mit einer ist, für die sie in der Vergangenheit bereits eine Zahlung getätigt hat, und eine Wiederkaufumleitung einleiten: In diesem Fall kontaktiert die Wallet den Händler und wiederholt die vorherige Zahlung, nur dass sie diesmal die (aktuelle) Sitzungs-ID des Browsers verwendet (die Sitzungs-ID erfährt sie aus dem QR-Code).
Das Händler-Backend aktualisiert dann die Sitzungs-ID der bestehenden Bestellung auf die aktuelle Sitzungs-ID des Browsers. Wenn der Zahlungsstatus für die „neue“ unbezahlte Bestellung geprüft wird (oder bereits im Long-Polling ist), stellt das Backend fest, dass für die Session-ID und die Erfüllungs-URL des Browsers ein bereits bezahlter Vertrag besteht. Es weist den Browser dann an, sofort zur Erfüllungs-URL weiterzuleiten, wo der bereits bezahlte Artikel verfügbar ist.
Es ist daher von entscheidender Bedeutung, dass Händler stets dieselbe Erfüllungs-URL für dasselbe digitale Produkt verwenden, wenn eine Erkennung von Wiederkäufen gewünscht ist.
Bemerkung
Die Änderung der Sitzungsnummer auf einem anderen Gerät erfordert die Einbeziehung der ursprünglichen Brieftasche, mit der die Zahlung getätigt wurde, wodurch die Möglichkeit der gemeinsamen Nutzung digitaler Käufe deutlich eingeschränkt wird.
3.1.5.4. Ermöglichung wiederholter Käufe#
Um sicherzustellen, dass dieser Mechanismus wie vorgesehen funktioniert, müssen Händler darauf achten, dass sie nicht dieselbe Fulfillment-URL für verschiedene Produkte oder für physische Produkte verwenden, bei denen erwartet werden kann, dass die Kunden den Artikel wiederholt kaufen. Ebenso ist es wichtig, dass Händler konsequent dieselbe Fulfillment-URL für dasselbe digitale Produkt verwenden, wenn eine Erkennung von Wiederholungskäufen gewünscht ist.
Eine bequeme Möglichkeit, eine eindeutige Erfüllungs-URL zu erstellen, besteht darin, die Bestell-ID in die Erfüllungs-URL einzubetten. Um die Verwendung der Bestell-ID in einer Fulfillment-URL auch dann zu ermöglichen, wenn das Feld order_id vom Händler beim POSTing einer neuen Bestellung nicht gesetzt ist (und somit die tatsächliche Bestell-ID vom Händler-Backend ausgewählt wird), können Sie den Platzhalter-Text ${ORDER_ID} in der fulfillment_url verwenden, wenn Sie sie an das Händler-Backend senden. Das Händler-Backend wird dann sofort ${ORDER_ID} in der URL durch die tatsächliche Bestell-ID ersetzen (bevor die Vertragsbedingungen lokal gespeichert werden).