Pular para o conteúdo principal

Integração Host-to-Host

Quick Reference

WhatAPI de cobrança servidor a servidor
WhyControle máximo sobre novas tentativas, idempotência e tratamento de erros
Reading Time20 min
DifficultyAdvanced
PrerequisitesAutenticação → Ambiente

Host-to-Host (H2H) é integração por API direta: seu backend chama a A55 com dados do cartão e do pedido. Você mantém controle total sobre novas tentativas, idempotência e tratamento de erros.


Por que H2H (comparação)

CritérioH2HSDKCheckout Page
Segurança dos dadosVocê gerencia o transporteA55 protege via SDKA55 gerencia tudo
Nível de controleTotalParcialMínimo
Tratamento dos dados do cartãoSeu servidorSDK no navegadorHospedado pela A55
Gestão do 3DSVocê trata o redirecionamentoO SDK trataA A55 trata
Ideal paraEquipes com controle total do servidorMercado médioLow-code / no-code

Quando usar

  • Você tem infraestrutura para manipular dados de cartão com segurança (transporte HTTPS, sem armazenamento local).
  • Você precisa de controle máximo no lado do servidor sobre o ciclo de vida da cobrança.
  • Você implementará redirecionamentos 3DS quando a API retornar pending e url_3ds.

Campos de cartão (corpo da requisição)

CampoDescrição
card_nameNome do portador conforme impresso no cartão
card_numberPrimary Account Number (PAN)
card_expiry_monthMês de validade (1–12)
card_expiry_yearAno de validade (quatro dígitos)
card_cvvCard verification value

Fluxo técnico


Integração passo a passo

1

Obter um token de acesso

curl -s -X POST "https://a55-auth.auth.us-east-1.amazoncognito.com/oauth2/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials&client_id=$CLIENT_ID&client_secret=$CLIENT_SECRET"
2

Montar e enviar a cobrança

POST https://core-manager.a55.tech/api/v1/bank/wallet/charge/

curl -sS -X POST 'https://core-manager.a55.tech/api/v1/bank/wallet/charge/' \
-H 'Authorization: Bearer $ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: ord_001' \
-d '{
"wallet_uuid": "00000000-0000-4000-8000-000000000001",
"merchant_id": "merchant_123",
"payer_name": "Jane Doe",
"payer_email": "jane@example.com",
"payer_cell_phone": "+5511999999999",
"payer_tax_id": "12345678901",
"items": [{"name": "Order", "quantity": 1, "value": 10000}],
"payer_address": {"street": "Av. Paulista 1000", "city": "São Paulo", "state": "SP", "zip_code": "01310100", "country": "BR"},
"currency": "BRL",
"installment_value": 10000,
"installment_count": 1,
"due_date": "2026-12-31",
"description": "H2H charge",
"type_charge": "credit_card",
"card_name": "JANE DOE",
"card_number": "4111111111111111",
"card_expiry_month": 12,
"card_expiry_year": 2030,
"card_cvv": "123",
"reference_external_id": "ord_001",
"threeds_authentication": false,
"webhook_url": "https://merchant.example/webhooks/a55",
"redirect_url": "https://merchant.example/return"
}'
3

Tratar a resposta

{
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "confirmed",
"reference_external_id": "ord_001"
}
4

Tratar o redirecionamento 3DS (se pendente)

Se a resposta incluir url_3ds, redirecione o comprador e escute o evento de conclusão:

window.addEventListener('message', function (event) {
if (event.data?.event === '3ds-auth-complete') {
const chargeUuid = event.data.chargeUuid;
// Fetch charge status and update your UI
}
});
5

Confirmar via webhook

Configure webhook_url para receber atualizações de status assíncronas mesmo se o comprador fechar o navegador.

{
"charge_uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "paid",
"transaction_reference": "txn_ref_001"
}

Testar com cartões de sandbox

Card NumberBrandScenarioExpected Status
4111 1111 1111 1111VisaPagamento bem-sucedidoconfirmed
5500 0000 0000 0004MastercardPagamento bem-sucedidoconfirmed
4000 0000 0000 0002VisaCartão recusadodeclined
4000 0000 0000 0101VisaDesafio 3DS necessárioconfirmed
4000 0000 0000 0069VisaErro de processamentoerror
5105 1051 0510 5100MastercardSaldo insuficientedeclined

Quer taxas de aprovação mais altas?

Visa Data Only envia dados enriquecidos da transação para os emissores pelas trilhas do 3DS — sem redirecionamento de desafio. O piloto da Square com mais de 6 milhões de transações mostrou ganho de até +646 pontos-base na aprovação.

Se você já envia device_info para 3DS, já tem os dados. Basta definir data_only: true em vez de threeds_authentication: true.

Trade-off: não há transferência de responsabilidade por fraude (o lojista assume o risco). Para alto volume e baixo risco na América Latina, o ganho de aprovação costuma superar o custo de fraude.

Saiba como ativar Data Only →