Zum Inhalt springen

Eine Zahlung akzeptieren

  1. Der Kunde klickt auf Bezahlen; Sie öffnen den Checkout.
  2. Das SDK erstellt die Zahlung und zeigt die verfügbaren Chains und Token an.
  3. Der Kunde verbindet eine Wallet und wechselt zur richtigen Chain.
  4. Das SDK prüft das Guthaben, bevor es das Absenden zulässt.
  5. Der Kunde signiert; onSuccess wird ausgelöst.
  6. Ihr Server bestätigt die Zahlung und führt die Bestellung aus.

Die Schritte 2 bis 5 übernimmt das SDK. Schritt 6 ist Ihre Aufgabe, und genau dieser Schritt wird übersprungen.

onSuccess bedeutet, dass die Wallet die Transaktion akzeptiert und gesendet hat. Es bedeutet nicht, dass das Geld angekommen ist. Die Transaktion kann fehlschlagen, durch eine mit höherer Gebühr ersetzt oder aus dem Mempool verworfen werden.

Außerdem läuft es clientseitig und kann daher von jedem ausgelöst werden, der auf Ihrer Checkout-Seite die Browser-Konsole öffnen kann. Eine Ausführung, über die im Browser entschieden wird, ist eine Ausführung, die jeder anfordern kann.

onSuccess={(paymentId, txHash) => {
// Right: hand it to your server and let the server decide.
fetch('/api/orders/awaiting-confirmation', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ paymentId, txHash }),
});
// Wrong: fulfilling here trusts the browser.
// grantAccess();
}}

Bestätigen Sie anschließend serverseitig, entweder per Webhook oder indem Sie den Status mit Ihrem Key abrufen.

Das SDK prüft vor dem Absenden, ob der Kunde genug vom Token und genug native Währung für Gas hat. So wird der häufigste Fehler, USDC zu haben, aber kein ETH für Gas, abgefangen, bevor eine Transaktion versucht wird, statt erst nachdem sie revertiert.

Ein Kunde kann mehr oder weniger als den Rechnungsbetrag senden. Beides macht die Zahlung nicht kaputt, und für beides gibt es eine festgelegte Behandlung: siehe Überzahlungen und Rückerstattungen.