Crie a cobrança com cartão
Envie a cobrança de crédito com o cartão, a sessão 3DS, o comprador e o split, e trate os quatro desfechos possíveis.
/api/v1/paymentintentsCrie a cobrança no servidor depois que a coleta do dispositivo terminar. Exemplo de R$ 100,00 em três parcelas:
{
"amount": 10000,
"currency": "BRL",
"paymentMethods": [{
"type": "CreditCard",
"amount": 10000,
"card": {
"number": "5555555555554444",
"expMonth": 12,
"expYear": 2030,
"cvc": "123",
"holderName": "MARIA SOUZA"
}
}],
"paymentMethodOptions": {
"creditCard": {
"installments": 3,
"threeDSecure": "automatic",
"threeDs": { "sessionToken": "3ds_sess_9J4W2C7X5N8QK2R4T6Y8V0H2M4P6A1B3" }
}
},
"customer": {
"name": "Maria Souza",
"email": "maria@example.com",
"document": "12345678909",
"address": { "zipCode": "01310100", "country": "BR" }
},
"split": {
"rules": [{
"recipientId": "ID_DO_RECEBEDOR",
"type": "percentage",
"amount": 100,
"options": { "isPrincipal": true, "chargeMdr": true, "chargebackLiability": true }
}]
},
"postbackUrl": "https://loja.example.com/webhooks/dm",
"metadata": { "orderId": "pedido-card-1001" }
}curl -X POST "$DM_API_BASE/api/v1/paymentintents" \
-H "Authorization: $DM_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: pedido-card-1001-tentativa-1" \
--data-binary @cartao.jsonO número e o código de segurança acima são dados de teste. Para cobrar com um cartão tokenizado, troque o bloco card por { "token": "ctok_…" }; o resto continua igual.
Trate o desfecho
201 Created confirma que a cobrança foi criada. Para saber se a compra foi paga, leia status. Um cartão recusado também volta 201, com status: "Failed".
status | Ação |
|---|---|
Succeeded | Aprovado e capturado. Registre o sucesso no servidor, de forma idempotente. |
Failed | Leia lastPaymentError e mostre ao comprador uma orientação adequada ao motivo. |
Processing | Mantenha o pedido em processamento e acompanhe por consulta ou webhook. |
RequiresAction | Mostre o desafio 3DS indicado em nextAction. |
{
"id": "e092c6cc-8d6f-47d3-8616-df99670286dd",
"object": "payment_intent",
"amount": 10000,
"currency": "BRL",
"status": "Failed",
"lastPaymentError": {
"code": "51",
"message": "Insufficient funds",
"category": "issuer_decline"
}
}O caminho sem autenticação pode devolver a recusa só na resposta do create. Trate sempre a resposta síncrona e use a consulta para reconciliar; não dependa só do webhook de falha.
Captura
Os exemplos usam captura automática e confirmação imediata, que são o padrão: Succeeded já significa autorizado e capturado. Não há chamada de captura a fazer.
Próximos passos
- Opções e dados do cartão: parcelas, débito, moeda, MCC e validações.
- Exiba o desafio 3DS, quando o status for
RequiresAction.