Primeiros Passos
Quick Start
Faça seu primeiro pagamento em menos de 10 minutos.
Quick Start
O que você vai precisar
API_TOKENeMERCHANT_IDfornecidos 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
- Autenticação — Formato do header
Authorization: Token - Ambientes — Staging (
api.scpay.com.br) vs Produção (api.cakto.com.br) - Detecção de fraude — Setup obrigatório
- Cartão + 3DS — Proteção contra chargeback