Cartão de crédito
Quick Reference
WhatAceitar pagamentos com cartão de crédito
WhyCartões com parcelamento, 3DS e antifraude — uma chamada à API
Reading Time10 min
DifficultyBeginner
PrerequisitesAutenticação → Ambiente
Por que aceitar cartões com a A55
| Sem A55 | Com A55 |
|---|---|
| Integrar cada adquirente separadamente | Um endpoint cobre 8 bandeiras e 29 adquirentes |
| Montar seu próprio pipeline de 3DS e antifraude | 3DS 2.2 e motor de risco integrados — ative com um campo |
| Lidar com o cálculo de parcelas por emissor | Envie installment_count; a A55 gerencia split e liquidação |
| Monitorar chargebacks em vários painéis | Ciclo de vida unificado via webhook da autorização até a resolução do chargeback |
Conceitos-chave
| Conceito | Papel |
|---|---|
| 3DS / Antifraude | O 3-D Secure autentica o portador do cartão; o AF pontua o risco antes do adquirente. |
| Autorização / Captura | A autorização reserva ou aprova fundos; capture: true conclui em uma etapa, capture: false é pré-autorização. |
| Parcelamento / Estorno / Chargeback | installment_count define os splits; estorno devolve fundos; chargeback é a disputa tratada pelo emissor. |
Bandeiras e parcelamento
| Segmento | Parcelamento |
|---|---|
| Visa, Mastercard, Amex, Elo, Aura | Sim |
| Diners, Discover | Não |
| JCB | Não suportado |
Parcelamento
installment_count 1 paga à vista; 2–6 e 7–12 usam parcelas mensais (taxas maiores podem se aplicar a planos mais longos). As regras seguem o contrato com seu adquirente.
Fluxo da transação
Criar uma cobrança com cartão de crédito
- cURL
- Python
- JavaScript
curl -X POST https://core-manager.a55.tech/api/v1/bank/wallet/charge/ \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"wallet_uuid": "00000000-0000-0000-0000-000000000000",
"merchant_id": "11111111-1111-1111-1111-111111111111",
"payer_name": "John Doe",
"payer_email": "johndoe@example.com",
"payer_tax_id": "12345678901",
"payer_cell_phone": "+5511999999999",
"items": [{"name":"Product","quantity":1,"total_amount":100,"unit_amount":100,"sku":"SKU-001","code":"P001"}],
"payer_address": {"street":"Sample St","address_number":"123","complement":"","neighborhood":"Centro","city":"São Paulo","state":"SP","postal_code":"01000-000","country":"BR"},
"currency": "BRL",
"installment_value": 100,
"installment_count": 1,
"due_date": "2026-12-31",
"description": "Order #1234",
"type_charge": "credit_card",
"card_name": "John Doe",
"card_number": "4111111111111111",
"card_expiry_month": "12",
"card_expiry_year": "2030",
"card_cvv": "123",
"capture": true,
"threeds_authentication": false,
"webhook_url": "https://yoursite.com/webhook",
"redirect_url": "https://yoursite.com/return"
}'
import requests
charge = requests.post(
"https://core-manager.a55.tech/api/v1/bank/wallet/charge/",
headers={"Authorization": f"Bearer {access_token}", "Content-Type": "application/json"},
json={
"wallet_uuid": "00000000-0000-0000-0000-000000000000",
"merchant_id": "11111111-1111-1111-1111-111111111111",
"payer_name": "John Doe",
"payer_email": "johndoe@example.com",
"payer_tax_id": "12345678901",
"payer_cell_phone": "+5511999999999",
"items": [{"name": "Product", "quantity": 1, "total_amount": 100, "unit_amount": 100, "sku": "SKU-001", "code": "P001"}],
"payer_address": {"street": "Sample St", "address_number": "123", "complement": "", "neighborhood": "Centro", "city": "São Paulo", "state": "SP", "postal_code": "01000-000", "country": "BR"},
"currency": "BRL",
"installment_value": 100,
"installment_count": 1,
"due_date": "2026-12-31",
"description": "Order #1234",
"type_charge": "credit_card",
"card_name": "John Doe",
"card_number": "4111111111111111",
"card_expiry_month": "12",
"card_expiry_year": "2030",
"card_cvv": "123",
"capture": True,
"threeds_authentication": False,
"webhook_url": "https://yoursite.com/webhook",
"redirect_url": "https://yoursite.com/return",
},
)
print(charge.json())
const response = await fetch(
"https://core-manager.a55.tech/api/v1/bank/wallet/charge/",
{
method: "POST",
headers: {
Authorization: `Bearer ${accessToken}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
wallet_uuid: "00000000-0000-0000-0000-000000000000",
merchant_id: "11111111-1111-1111-1111-111111111111",
payer_name: "John Doe",
payer_email: "johndoe@example.com",
payer_tax_id: "12345678901",
payer_cell_phone: "+5511999999999",
items: [{ name: "Product", quantity: 1, total_amount: 100, unit_amount: 100, sku: "SKU-001", code: "P001" }],
payer_address: { street: "Sample St", address_number: "123", complement: "", neighborhood: "Centro", city: "São Paulo", state: "SP", postal_code: "01000-000", country: "BR" },
currency: "BRL",
installment_value: 100,
installment_count: 1,
due_date: "2026-12-31",
description: "Order #1234",
type_charge: "credit_card",
card_name: "John Doe",
card_number: "4111111111111111",
card_expiry_month: "12",
card_expiry_year: "2030",
card_cvv: "123",
capture: true,
threeds_authentication: false,
webhook_url: "https://yoursite.com/webhook",
redirect_url: "https://yoursite.com/return",
}),
}
);
console.log(await response.json());
Desafio 3DS
Se threeds_authentication: true e o emissor exigir desafio, a resposta retorna status: "pending" com url_3ds. O status final chega via webhook.
Exemplo de resposta
{
"charge_uuid": "51dcca6e-7310-4b73-a94c-90835408f2ff",
"local_currency": 100,
"currency": "BRL",
"type": "credit_card",
"status": "confirmed",
"installment_count": 1,
"installments": [{ "installment_number": 1, "status": "confirmed", "local_currency": 100, "currency": "BRL" }]
}
Ciclo de vida do status
| Status | Significado |
|---|---|
pending | 3DS ou etapa assíncrona em andamento |
confirmed / paid | Autorizado ou capturado com sucesso |
error | Recusado ou falhou |
canceled | Cancelado antes da conclusão |
refunded | Estorno processado |
Transfronteiriço
Em transações transfronteiriças, confirme moeda, bandeira e disponibilidade do método de pagamento. Entre em contato com o suporte para habilitar a configuração desejada.