Ga naar inhoud

Een betaling accepteren

  1. De klant klikt op betalen; u opent de checkout.
  2. De SDK maakt de betaling aan en toont de beschikbare chains en tokens.
  3. De klant verbindt een wallet en schakelt over naar de juiste chain.
  4. De SDK controleert het saldo voordat de klant mag verzenden.
  5. De klant ondertekent; onSuccess wordt geactiveerd.
  6. Uw server bevestigt de betaling en voert de bestelling uit.

Stappen 2 tot en met 5 zijn de taak van de SDK. Stap 6 is uw taak, en dat is de stap die wordt overgeslagen.

onSuccess betekent dat de wallet de transactie heeft geaccepteerd en naar het netwerk heeft uitgezonden. Het betekent niet dat het geld is aangekomen. De transactie kan mislukken, worden vervangen door een transactie met een hogere fee, of uit de mempool worden verwijderd.

Het gebeurt ook client-side, dus iedereen die de browserconsole op uw checkoutpagina kan openen, kan het activeren. Een bestelling uitvoeren op basis van een beslissing in de browser betekent dat iedereen om die uitvoering kan vragen.

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();
}}

Bevestig daarna server-side, via een webhook of door de status op te vragen met uw key.

De SDK controleert of de klant genoeg van de token heeft, en genoeg native munt voor gas, voordat verzenden wordt toegestaan. Zo wordt de meest voorkomende fout, wel USDC maar geen ETH voor gas, opgevangen voordat een transactie wordt geprobeerd, in plaats van nadat die is teruggedraaid (revert).

Een klant kan meer of minder sturen dan gefactureerd. Geen van beide maakt de betaling kapot, en voor beide is de afhandeling vastgelegd: zie Overbetalingen en terugbetalingen.