Visão Geral da Integração
Quick Reference
Por que essa decisão importa
O modelo de integração que você escolhe determina como os dados do cartão trafegam, quem lida com o 3DS e quem cuida da segurança dos dados de cartão. Mudar de modelo depois significa re-arquitetar. Invista 7 minutos aqui para economizar semanas depois.
| Escolha errada | Consequência |
|---|---|
| H2H sem infraestrutura de segurança | Você manipula dados brutos de cartão sem a estrutura para protegê-los |
| SDK quando você precisa de controle total no servidor | Você luta contra o SDK em vez de aproveitá-lo |
| Checkout Page quando você precisa de UX pixel-perfect | Você perde o controle sobre a experiência de pagamento |
Matriz comparativa
| Critério | H2H (Host-to-Host) | SDK (Embutido) | Checkout Page (Redirecionamento) |
|---|---|---|---|
| Tempo de integração | Semanas | Dias | Horas |
| Segurança dos dados | Você manipula dados do cartão | O SDK lida com os campos do cartão | Totalmente gerenciado pela A55 |
| Controle de UX | Total — cada pixel é seu | Alto — checkout nativo, SDK lida com 3DS | Limitado — página hospedada pela A55 |
| Quem manipula dados do cartão | Seus servidores | SDK no navegador | Página hospedada pela A55 |
| Quem executa o 3DS | Você (trata url_3ds) | SDK (frictionless + challenge) | A55 (ponta a ponta) |
| Ideal para | Equipes com controle total do servidor | Checkout nativo com menos trabalho de 3DS | Lançamento mais rápido, sem dados de cartão nos seus servidores |
Árvore de decisão
- Horas para lançar? → Checkout Page
- UX nativa, sem dados de cartão nos seus servidores? → SDK
- Controle total do servidor? → H2H
1. H2H (Host-to-Host)
Seu backend envia dados do cartão, campos do cliente e payloads 3DS diretamente para a A55.
Você lida com: Coleta do cartão, transporte HTTPS, redirecionamento do desafio 3DS, processamento de webhooks.
A A55 lida com: Roteamento ao adquirente, autorização, entrega de webhooks.
| Vantagem | Contrapartida |
|---|---|
| Controle total sobre cada etapa do pagamento | Você coleta os dados do cartão antes de enviá-los à A55 |
| Lógica personalizada de retentativa e tratamento de erros | O fluxo de desafio 3DS exige trabalho no frontend |
| Acesso direto a todos os parâmetros da API | Maior prazo de integração |
2. SDK (Frontend Embutido)
Incorpore o SDK JavaScript da A55 na sua página de checkout. Ele coleta os dados do cartão, lida com o 3DS e reporta o resultado.
Você lida com: Criação da cobrança no backend, inicialização do SDK no frontend, processamento de webhooks.
O SDK lida com: Renderização dos campos do cartão, device fingerprinting, roteamento 3DS frictionless/challenge, callbacks assíncronos.
| Vantagem | Contrapartida |
|---|---|
| UX de checkout nativa — o SDK renderiza dentro da sua página | Você integra e testa o ciclo de vida do SDK |
| Seguro por padrão — dados do cartão nunca chegam aos seus servidores | Menos flexibilidade que o H2H direto |
| 3DS tratado automaticamente pelo SDK | Requer integração com JavaScript no frontend |
3. Checkout Page (Redirecionamento)
Crie uma cobrança com dados mínimos e redirecione o pagador para a página hospedada da A55. A coleta do cartão, o 3DS e a conclusão do pagamento acontecem lá.
Você lida com: Criação da cobrança, redirecionamento, tratamento da URL de retorno, processamento de webhooks.
A A55 lida com: Todo o restante — captura do cartão, 3DS, conclusão do pagamento, UI hospedada.
| Vantagem | Contrapartida |
|---|---|
| Lançamento mais rápido — horas até a produção | Menos controle sobre a UX de pagamento |
| Zero dados de cartão nos seus servidores — a A55 cuida disso | Redirecionamento leva o usuário para fora do seu site |
| Sem necessidade de JavaScript no frontend | Estilização da página hospedada é gerenciada pela A55 |
Resumo de responsabilidades
| Responsabilidade | H2H | SDK | Checkout |
|---|---|---|---|
| Criar cobrança no backend | Você | Você | Você |
| Coletar dados do cartão | Você | SDK | A55 |
| Lidar com desafios 3DS | Você | SDK | A55 |
| Processar webhooks | Você | Você | Você |
| Segurança dos dados de cartão | Você gerencia | A55 protege via SDK | A55 gerencia tudo |
| JavaScript no frontend | Não necessário | Necessário (SDK) | Não necessário |
Início rápido da integração
Independentemente do modelo, a chamada de criação de cobrança no backend é a mesma:
- cURL
- Python
- JavaScript
curl -s -X POST https://core-manager.a55.tech/api/v1/bank/wallet/charge/ \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"wallet_uuid": "YOUR_WALLET_UUID",
"merchant_id": "YOUR_MERCHANT_UUID",
"payer_name": "Jane Smith",
"payer_email": "jane@example.com",
"payer_tax_id": "12345678909",
"payer_cell_phone": "+5511999999999",
"installment_value": 250.00,
"currency": "BRL",
"due_date": "2026-12-31",
"description": "Order #42",
"type_charge": "credit_card",
"webhook_url": "https://your-app.com/webhooks/a55"
}'
import requests
charge = requests.post(
"https://core-manager.a55.tech/api/v1/bank/wallet/charge/",
json={
"wallet_uuid": "YOUR_WALLET_UUID",
"merchant_id": "YOUR_MERCHANT_UUID",
"payer_name": "Jane Smith",
"payer_email": "jane@example.com",
"payer_tax_id": "12345678909",
"payer_cell_phone": "+5511999999999",
"installment_value": 250.00,
"currency": "BRL",
"due_date": "2026-12-31",
"description": "Order #42",
"type_charge": "credit_card",
"webhook_url": "https://your-app.com/webhooks/a55",
},
headers={
"Authorization": f"Bearer {token}",
"Content-Type": "application/json",
},
).json()
print(f"Charge UUID: {charge['charge_uuid']}")
print(f"Status: {charge['status']}")
const charge = await fetch(
"https://core-manager.a55.tech/api/v1/bank/wallet/charge/",
{
method: "POST",
headers: {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
wallet_uuid: "YOUR_WALLET_UUID",
merchant_id: "YOUR_MERCHANT_UUID",
payer_name: "Jane Smith",
payer_email: "jane@example.com",
payer_tax_id: "12345678909",
payer_cell_phone: "+5511999999999",
installment_value: 250.0,
currency: "BRL",
due_date: "2026-12-31",
description: "Order #42",
type_charge: "credit_card",
webhook_url: "https://your-app.com/webhooks/a55",
}),
}
).then(r => r.json());
console.log(`Charge UUID: ${charge.charge_uuid}`);
console.log(`Status: ${charge.status}`);
O que acontece após essa chamada depende do seu modelo de integração:
- H2H: Inclua o objeto
cardno payload; trateurl_3dsse retornado. - SDK: Use o
charge_uuidretornado para inicializar o SDK no frontend. - Checkout Page: Inclua
is_checkout: true; redirecione o pagador para a URL retornada.
Webhooks são a fonte da verdade
Trate os webhooks como autoritativos para o estado final do pagamento. Exiba um estado "processando" após o envio até que um webhook confirme o resultado. Estados terminais (paid, error, canceled, refunded) não transitam mais.
| Exibir | Quando |
|---|---|
| Processando | Após o envio do pagamento |
| Sucesso | Webhook confirma paid |
| Falha | Webhook confirma error ou canceled |