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ê tratará redirecionamentos do pagador quando a API retornar pending e action_url (desafio 3DS ou coleta de fingerprint).

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://auth.a55.tech/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://sandbox.api.a55.tech/api/v1/bank/wallet/charge/

curl -sS -X POST 'https://sandbox.api.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

A resposta sempre retorna o objeto completo da cobrança. Os campos-chave que mudam conforme o resultado são status, action_url e message.

{
"charge_uuid": "a34f2499-2a40-40a5-8f5a-578002a88f51",
"local_currency": 159.8,
"currency": "EUR",
"usd_currency": 185.59,
"type": "credit_card",
"date": "2026-04-01",
"description": "#18770 Payments Cabo HDMI 2.1 Ultra 8K",
"due_date": "2025-10-11",
"status": "confirmed",
"message": [],
"installment_count": 1,
"installments": [],
"payment_payload": {},
"applepay_payload": {},
"charge_payment_url": null,
"action_url": "",
"session_id": null,
"subscription": {},
"reference_external_id": "10ccf81a-1de7-4a3e-b86d-f3f685e8ee57",
"is_async": false
}
4

Tratar o redirecionamento (se pendente)

Se a resposta incluir action_url, redirecione o comprador para essa URL. Após o pagador concluir a ação (desafio 3DS ou fingerprint), ele é automaticamente redirecionado para sua redirect_url. Sempre utilize o webhook como fonte de verdade para o status final da transação.

if (response.action_url) {
window.location.href = response.action_url;
}
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 →