3.1.4. Rückerstattung von Aufträgen#

Auf dieser Seite finden Sie die gesamte Dokumentation für das Video-Tutorial, in dem der Prozess der Rückerstattung von Bestellungen und die verschiedenen Fristen für die Rückerstattung erläutert werden.

3.1.4.1. Video#

3.1.4.2. Informationen#

Wenn Sie mit der Erstellung von Aufträgen nicht vertraut sind, können Sie sich das Taler-Händler erstellt Aufträge-Tutorial ansehen.

3.1.4.3. Anforderungen#

Erforderlich für diese Lehrgangsreihe:

  • Ein Taler-Händler-Backend
    Wenn Sie Hilfe benötigen, um das Händler-Backend zum ersten Mal zu benutzen, können Sie sich das Taler-Händler-Einführung-Tutorial ansehen.
  • Eine Taler-Walletn-Instanz
    Anleitungen zur Einrichtung finden Sie unter https://wallet.taler.net.
  • Eine REST-API-Verwaltungssoftware oder entsprechende Programmierkenntnisse
    In dieser Videoreihe werden wir die kostenlose Software Insomnia verwenden, die unter https://insomnia.rest heruntergeladen werden kann.

3.1.4.4. Demo-Backend Hinweis#

Sie können Ihren eigenen Händler-Backend-Dienst oder den Online-Demonstrationsdienst unter https://backend.demo.taler.net/instances/sandbox/ für dieses Tutorial verwenden.

3.1.4.5. Weitere Hinweise zur Erstattung von Händlerbestellungen#

Eine Rückerstattung in GNU Taler ist eine Möglichkeit, eine Zahlung „rückgängig“ zu machen. Sie muss vom Händler autorisiert werden. Erstattungen können für jeden Bruchteil des ursprünglich gezahlten Betrags erfolgen, aber sie können die ursprüngliche Zahlung nicht übersteigen. Rückerstattungen sind zeitlich begrenzt und können nur erfolgen, solange die Börse das Geld für eine bestimmte Zahlung auf einem Treuhandkonto hält. Der Zeitraum, in dem eine Rückerstattung möglich ist, kann durch das Setzen der refund_deadline in einem Auftrag kontrolliert werden. Der Standardwert für diese Rückerstattungsfrist wird in der Konfiguration des Backends des Händlers festgelegt.

Das Frontend kann das Backend des Händlers anweisen, eine Rückerstattung zu autorisieren, indem es den Endpunkt /private/orders/$ORDER_ID/refund ansteuert.

Das JSON-Objekt des Erstattungsantrags hat nur zwei Felder:

  • Erstattung“: Der zu erstattende Betrag. Wurde für dieselbe Bestellung eine frühere Erstattung genehmigt, muss der neue Betrag höher sein, andernfalls hat der Vorgang keine Wirkung. Der Wert gibt den zu erstattenden Gesamtbetrag an, nicht eine Erhöhung des Erstattungsbetrags.

  • Begründung“: Von Menschen lesbare Begründung für die Erstattung. Der Grund wird nur vom Back Office verwendet und ist für den Kunden nicht sichtbar.

Wenn die Anfrage erfolgreich ist (angezeigt durch den HTTP-Statuscode 200), enthält die Antwort eine taler_refund_uri. Das Frontend muss den Browser des Kunden auf diese URL umleiten, damit die Erstattung von der Wallet verarbeitet werden kann.

Dieser Codeausschnitt veranschaulicht die Gewährung einer Erstattung:

>>> import requests
>>> refund_req = dict(refund="KUDOS:10",
...                   reason="Customer did not like the product")
>>> requests.post("https://backend.demo.taler.net/instances/sandbox/private/orders/"
...               + order_id + "/refund", json=refund_req,
...               headers={"Authorization": "Bearer secret-token:sandbox"})
<Response [200]>

Bemerkung

Nach der Gewährung einer Rückerstattung ändert der öffentliche Endpunkt https://example.com/orders/$ORDER_ID seine Wallet-Interaktion von der Zahlungsanforderung zum Angebot einer Rückerstattung. Somit können Frontends die Browser wieder zu diesem Endpunkt umleiten. Um dies zu tun, muss jedoch ein h_contract-Feld angehängt werden (?h_contract=$H_CONTRACT), da der öffentliche Endpunkt es zur Authentifizierung des Kunden benötigt. Der erforderliche Wert $H_CONTRACT wird in der Rückerstattungsantwort unter dem Feld h_contract zurückgegeben.

3.1.4.6. Mehr Tutorials#

Weitere Anleitungen finden Sie auf dieser Website oder unter https://docs.taler.net, wo Sie die neueste Dokumentation über die Taler-Dienste finden.