O pagamento por cartão acontece em duas etapas:
- Tokenize os dados sensíveis do cartão em
POST /v1/card-token.
- Crie a transação em
POST /v1/card usando o token gerado.
A tokenização está disponível apenas para empresas com adquirente Avantti.
1. Tokenizar o cartão
curl -X POST 'https://api.avanttifinance.com/v1/card-token' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer SEU_TOKEN' \
-d '{
"number": "4111111111111111",
"holderName": "JOAO SILVA",
"expirationMonth": "12",
"expirationYear": "28",
"cvv": "123"
}'
Número do cartão. Validado pelo algoritmo de Luhn.
Nome do titular impresso no cartão.
Mês de expiração (01–12).
Ano de expiração, com 2 dígitos (28) ou 4 dígitos (2028).
Código de segurança (3 ou 4 dígitos).
Resposta
{
"success": true,
"token": "ct_AbCdEfGhIjKlMnOpQrStUvWxYz1234567890"
}
2. Criar a transação
curl -X POST 'https://api.avanttifinance.com/v1/card' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer SEU_TOKEN' \
-d '{
"postbackUrl": "https://seu-sistema.com/webhooks/avantti",
"amountInCents": 9990,
"description": "Compra Produto X",
"card": {
"cardToken": "ct_AbCdEfGhIjKlMnOpQrStUvWxYz1234567890",
"installments": 1,
"holderName": "JOAO SILVA"
},
"customer": {
"name": "João da Silva",
"email": "joao@email.com",
"documentType": "cpf",
"document": "12345678909",
"phone": "11999999999",
"billingAddress": {
"street": "Rua das Flores",
"number": "100",
"neighborhood": "Centro",
"city": "São Paulo",
"state": "SP",
"zipCode": "01310100"
}
},
"items": [
{ "title": "Produto X", "tangible": false, "quantity": 1, "amountInCents": 9990 }
]
}'
Token gerado em POST /v1/card-token.
Número de parcelas (1 a 12).
Valor total, em centavos.
Resposta
{
"success": true,
"message": "Transação criada com sucesso",
"data": {
"id": "clxyz123abc",
"card": { "token": "ct_...", "brand": "visa", "last4": "1111" },
"status": "paid",
"fees": 350
}
}
Quando a adquirente recusa a transação, o campo data.internalReason pode trazer o motivo.