CaktoDevelopers
Pagamentos

Cartão Simples

Pagamento com cartão de crédito sem 3DS em 3 passos.

Cartão Simples

Fluxo de pagamento com cartão sem autenticação 3DS. Use quando o risco de chargeback é baixo ou você quer a implementação mais simples.

Resumo

1. [mount]  dftp.init({ attemptReference: fraudSessionId })
2. [submit] await dftp.profileCompleted()
3. [submit] POST /api/checkout/ → resposta final

Request

POST {BASE_URL}/api/checkout/
Content-Type: application/json
Authorization: Token {API_TOKEN}
{
  "user": 42,
  "paymentMethod": "credit_card",
  "amount": "149.90",
  "installments": 3,
  "antifraud_profiling_attempt_reference": "550e8400-e29b-41d4-a716-446655440000",

  "card": {
    "number": "4111111111111111",
    "holderName": "JOAO DA SILVA",
    "expMonth": "12",
    "expYear": "2029",
    "cvv": "123"
  },

  "customer": {
    "name": "João da Silva",
    "email": "joao@example.com",
    "phone": "11999999999",
    "docType": "cpf",
    "docNumber": "12345678900",
    "birthDate": "1990-05-15",
    "ip": "189.10.20.30"
  },

  "address": {
    "street": "Rua das Flores",
    "number": "123",
    "complement": "Apto 4B",
    "neighborhood": "Centro",
    "city": "São Paulo",
    "state": "SP",
    "zipcode": "01310100",
    "country": "BR"
  },

  "items": [
    {
      "title": "Curso de Marketing Digital",
      "externalRef": "PROD-001",
      "unitPrice": "149.90",
      "quantity": 1,
      "tangible": false
    }
  ],

  "postbackUrl": "https://sua-loja.com/webhooks/cakto",
  "checkoutUrl": "https://sua-loja.com/checkout"
}

Resposta — aprovado

{
  "id": "8f14e45f-ceea-467a-a866-051f0a",
  "status": "paid",
  "amount": 149.9,
  "paidAmount": 149.9,
  "liquidAmount": 143.52,
  "fee": 6.38,
  "installments": 3,
  "tid": "0505096727000195830101",
  "return_code": "4",
  "acquirerType": "cielo",
  "currency": "BRL",
  "card": {
    "lastDigits": "1111",
    "holderName": "JOAO DA SILVA",
    "brand": "visa",
    "token": null
  },
  "customer": {
    "name": "João da Silva",
    "email": "joao@example.com",
    "phone": "11999999999",
    "docNumber": "12345678900",
    "docType": "cpf"
  }
}

Resposta — recusado

{
  "id": "7c8e1234-abcd-4567-b891-000000",
  "status": "declined",
  "amount": 149.9,
  "paidAmount": 0,
  "reason": "Não Autorizada",
  "return_code": "51",
  "merchant_advice_code": null,
  "acquirerType": "cielo"
}

Checklist de implementação

  • Script Nethone carregado no HTML (não sob demanda)
  • fraudSessionId gerado no mount com crypto.randomUUID()
  • dftp.init() chamado no mount
  • dftp.profileCompleted() chamado no início do submit
  • Mesmo UUID enviado em antifraud_profiling_attempt_reference
  • docType em minúsculas: "cpf" ou "cnpj"
  • zipcode sem pontos ou traços (somente 8 dígitos)
  • country como "BR" (ISO 3166-1 Alpha-2)
  • Credenciais no servidor (BFF) — nunca no bundle do cliente

Para a implementação completa em React com o hook useCaktoCheckout, consulte SDK React.