CaktoDevelopers
Primeiros Passos

Quick Start

Faça seu primeiro pagamento em menos de 10 minutos.

Quick Start

O que você vai precisar

  • API_TOKEN e MERCHANT_ID fornecidos pela Cakto no onboarding
  • URL do script Nethone (fornecida separadamente)
  • Node.js 18+ (para Next.js / React) ou qualquer linguagem com suporte a HTTP

Passo 1 — Instale os scripts no HTML do checkout

<!-- Antifraude: carregar na página de checkout, não sob demanda -->
<script src="{NETHONE_SCRIPT_URL}" async></script>

<!-- 3DS Cielo (somente se usar 3DS) — staging (mpisandbox = Braspag staging) -->
<script src="https://mpisandbox.braspag.com.br/Scripts/BP.Mpi.3ds20.min.js" async></script>
<script src="https://songbird.cardinalcommerce.com/edge/v1/songbird.js" async></script>

Passo 2 — Inicialize a detecção de fraude

const fraudSessionId = crypto.randomUUID()
window.dftp?.init({ attemptReference: fraudSessionId })

Faça isso no mount do componente de checkout. O mesmo UUID vai no campo antifraud_profiling_attempt_reference do pagamento.

Passo 3 — Feche o rastreamento e submeta

// Primeira linha do handleSubmit
await window.dftp?.profileCompleted()

// Depois submeta o pagamento (via seu BFF — nunca exponha o token no cliente)
const response = await fetch('/api/cakto/checkout', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    user: MERCHANT_ID,
    paymentMethod: 'credit_card',
    amount: '149.90',
    installments: 1,
    antifraud_profiling_attempt_reference: fraudSessionId,
    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',
    },
    address: {
      street: 'Rua das Flores',
      number: '123',
      neighborhood: 'Centro',
      city: 'São Paulo',
      state: 'SP',
      zipcode: '01310100',
      country: 'BR',
    },
    items: [{ title: 'Produto', unitPrice: '149.90', quantity: 1 }],
    postbackUrl: 'https://sua-loja.com/webhooks/cakto',
  }),
})

const payment = await response.json()
if (payment.status === 'paid') {
  // Liberar acesso ao produto
}

O API_TOKEN deve ficar somente no servidor. Use um BFF (Next.js) para fazer as chamadas autenticadas e expor apenas um endpoint sem autenticação para o frontend.

Próximos passos