Aceitar um pagamento
O fluxo
Seção intitulada “O fluxo”- O cliente clica em pagar; o seu site abre o checkout.
- O SDK cria o pagamento e mostra as redes e os tokens disponíveis.
- O cliente liga uma wallet e muda para a rede certa.
- O SDK verifica o saldo antes de permitir o envio.
- O cliente assina;
onSuccessé disparado. - O seu servidor confirma o pagamento e processa a encomenda.
Os passos 2 a 5 são tarefa do SDK. O passo 6 é seu, e é esse que fica por fazer.
Porque é que o passo 6 não é opcional
Seção intitulada “Porque é que o passo 6 não é opcional”onSuccess significa que a wallet aceitou a transação e a difundiu. Não
significa que o dinheiro chegou. A transação pode falhar, ser substituída por
outra com uma taxa mais alta ou ser descartada da mempool.
Além disso, é executado no cliente, por isso pode ser acionado por qualquer pessoa que consiga abrir a consola do navegador na sua página de checkout. Uma encomenda processada com base no navegador é uma encomenda que qualquer pessoa pode pedir.
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();}}Depois, confirme no servidor, por webhook ou lendo o estado com a sua chave.
Verificações de saldo
Seção intitulada “Verificações de saldo”O SDK verifica se o cliente tem token suficiente, e moeda nativa suficiente para o gas, antes de permitir o envio. Isto apanha a falha mais comum, ter USDC mas nenhum ETH para o gas, antes de se tentar a transação e não depois de ela ser revertida.
Montantes que não coincidem
Seção intitulada “Montantes que não coincidem”Um cliente pode enviar mais ou menos do que o valor faturado. Nenhum dos casos estraga o pagamento, e ambos têm um tratamento definido: consulte Pagamentos em excesso e reembolsos.
