Antes: duas coisas que o link exige
O
slug é o do seu tenant e entra na URL pública, então ele é argumento: o SDK não
deduz isso de uma secret key.
O que acontece quando alguém abre
O link não tem pagador. Quem abre preenche os próprios dados e paga; o cliente e a fatura são materializados no submit. Isso é o que permite mandar o mesmo link pra várias pessoas — ou pra um grupo — sem cadastrar ninguém antes. A venda é no Brasil (você e o comprador no Brasil), por Pix ou cartão à vista, em ambiente de teste, e a cobrança cai na sua conta de recebimento no provedor de pagamento. Venda internacional pela Infi UK Ltd está em breve. Sem o cadastro de recebimento pronto, o link abre mas a loja ainda não recebe, e o checkout avisa isso. Veja colocar em produção.O contrato ainda pede
taxId ao abrir a sessão. O POST .../sessions aceita email e taxId (CPF/CNPJ válido) juntos,
e recusa um sem o outro. Se você montar o checkout no seu app em vez de usar o link, passe taxId junto do cliente.Pra onde o pagador vai depois
Por padrão ele fica no nosso recibo. Se você quer o pagador de volta no seu site, passe as URLs na criação do link:successUrl com ?status=success&invoice=<id> anexado — os seus parâmetros
ficam. cancelUrl aparece como “Voltar para {sua loja}” enquanto o checkout
está aberto. As duas precisam ser URL absoluta http(s); caminho relativo ou
qualquer outro esquema responde 422.
O mesmo par existe em infi.checkout({ successUrl, cancelUrl }) pra faturas
criadas no seu servidor, e no embed (@beinfi/checkout) o equivalente é a prop
returnUrl.
Listar e revogar
E como eu sei que pagaram?
Não é pelo retorno delinks.create: pagamento é assíncrono. Em produção, webhook
assinado (payment.confirmed); em sandbox, polling da fatura — os dois em
webhooks.
Quando usar o link e quando não
Use o link
Venda pontual, cobrança por WhatsApp, primeira venda antes de ter app.
Use metering
Cobrança por uso contínuo (tokens, requests), onde o valor só existe depois
que o cliente consumiu — veja SDK.