Autentica uma vez, cobra sem atrito
A primeira compra passa pelo 3DS. Renovações e o upsell de um clique usam o cartão salvo, sem o cliente confirmar de novo.
Autenticação 3DS no cartão
Na primeira compra no cartão, o banco do cliente confirma que é ele mesmo: no app, por código ou sem pedir nada. O risco de chargeback cai 92%, e a fraude autenticada fica na conta do banco.
Entre o clique em pagar e a cobrança, a AbacatePay pergunta ao banco do cartão se é mesmo o titular. Tudo em segundos, dentro do checkout.
Ele digita o cartão no checkout da AbacatePay, no link de pagamento ou nos campos seguros do abacatepay.js no seu site.
Valor, cartão, e-mail, CPF e endereço de cobrança vão pro banco emissor numa sessão 3DS, antes de cobrar.
Reconheceu a compra, autentica sozinho. Ficou na dúvida, pede uma confirmação no app dele ou por código.
A janela fecha sozinha e o pagamento é aprovado, com o chargeback por fraude na conta do banco emissor.
Quem decide como autenticar é o banco do cartão. Quando ele reconhece a compra, confirma sozinho; quando não, pede um toque no app ou um código. Veja o que o cliente vê em cada caso.
Frictionless
Com os dados da compra, o banco reconhece o cliente e autentica sem pedir nada. A janela pisca e some: pra quem compra, é como se o 3DS nem existisse.
Quando costuma acontecer
Desafio
O banco manda um pedido pro app dele no celular do cliente. Um toque com Face ID ou digital confirma, e o checkout segue sozinho.
Quando costuma acontecer
Desafio
O banco envia um código por SMS e o cliente digita na janela. Funciona com qualquer celular, sem precisar do app do banco instalado.
Quando costuma acontecer
Liability shift
Quando o banco autentica a compra, ele assume a responsabilidade se o titular disser depois que não reconhece a compra. É por isso que o 3DS reduz em 92% o risco de chargeback. Na AbacatePay, a primeira compra de cada cartão já sai autenticada.
“Não reconheço esta compra.”Fone Lume Pro · R$ 1.290,00 · Visa •• 4242
Pra disputa por desacordo comercial, o painel sugere as evidências de cada motivo.Ver como responder →
Como ligar
Você não integra 3DS: ele está dentro do pagamento. O script abre a janela do banco quando ele pede, espera o cliente confirmar e só então devolve o token pra cobrar.
abacatepay.js e chame tokenize() no clique de pagar. O 3DS acontece ali.ctok_, que vale 60 segundos e uma cobrança só.cardToken da resposta pra cobrar o mesmo cartão depois, sem pedir 3DS de novo.<script src="https://abacatepay.com/abacatepay.js"></script>
<div id="cartao"></div>
<button id="pagar" disabled>Pagar</button>
<script type="module">
const botao = document.getElementById('pagar')
const checkout = AbacatePay.create({
publicKey: 'pk_sua_chave_publica',
amount: 129000, // centavos: o mesmo valor da cobrança
onCardChange: ({ canTokenize }) => (botao.disabled = !canTokenize),
})
await checkout.mount('#cartao')
botao.addEventListener('click', async () => {
try {
// abre a janela do banco se ele pedir, e fecha sozinha
const { token } = await checkout.tokenize({
name: 'Paula Mendes',
email: 'paula@exemplo.com',
taxId: '529.982.247-25',
})
// mande o token pro seu backend em até 60 segundos
} catch (error) {
if (error.code === 'THREE_DS_FAILED') {
// o cliente não confirmou: deixe tentar de novo
}
}
})
</script>export function PagamentoCartao({ publicKey, amount, cliente }) {
const area = useRef(null)
const checkout = useRef(null)
const [podePagar, setPodePagar] = useState(false)
useEffect(() => {
const instancia = window.AbacatePay.create({
publicKey,
amount,
onCardChange: ({ canTokenize }) => setPodePagar(canTokenize),
})
checkout.current = instancia
instancia.mount(area.current)
return () => instancia.destroy()
}, [publicKey, amount])
async function pagar() {
setPodePagar(false)
// o 3DS acontece aqui dentro, quando o banco pede
const { token } = await checkout.current.tokenize(cliente)
await fetch('/pagar', { method: 'POST', body: JSON.stringify({ token }) })
}
return (
<>
<div ref={area} />
<button onClick={pagar} disabled={!podePagar}>Pagar</button>
</>
)
}// POST /pagar: cobra o cartão com o token que veio do navegador
const resposta = await fetch('https://api.abacatepay.com/v2/transparents/create', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.ABACATEPAY_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
method: 'CARD',
data: {
amount: 129000, // o mesmo valor do AbacatePay.create
token, // ctok_ já autenticado pelo 3DS
installmentCount: 3,
customer: { name, email, taxId, cellphone },
},
}),
})
const { data } = await resposta.json()
// Guarde data.cardToken: a próxima cobrança deste cartão
// vai com cardToken no lugar do token, sem o cliente e sem 3DSNo modo de teste, o formulário vem com o cartão 4242 4242 4242 4242 e não pede 3DS: a janela do banco aparece em produção.
A primeira compra de cada cartão é autenticada. Depois, o cartão salvo cobra sem pedir nada ao cliente.
A primeira compra passa pelo 3DS. Renovações e o upsell de um clique usam o cartão salvo, sem o cliente confirmar de novo.
O banco escolhe: Face ID ou digital no app dele, código por SMS ou nada.
O 3DS vale na primeira cobrança. As renovações usam o cartão salvo, sem o cliente.
A carteira já autentica no aparelho, com Face ID, digital ou senha.
A análise de risco e o 3DS trabalham juntos em cada venda no cartão.
Sem custo extra: já vem na taxa do cartão, de 5,42% + R$ 0,60 à vista em D+1.
Meios de pagamento e recursos na mesma conta, com as mesmas taxas e o mesmo suporte.
O que mais perguntam sobre a autenticação do cartão e o chargeback.
É a autenticação das bandeiras em que o banco do cartão confirma que quem está comprando é o titular, antes de a compra ser aprovada. O banco recebe os dados da compra e decide se autentica sozinho ou se pede uma confirmação ao cliente, no app ou por código.
Não. A autenticação 3DS e o antifraude já estão na taxa do cartão: de 5,42% + R$ 0,60 à vista a 17,37% + R$ 0,60 em 12x, recebendo em D+1. Sem mensalidade e sem adesão.
Não. Quando o banco reconhece o cliente e a compra, ele autentica sem pedir nada e a janela fecha sozinha. A confirmação no app do banco ou por código só aparece quando o banco quer ter certeza.
No checkout e no link de pagamento da AbacatePay, não: o 3DS já roda. No checkout transparente, o tokenize() do abacatepay.js faz a autenticação, abrindo a janela do banco quando ele pede. Você só espera a Promise e manda o token pro backend.
É a troca de responsabilidade que o 3DS traz: quando o banco autentica a compra, um chargeback por fraude (o titular dizendo que não reconhece a compra) passa a ser responsabilidade do banco emissor, e não da loja.
Reduz em 92% o risco. Ele protege contra o chargeback por fraude, quando o titular diz que não reconhece a compra. Disputas por desacordo comercial, como produto não entregue ou cancelamento, continuam com a loja: pra elas, o painel sugere as evidências de cada motivo.
Não. O 3DS vale na primeira compra, com o cliente presente. As renovações da assinatura e as cobranças com o cardToken são feitas pela loja, sem o cliente, e não pedem confirmação de novo.
A compra não é cobrada. No checkout transparente, o tokenize() rejeita com o código THREE_DS_FAILED, e o cliente pode tentar de novo ou usar outro cartão.
Os cartões de crédito Visa e Mastercard, à vista ou parcelado em até 12x. No Apple Pay e no Google Pay, a autenticação acontece no próprio aparelho, com Face ID, digital ou senha.
No modo de teste, o formulário vem com o cartão 4242 4242 4242 4242 e não pede 3DS, pra você testar o fluxo inteiro sem banco. A janela de autenticação aparece em produção, com cartões de verdade.
Sim. Por enquanto a AbacatePay é só pra CNPJ. MEI serve.
3DS e antifraude sem custo extra.
Crie a conta e, com o cartão liberado, a primeira compra de cada cartão já sai autenticada. Sem mensalidade e sem adesão.
Sem mensalidade. Aprovação não leva semanas.
