- desenha os campos do cartão num iframe seguro (o número e o CVV nunca passam pelo seu código);
- faz a autenticação 3DS quando o banco do cliente exige, numa janela que abre e fecha sozinha;
- devolve o token
ctok_, que o seu backend usa para criar a cobrança.
Quer o fluxo completo, do formulário à cobrança? Siga o passo a passo. Esta página é a referência do script.
Instalação
Coloque a tag no<head> da página de pagamento:
AbacatePay. Use sempre esse endereço: não copie o arquivo para o seu servidor, porque ele é atualizado por nós. Não existe pacote npm do abacatepay.js; em React, Vue ou Next.js, carregue a mesma tag (veja o exemplo em React).
Uso básico
AbacatePay.create(opções)
Cria o checkout. Não desenha nada ainda: isso é papel do mount().
create() lança um erro na hora se publicKey estiver vazia ou se amount for menor que 100.
Os callbacks são opcionais. Você pode usar só await com try/catch nos métodos, ou só os callbacks, ou os dois.
Métodos
checkout.mount(alvo)
Desenha o formulário dentro do elemento. Aceita um seletor CSS ('#cartao') ou o próprio elemento. O conteúdo que estiver dentro dele é substituído.
Devolve uma Promise que resolve quando o formulário está pronto e rejeita com um erro se algo falhar, por exemplo uma chave pública inválida. Chame uma vez por checkout.
checkout.tokenize(cliente, endereço?)
Valida o cartão, faz o 3DS quando o banco exige e devolve o token. Chame no clique do botão de pagar, nunca antes: o token vale só 60 segundos.
cliente (obrigatório):
endereço (opcional): endereço de cobrança do cartão. Em produção ele é enviado ao banco na autenticação 3DS. Se enviar, mande os cinco campos: street, number, city, state (sigla com 2 letras) e zipCode.
Para pagar de novo depois de uma recusa, chame
tokenize() outra vez: cada chamada gera um token novo.
checkout.destroy()
Remove o formulário. Use quando o cliente sai da tela de pagamento sem recarregar a página (SPA).
Propriedades
onCardChange
Recebe o estado do formulário a cada mudança:
Erros
Os erros do abacatepay.js têmname igual a AbacatePayError, uma message e um code:
Mensagens mais comuns com
code: 'API':
3DS
Em produção, alguns bancos pedem que o cliente confirme a compra (código por SMS, aprovação no app do banco). Quando isso acontece, otokenize() abre uma janela por cima da página, com o título Autenticação do cartão, e só resolve depois que o cliente termina. Você não precisa fazer nada além de esperar a Promise.
Se o cliente não confirmar, o tokenize() rejeita com THREE_DS_FAILED.
Dev mode
Com a chave pública de teste, o abacatepay.js mostra um formulário de teste: campos simples, já preenchidos com o cartão4242 4242 4242 4242, sem 3DS e sem cobrança real. Para simular recusas, troque o número pelos cartões de teste.
Aparência
Otheme é repassado ao formulário seguro. Em styles, cada chave é um seletor CSS de dentro do formulário e o valor é um objeto de estilos:
theme vale para o formulário seguro de produção. O formulário de teste do Dev mode tem visual fixo.
Exemplo em React
Coloque a tag do script noindex.html (no Next.js, use <Script src="https://abacatepay.com/abacatepay.js" strategy="beforeInteractive" /> no layout raiz). O componente cobra pelo mesmo backend do passo a passo (POST /pagar):
PagamentoCartao.jsx