Estamos revisando estes procedimentos. Pessoas técnicas podem encontrar ajustes em códigos de erro ou mapeamentos de payload; valide com os logs e o OpenAPI mais recente. Pessoas não técnicas podem continuar usando o passo a passo e acionar o time de suporte caso algo pareça diferente do descrito.
🛍️ API de Venda E-commerce
Este guia apresenta o passo a passo para integração com o serviço de vendas online para plataformas de e-commerce, permitindo processar pagamentos com cartão de crédito de forma segura.
🎯 Visão Geral
A API de Venda E-commerce permite que você:
- 💳 Consulte limites e situação de cartões
- 🔐 Crie pré-autorizações para validar vendas online
- 🎫 Use tokens transacionais para maior segurança
- 🔍 Consulte status de transações
- ❌ Desfaça vendas com cartão ou token
- ✅ Capture (efetive) vendas após aprovação
- 📋 Cancele contratos de vendas
URL Base:
- Homologação:
https://apihml.credsystem.com.br/venda-ecommerce/api/v1
🔐 Autenticação
Todos os endpoints requerem autenticação via Bearer Token (JWT).
Header obrigatório:
Authorization: Bearer <seu_token_jwt>
Tokens inválidos ou expirados retornarão erro 401 Unauthorized.
📚 Endpoints Disponíveis
1️⃣ Consultar Limite e Situação do Cartão
Consulta o limite disponível e a situação do cartão antes de realizar uma venda. Use este endpoint para verificar se o cliente tem limite suficiente.
Endpoint: GET /limite-situacao
Parâmetros:
| Parâmetro | Tipo | Local | Obrigatório | Descrição |
|---|---|---|---|---|
Authorization | string | Header | ✅ Sim | Bearer token JWT |
cartao | string | Header | ✅ Sim | Número do cartão |
cpf | string | Header | ✅ Sim | CPF do cliente |
estabelecimento | integer | Query | ✅ Sim | Código do estabelecimento |
valorCompra | number | Query | ✅ Sim | Valor da compra a ser validado |
isInfoPlanos | boolean | Query | ❌ Não | Se deve retornar planos disponíveis (default: false) |
Exemplo de Requisição:
curl -X GET "https://apihml.credsystem.com.br/venda-ecommerce/api/v1/limite-situacao?estabelecimento=12345&valorCompra=250.00&isInfoPlanos=true" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "cartao: 1234567890123456" \
-H "cpf: 12345678901"
Exemplo de Resposta (200 Success):
{
"limiteDisponivel": 5000.00,
"limiteTotal": 10000.00,
"limiteUtilizado": 5000.00,
"situacaoCartao": "ATIVO",
"podeComprar": true,
"planos": [
{
"codigoPlano": "PLANO01",
"descricao": "Parcelamento sem juros - até 3x",
"quantidadeMaxParcelas": 3,
"taxaJuros": 0.00
},
{
"codigoPlano": "PLANO02",
"descricao": "Parcelamento com juros - até 12x",
"quantidadeMaxParcelas": 12,
"taxaJuros": 2.99
}
]
}
Situações do Cartão:
| Situação | Pode Comprar? | Descrição |
|---|---|---|
ATIVO | ✅ Sim | Cartão ativo e funcionando normalmente |
BLOQUEADO | ❌ Não | Cartão bloqueado temporariamente |
CANCELADO | ❌ Não | Cartão cancelado definitivamente |
VENCIDO | ❌ Não | Cartão com validade expirada |
LIMITE_INSUFICIENTE | ❌ Não | Sem limite disponível para a compra |
Consulte o limite antes de exibir as opções de parcelamento no checkout. Assim você mostra apenas as parcelas que o cliente pode realmente utilizar.
2️⃣ Criar Pré-Autorização com Cartão
Cria uma pré-autorização de venda online utilizando dados do cartão de crédito. Este passo valida os dados, verifica o limite disponível e reserva o valor.
Endpoint: POST /pre-autorizacoes
Headers:
| Header | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Authorization | string | ✅ Sim | Bearer token JWT |
Corpo da Requisição:
{
"estabelecimento": "12345",
"cartao": {
"numero": "1234567890123456",
"nome": "JOAO SILVA",
"cvv2": "123",
"validade": "12/2028"
},
"venda": {
"valor": 250.00,
"quantidadeParcelas": 3,
"tipoParcelamento": "LOJA",
"numeroPedido": "PED-2025-001",
"codigoPlano": "PLANO01"
},
"nsu": "123456789012"
}
Campos da Requisição:
| Campo | Tipo | Descrição |
|---|---|---|
estabelecimento | string | Código do estabelecimento e-commerce |
cartao.numero | string | Número do cartão de crédito |
cartao.nome | string | Nome do titular impresso no cartão |
cartao.cvv2 | string | Código de segurança (CVV) |
cartao.validade | string | Data de validade no formato MM/AAAA |
venda.valor | number | Valor total da compra |
venda.quantidadeParcelas | integer | Número de parcelas (1 para à vista) |
venda.tipoParcelamento | string | Tipo: LOJA ou ADMINISTRADORA |
venda.numeroPedido | string | Número do pedido no e-commerce |
venda.codigoPlano | string | Código do plano de parcelamento |
nsu | string | Número Sequencial Único da transação |
Exemplo de Requisição:
curl -X POST "https://apihml.credsystem.com.br/venda-ecommerce/api/v1/pre-autorizacoes" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "Content-Type: application/json" \
-d '{
"estabelecimento": "12345",
"cartao": {
"numero": "1234567890123456",
"nome": "JOAO SILVA",
"cvv2": "123",
"validade": "12/2028"
},
"venda": {
"valor": 250.00,
"quantidadeParcelas": 3,
"tipoParcelamento": "LOJA",
"numeroPedido": "PED-2025-001",
"codigoPlano": "PLANO01"
},
"nsu": "123456789012"
}'
Exemplo de Resposta (200 Success):
{
"StatusCode": 200,
"ReasonPhrase": "OK",
"HttpVersion": "1.1",
"Content": {
"preAutorizacao": 789012,
"mensagem": "Pré-autorização criada com sucesso",
"status": "APROVADO"
}
}
Guarde o número da preAutorizacao - você precisará dele para capturar (confirmar) a venda.
3️⃣ Criar Pré-Autorização com Token Transacional
Cria uma pré-autorização utilizando um token transacional em vez dos dados do cartão. Esta é a forma mais segura, pois não expõe informações sensíveis do cartão.
Endpoint: POST /pre-autorizacoes/token
Headers:
| Header | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Authorization | string | ✅ Sim | Bearer token JWT |
Corpo da Requisição:
{
"estabelecimento": "12345",
"nsu": "123456789012",
"codigoMaquina": "ECOM001",
"token": 123456,
"cpf": "12345678901",
"venda": {
"valor": 250.00,
"quantidadeParcelas": 3,
"tipoParcelamento": "LOJA",
"numeroPedido": "PED-2025-001",
"codigoPlano": "PLANO01"
}
}
Campos da Requisição:
| Campo | Tipo | Descrição |
|---|---|---|
estabelecimento | string | Código do estabelecimento e-commerce |
nsu | string | Número Sequencial Único da transação |
codigoMaquina | string | Código identificador do e-commerce |
token | integer | Token transacional do cliente |
cpf | string | CPF do cliente (titular do cartão) |
venda.valor | number | Valor total da compra |
venda.quantidadeParcelas | integer | Número de parcelas |
venda.tipoParcelamento | string | Tipo: LOJA ou ADMINISTRADORA |
venda.numeroPedido | string | Número do pedido no e-commerce |
venda.codigoPlano | string | Código do plano de parcelamento |
Exemplo de Requisição:
curl -X POST "https://apihml.credsystem.com.br/venda-ecommerce/api/v1/pre-autorizacoes/token" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "Content-Type: application/json" \
-d '{
"estabelecimento": "12345",
"nsu": "123456789012",
"codigoMaquina": "ECOM001",
"token": 123456,
"cpf": "12345678901",
"venda": {
"valor": 250.00,
"quantidadeParcelas": 3,
"tipoParcelamento": "LOJA",
"numeroPedido": "PED-2025-001",
"codigoPlano": "PLANO01"
}
}'
Exemplo de Resposta (200 Success):
{
"StatusCode": 200,
"ReasonPhrase": "OK",
"HttpVersion": "1.1",
"Content": {
"preAutorizacao": 789013,
"mensagem": "Pré-autorização com token criada com sucesso",
"status": "APROVADO"
}
}
- 🔒 Maior segurança - Dados do cartão não trafegam na requisição
- 🚀 Mais rápido - Cliente não precisa digitar dados do cartão novamente
- 💳 Melhor experiência - Checkout simplificado para clientes recorrentes
- ✅ PCI Compliance - Reduz escopo de conformidade PCI DSS
4️⃣ Consultar Status da Pré-Autorização
Consulta o status atual de uma pré-autorização criada.
Endpoint: GET /pre-autorizacoes/sonda/{preautorizacao}
Parâmetros:
| Parâmetro | Tipo | Local | Obrigatório | Descrição |
|---|---|---|---|---|
preautorizacao | string | Path | ✅ Sim | Número da pré-autorização |
Authorization | string | Header | ✅ Sim | Bearer token JWT |
Exemplo de Requisição:
curl -X GET "https://apihml.credsystem.com.br/venda-ecommerce/api/v1/pre-autorizacoes/sonda/789012" \
-H "Authorization: Bearer SEU_TOKEN_JWT"
Exemplo de Resposta (200 Success):
{
"StatusCode": 200,
"ReasonPhrase": "OK",
"HttpVersion": "1.1",
"Content": {
"preAutorizacao": 789012,
"status": "APROVADO",
"valor": 250.00,
"dataHora": "2025-12-03T14:30:00.000Z",
"situacao": "PENDENTE_CAPTURA"
}
}
Possíveis Situações:
| Situação | Descrição | Próximo Passo |
|---|---|---|
PENDENTE_CAPTURA | Pré-autorização aprovada, aguardando captura | Capturar a venda |
CAPTURADO | Venda já capturada (confirmada) | Venda concluída |
CANCELADO | Pré-autorização cancelada | Criar nova pré-autorização |
EXPIRADO | Tempo de captura expirado | Criar nova pré-autorização |
NEGADO | Pré-autorização negada | Verificar limite/dados do cartão |
5️⃣ Desfazer Venda
Desfaz (estorna) uma venda realizada. Use este endpoint quando o cliente solicitar o cancelamento de uma compra ou em caso de erro na transação.
O desfazimento geralmente deve ser realizado em até 30 dias após a captura. Consulte as regras da sua rede.
Desfazer com Dados do Cartão
Endpoint: POST /desfazimento/cartao
Corpo da Requisição:
{
"estabelecimento": "12345",
"valor": 250.00,
"nsu": "123456789012",
"codigoMaquina": "ECOM001",
"cartao": "1234567890123456"
}
Campos da Requisição:
| Campo | Tipo | Descrição |
|---|---|---|
estabelecimento | string | Código do estabelecimento e-commerce |
valor | number | Valor a ser estornado |
nsu | string | NSU da transação original |
codigoMaquina | string | Código identificador do e-commerce |
cartao | string | Número do cartão usado na venda |
Exemplo de Requisição:
curl -X POST "https://apihml.credsystem.com.br/venda-ecommerce/api/v1/desfazimento/cartao" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "Content-Type: application/json" \
-d '{
"estabelecimento": "12345",
"valor": 250.00,
"nsu": "123456789012",
"codigoMaquina": "ECOM001",
"cartao": "1234567890123456"
}'
Exemplo de Resposta (200 Success):
{
"mensagem": "Venda desfeita com sucesso",
"status": "ESTORNADO",
"dataHora": "2025-12-03T16:00:00.000Z",
"nsu": "123456789012"
}
Desfazer com Token
Endpoint: POST /desfazimento/token
Corpo da Requisição:
{
"estabelecimento": "12345",
"valor": 250.00,
"nsu": "123456789012",
"codigoMaquina": "ECOM001",
"token": "123456",
"cpf": "12345678901"
}
Campos da Requisição:
| Campo | Tipo | Descrição |
|---|---|---|
estabelecimento | string | Código do estabelecimento e-commerce |
valor | number | Valor a ser estornado |
nsu | string | NSU da transação original |
codigoMaquina | string | Código identificador do e-commerce |
token | string | Token transacional usado na venda |
cpf | string | CPF do cliente |
Exemplo de Requisição:
curl -X POST "https://apihml.credsystem.com.br/venda-ecommerce/api/v1/desfazimento/token" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "Content-Type: application/json" \
-d '{
"estabelecimento": "12345",
"valor": 250.00,
"nsu": "123456789012",
"codigoMaquina": "ECOM001",
"token": "123456",
"cpf": "12345678901"
}'
Exemplo de Resposta (200 Success):
{
"mensagem": "Venda desfeita com sucesso",
"status": "ESTORNADO",
"dataHora": "2025-12-03T16:00:00.000Z",
"nsu": "123456789012"
}
6️⃣ Capturar (Confirmar) Venda
Confirma e efetiva a venda após a pré-autorização ser aprovada. Este é o passo que realmente debita o valor do cliente.
Endpoint: POST /pre-autorizacoes/captura
A captura deve ser feita em até 5 dias após a pré-autorização. Após esse prazo, a pré-autorização expira.
Corpo da Requisição:
{
"estabelecimento": "12345",
"preAutorizacao": 789012,
"numeroPedido": "PED-2025-001",
"valor": 250.00
}
Campos da Requisição:
| Campo | Tipo | Descrição |
|---|---|---|
estabelecimento | string | Código do estabelecimento e-commerce |
preAutorizacao | integer | Número da pré-autorização a ser capturada |
numeroPedido | string | Número do pedido no e-commerce |
valor | number | Valor a ser capturado (deve ser igual ou menor que o pré-autorizado) |
Exemplo de Requisição:
curl -X POST "https://apihml.credsystem.com.br/venda-ecommerce/api/v1/pre-autorizacoes/captura" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "Content-Type: application/json" \
-d '{
"estabelecimento": "12345",
"preAutorizacao": 789012,
"numeroPedido": "PED-2025-001",
"valor": 250.00
}'
Exemplo de Resposta (200 Success):
{
"StatusCode": 200,
"ReasonPhrase": "OK",
"HttpVersion": "1.1",
"Content": {
"mensagem": "Venda capturada com sucesso",
"numeroContrato": 456789,
"status": "APROVADO",
"dataHora": "2025-12-03T14:35:00.000Z"
}
}
O cliente foi debitado e a venda foi concluída. Você pode liberar o produto/serviço.
7️⃣ Cancelar Contrato
Cancela um contrato de venda já efetivado.
Endpoint: POST /contrato/cancelamento
Corpo da Requisição:
{
"estabelecimento": "12345",
"identificador": "ECOM001",
"contrato": "456789",
"codigoMaquina": "ECOM001",
"cartao": "1234567890123456",
"tarja": "1234567890123456",
"voucher": "VOUCHER123",
"cpf": "12345678901"
}
Campos da Requisição:
| Campo | Tipo | Descrição |
|---|---|---|
estabelecimento | string | Código do estabelecimento e-commerce |
identificador | string | Identificador do e-commerce |
contrato | string | Número do contrato a ser cancelado |
codigoMaquina | string | Código da máquina/terminal |
cartao | string | Número do cartão |
tarja | string | Número do cartão (tarja magnética) |
voucher | string | Voucher do cartão digital (se aplicável) |
cpf | string | CPF do cliente |
Exemplo de Requisição:
curl -X POST "https://apihml.credsystem.com.br/venda-ecommerce/api/v1/contrato/cancelamento" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "Content-Type: application/json" \
-d '{
"estabelecimento": "12345",
"identificador": "ECOM001",
"contrato": "456789",
"codigoMaquina": "ECOM001",
"cartao": "1234567890123456",
"cpf": "12345678901"
}'
Exemplo de Resposta (200 Success):
{
"mensagem": "Contrato cancelado com sucesso",
"contrato": "456789",
"status": "CANCELADO",
"dataHora": "2025-12-03T16:30:00.000Z"
}
🔄 Fluxo Completo de Venda
Fluxo 1: Venda com Dados do Cartão
Fluxo 2: Venda com Token Transacional
📋 Exemplo Prático Completo
Aqui está um exemplo completo em JavaScript de como realizar uma venda no e-commerce:
const API_BASE = 'https://apihml.credsystem.com.br/venda-ecommerce/api/v1';
const TOKEN = 'SEU_TOKEN_JWT';
async function processarVendaEcommerce(dadosCartao, dadosVenda) {
try {
// 1. Consultar limite do cartão
const limiteResponse = await fetch(
`${API_BASE}/limite-situacao?estabelecimento=12345&valorCompra=${dadosVenda.valor}&isInfoPlanos=true`,
{
headers: {
'Authorization': `Bearer ${TOKEN}`,
'cartao': dadosCartao.numero,
'cpf': dadosCartao.cpf
}
}
);
const limite = await limiteResponse.json();
console.log('💰 Limite disponível:', limite.limiteDisponivel);
if (!limite.podeComprar) {
throw new Error('Cliente sem limite disponível');
}
// Exibir planos disponíveis ao cliente
console.log('📋 Planos disponíveis:', limite.planos);
// 2. Criar pré-autorização
const preAuthResponse = await fetch(`${API_BASE}/pre-autorizacoes`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
estabelecimento: '12345',
cartao: {
numero: dadosCartao.numero,
nome: dadosCartao.nome,
cvv2: dadosCartao.cvv2,
validade: dadosCartao.validade
},
venda: {
valor: dadosVenda.valor,
quantidadeParcelas: dadosVenda.parcelas,
tipoParcelamento: 'LOJA',
numeroPedido: dadosVenda.numeroPedido,
codigoPlano: limite.planos[0].codigoPlano
},
nsu: gerarNSU()
})
});
const preAuth = await preAuthResponse.json();
console.log('✅ Pré-autorização criada:', preAuth.Content.preAutorizacao);
if (preAuth.Content.status !== 'APROVADO') {
throw new Error('Pré-autorização negada');
}
// 3. Processar pedido no sistema (separar produto, gerar nota fiscal, etc)
console.log('📦 Processando pedido...');
await processarPedido(dadosVenda.numeroPedido);
// 4. Capturar (confirmar) a venda
const capturaResponse = await fetch(`${API_BASE}/pre-autorizacoes/captura`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
estabelecimento: '12345',
preAutorizacao: preAuth.Content.preAutorizacao,
numeroPedido: dadosVenda.numeroPedido,
valor: dadosVenda.valor
})
});
const captura = await capturaResponse.json();
console.log('🎉 Venda capturada com sucesso!');
console.log('Número do Contrato:', captura.Content.numeroContrato);
// 5. Atualizar status do pedido
await atualizarStatusPedido(dadosVenda.numeroPedido, 'PAGO');
return {
sucesso: true,
numeroContrato: captura.Content.numeroContrato,
preAutorizacao: preAuth.Content.preAutorizacao
};
} catch (error) {
console.error('