Pular para o conteúdo principal

🛍️ 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

URLs Base:

  • Homologação: https://apihml.credsystem.com.br/venda-ecommerce/api/v1
  • Produção: https://api.credsystem.com.br/venda-ecommerce/api/v1
📚 Recursos Adicionais

🔐 Autenticação

Esta API utiliza Oracle IDCS com o fluxo Client Credentials (servidor para servidor).

Todos os endpoints requerem autenticação via Bearer Token (JWT) no header:

Authorization: Bearer <seu_token_jwt>
PropriedadeValor
SistemaOracle IDCS
Fluxo OAuth2Client Credentials
TipoServidor para Servidor (sem usuário)
TokenAccess Token (JWT)
Atenção

Tokens inválidos ou expirados retornarão erro 401 Unauthorized.

🔑 Como obter o token?

📚 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 e quais planos estão disponíveis.

Endpoint: GET /limite-situacao

Parâmetros de consulta:

ParâmetroTipoLocalObrigatórioDescrição
cartaostringheader⚠️ Condicional*Número do cartão do cliente
cpfstringheader⚠️ Condicional*CPF do cliente a ser consultado
estabelecimentointegerquery✅ SimCódigo numérico da ESTABELECIMENTO que está realizando a consulta
valorCompranumberquery✅ SimValor da compra a ser validado
isInfoPlanosbooleanquery❌ NãoQuando true, retorna informações detalhadas sobre limites e planos de pagamento disponíveis. Quando false, retorna informações completas do cliente incluindo contratos e parcelas (padrão: false)
⚠️ Condicional

Envie cartao OU cpf — um deles é obrigatório, mas não é necessário enviar ambos.

Exemplos de Requisição:

curl -X GET "https://apihml.credsystem.com.br/venda-ecommerce/api/v1/limite-situacao?estabelecimento=12345&valorCompra=150.00&isInfoPlanos=true" \
-H "Authorization: Bearer SEU_TOKEN_JWT" \
-H "cartao: 1234567890123456" \
-H "cpf: 12345678901"

Exemplo de Resposta (200 Success):

{
"titular": "João da Silva",
"numeroCartao": "1234567890123456",
"nascimento": "01/01/1980",
"limiteDisponivel": 5000.0,
"situacaoCartao": "ATIVO",
"vencimento": "12/2028",
"dataAtivacao": "2024-01-15",
"isHabilitadoCompra": true,
"dscmotivo": "",
"isClienteTombado": false,
"dataUltimaCompra": "2026-03-15",
"temSeguroContratado": false,
"Planos": [
{
"parcelas": 3,
"tipoParcelamento": "ESTABELECIMENTO",
"vencimento": "2026-05-15",
"limiteDisponivel": 5000.0,
"valorParcela": 50.0,
"valorCompra": 150.0,
"valorLimite": 10000.0,
"isComJuros": false,
"codigoPlano": "PLANO01"
}
],
"proximoVencimento": "2026-05-15",
"dataPrimeiraEmissao": "2026-04-13T23:54:45.686Z"
}
🔄 Primeira Compra / Reativação

Se deseja realizar uma Desconto de primeira compra, utilize o campo dataAtivacao:

  • Campo dataAtivacao presente: Cartão já foi ativado anteriormente
  • Campo dataAtivacao ausente ou nulo: Cartão não foi ativado ainda

Situações especiais:

  • Se a situacaoCartao for DESBLOQUEADO ou BLOQUEADO pelo motivo de Emissão, o cliente conseguirá transacionar normalmente na primeira compra
  • Após a primeira compra bem-sucedida, o cartão será automaticamente ativado e desbloqueado por emissão

❗ Possíveis Situações do Cartão:

SituaçãoPode Comprar?Descrição
DESBLOQUEADO✅ SimCartão ativo e funcionando normalmente
BLOQUEADO✅ SimCartão bloqueado por emissão — pode comprar na primeira compra
BLOQUEADO❌ NãoCartão bloqueado temporariamente (verifique dscmotivo para o motivo específico)
CANCELADO❌ NãoCartão cancelado definitivamente
Melhor Prática

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.

Problemas com este endpoint?

Consulte o 🔧 Guia de Troubleshooting - Limite e Situação para erros comuns e ações recomendadas.


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 para captura posterior.

Endpoint: POST /pre-autorizacoes

Corpo da Requisição:

{
"estabelecimento": "12345",
"cartao": {
"numero": "1234567890123456",
"nome": "JOAO SILVA",
"cvv2": "123",
"validade": "12/2028"
},
"venda": {
"valor": 150.00,
"quantidadeParcelas": 3,
"tipoParcelamento": "ESTABELECIMENTO",
"numeroPedido": "PED-2025-001",
"codigoPlano": "PLANO01"
},
"nsu": "123456789012"
}

Campos da Requisição:

CampoTipoObrigatórioDescrição
estabelecimentostring✅ SimCódigo do estabelecimento lojista
cartao.numerostring✅ SimNúmero do cartão OU Voucher do cartão digital
cartao.nomestring✅ SimNome do titular impresso no cartão
cartao.cvv2string✅ SimCódigo de segurança do cartão
cartao.validadestring✅ SimData de validade no formato MM/AAAA
venda.valornumber✅ SimValor total da venda (formato decimal)
venda.quantidadeParcelasinteger✅ SimQuantidade de parcelas (1 para à vista)
venda.tipoParcelamentostring✅ SimTipo de parcelamento: ESTABELECIMENTO ou ADMINISTRADORA
venda.numeroPedidostring✅ SimNúmero do pedido no e-commerce
venda.codigoPlanostring✅ SimCódigo do plano de parcelamento
nsustring✅ SimNúmero Sequencial Único da transação (12 dígitos)

Exemplos 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": 150.00,
"quantidadeParcelas": 3,
"tipoParcelamento": "ESTABELECIMENTO",
"numeroPedido": "PED-2025-001",
"codigoPlano": "PLANO01"
},
"nsu": "123456789012"
}'

Exemplo de Resposta (200 Success):

{
"preAutorizacao": 789012,
"mensagem": "Pré-autorização criada com sucesso",
"status": "APROVADO"
}
Importante

Guarde o número da preAutorizacao - você precisará dele para capturar (confirmar) a venda.

Problemas com este endpoint?

Consulte o 🔧 Guia de Troubleshooting - Pré-autorização com Cartão para erros comuns e ações recomendadas.


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

Corpo da Requisição:

{
"estabelecimento": "12345",
"nsu": "123456789012",
"codigoMaquina": "ECOM001",
"token": 123456,
"cpf": "12345678901",
"venda": {
"valor": 150.00,
"quantidadeParcelas": 3,
"tipoParcelamento": "ESTABELECIMENTO",
"numeroPedido": "PED-2025-001",
"codigoPlano": "PLANO01"
}
}

Campos da Requisição:

CampoTipoObrigatórioDescrição
estabelecimentostring✅ SimCódigo do estabelecimento e-commerce
nsustring✅ SimNúmero Sequencial Único da transação (12 dígitos)
codigoMaquinastring✅ SimCódigo identificador do e-commerce
tokeninteger✅ SimToken transacional do cliente
cpfstring✅ SimCPF do cliente (titular do cartão)
venda.valornumber✅ SimValor total da compra
venda.quantidadeParcelasinteger✅ SimNúmero de parcelas (1 para à vista)
venda.tipoParcelamentostring✅ SimTipo de parcelamento: ESTABELECIMENTO ou ADMINISTRADORA
venda.numeroPedidostring✅ SimNúmero do pedido no e-commerce
venda.codigoPlanostring✅ SimCódigo do plano de parcelamento

Exemplos 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": 150.00,
"quantidadeParcelas": 3,
"tipoParcelamento": "ESTABELECIMENTO",
"numeroPedido": "PED-2025-001",
"codigoPlano": "PLANO01"
}
}'

Exemplo de Resposta (200 Success):

{
"preAutorizacao": 789012,
"mensagem": "Pré-autorização criada com sucesso",
"status": "APROVADO"
}
Vantagens do Token Transacional
  • 🔒 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
Importante

Guarde o número da preAutorizacao - você precisará dele para capturar (confirmar) a venda.

Problemas com este endpoint?

Consulte o 🔧 Guia de Troubleshooting - Pré-autorização com Token para erros comuns e ações recomendadas.


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 de consulta:

  • preautorizacao (string, via query, obrigatório) - Número pré-autorização a ser consultada.

Exemplos 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):

{
"preAutorizacao": 789012,
"status": "APROVADO",
"valor": 200,
"dataHora": "2026-04-13T23:54:45.686Z"
}

Possíveis Situações:

SituaçãoDescriçãoPróximo Passo
PENDENTE_CAPTURAPré-autorização aprovada, aguardando capturaCapturar a venda
CAPTURADOVenda já capturada (confirmada)Venda concluída
CANCELADOPré-autorização canceladaCriar nova pré-autorização
EXPIRADOTempo de captura expiradoCriar nova pré-autorização
NEGADOPré-autorização negadaVerificar limite/dados do cartão
Problemas com este endpoint?

Consulte o 🔧 Guia de Troubleshooting - Consulta Status para erros comuns e ações recomendadas.


5️⃣ 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

Importante

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": 150.00
}

Campos da Requisição:

CampoTipoObrigatórioDescrição
estabelecimentostring✅ SimCódigo do estabelecimento e-commerce
preAutorizacaointeger✅ SimNúmero da pré-autorização a ser capturada
numeroPedidostring✅ SimNúmero do pedido no e-commerce
valornumber✅ SimValor a ser capturado (deve ser igual ou menor que o valor pré-autorizado)

Exemplos 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": 150.00
}'

Exemplo de Resposta (201 Created):

{
"contrato": "950044877",
"valorPrestacao": 200,
"primeiroVencimento": "2025-12-03T14:35:00.000Z",
"comprovante": "Comprovante em formato texto para impressora térmica"
}
🖨️ Formato do Comprovante

O campo comprovante retorna um texto formatado pronto para impressão em impressora térmica. Você pode enviar diretamente para a impressora sem necessidade de processamento adicional.

Venda Confirmada!

O cliente foi debitado e a venda foi concluída. Você pode liberar o produto/serviço.

Problemas com este endpoint?

Consulte o 🔧 Guia de Troubleshooting - Captura para erros comuns e ações recomendadas.


6️⃣ Desfazer Venda

Desfaz (estorna) uma venda online realizada. Use este endpoint quando o cliente solicitar o cancelamento de uma compra ou em caso de erro na transação.

Prazo para Desfazimento

O desfazimento geralmente deve ser realizado no mesmo dia da venda. Verifique as políticas da sua rede.

6️⃣.1️⃣ Desfazer com Dados do Cartão

Desfaz (estorna) uma venda online realizada utilizando os 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:

CampoTipoObrigatórioDescrição
estabelecimentostring✅ SimCódigo do estabelecimento e-commerce
valornumber✅ SimValor a ser estornado
nsustring✅ SimNSU da transação original (12 dígitos)
codigoMaquinastring✅ SimCódigo identificador do e-commerce
cartaostring✅ SimNúmero do cartão usado na venda

Exemplos 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": 150.00,
"nsu": "123456789012",
"codigoMaquina": "ECOM001",
"cartao": "1234567890123456"
}'

Exemplo de Resposta (201 Created):

{
"nsu": "123456789012",
"mensagem": "Venda desfeita com sucesso",
"status": "ESTORNADO"
}
Problemas com este endpoint?

Consulte o 🔧 Guia de Troubleshooting - Desfazimento para erros comuns e ações recomendadas.


6️⃣.2️⃣ Desfazer com Token Transacional

Desfaz (estorna) uma venda online realizada utilizando o token transacional em vez dos dados do cartão.

Endpoint: POST /desfazimento/token

Corpo da Requisição:

{
"estabelecimento": "12345",
"valor": 150.00,
"nsu": "123456789012",
"codigoMaquina": "ECOM001",
"token": "123456",
"cpf": "12345678901"
}

Campos da Requisição:

CampoTipoObrigatórioDescrição
estabelecimentostring✅ SimCódigo do estabelecimento e-commerce
valornumber✅ SimValor a ser estornado
nsustring✅ SimNSU da transação original (12 dígitos)
codigoMaquinastring✅ SimCódigo identificador do e-commerce
tokenstring✅ SimToken transacional usado na venda
cpfstring✅ SimCPF do cliente

Exemplos 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": 150.00,
"nsu": "123456789012",
"codigoMaquina": "ECOM001",
"token": "123456",
"cpf": "12345678901"
}'

Exemplo de Resposta (201 Created):

{
"nsu": "123456789012",
"mensagem": "Venda desfeita com sucesso",
"status": "ESTORNADO"
}
Problemas com este endpoint?

Consulte o 🔧 Guia de Troubleshooting - Desfazimento para erros comuns e ações recomendadas.


7️⃣ Cancelar Contrato

Cancela um contrato de venda online previamente criado.

Endpoint: POST /contrato/cancelamento

Corpo da Requisição:

{
"estabelecimento": "12345",
"identificador": "PDV01",
"contrato": "456789",
"codigoMaquina": "MAQ001",
"cartao": "1234567890123456",
"tarja": "1234567890123456",
"voucher": "VOUCHER123",
"cpf": "12345678901"
}

Campos da Requisição:

CampoTipoObrigatórioDescrição
estabelecimentostring✅ SimCódigo do estabelecimento e-commerce
identificadorstring✅ SimIdentificador do ponto de venda (PDV)
contratostring✅ SimNúmero do contrato a ser cancelado
codigoMaquinastring✅ SimCódigo da máquina/terminal
cartaostring⚠️ Condicional*Número do cartão
tarjastring⚠️ Condicional*Número do cartão (tarja magnética)
voucherstring⚠️ Condicional*Voucher do cartão digital (para cartões digitais)
cpfstring✅ SimCPF do cliente
⚠️ Condicional

Envie cartao OU tarja OU voucher — um deles é obrigatório, mas não é necessário enviar mais de um.

Exemplos 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": "PDV01",
"contrato": "456789",
"codigoMaquina": "MAQ001",
"cartao": "1234567890123456",
"tarja": "1234567890123456",
"cpf": "12345678901"
}'

Exemplo de Resposta (200 Success):

{
"StatusCode": 200,
"ReasonPhrase": "OK",
"HttpVersion": "1.1",
"Content": {
"mensagem": "Cancelamento realizado com sucesso",
"contrato": "456789",
"status": "CANCELADO",
"dataHora": "2025-12-03T16:30:00.000Z"
}
}
Problemas com este endpoint?

Consulte o 🔧 Guia de Troubleshooting - Cancelamento de Contrato para erros comuns e ações recomendadas.


🔄 Fluxo Completo de Venda

Fluxo 1: Venda com Dados do Cartão

Fluxo 2: Venda com Token Transacional


💡 Dicas e Boas Práticas

✅ Recomendações

  1. Valide os dados antes de enviar - Verifique CPF, valores e códigos localmente antes de fazer a requisição
  2. Armazene o traceId - Use para rastrear problemas com o suporte técnico
  3. Implemente retry com backoff - Em caso de erro 503, tente novamente após alguns segundos
  4. Cache de tokens - Evite gerar novos tokens a cada requisição
  5. Valide pré-autorizações - Sempre consulte o status antes de efetivar
  6. Desfazimento no mesmo dia - Implemente controle para permitir desfazimento apenas no dia da efetivação

❌ Evite

  1. ❌ Não exponha o token JWT no frontend
  2. ❌ Não tente efetivar pré-autorizações manualmente
  3. ❌ Não ignore os códigos de status HTTP
  4. ❌ Não faça polling excessivo no endpoint de status

🆘 Suporte

Contato Técnico

Em Caso de Erro

  1. Anote o traceId retornado no erro
  2. Capture a requisição completa (sem dados sensíveis)
  3. Descreva o comportamento esperado vs. obtido
  4. Envie para o email de suporte com assunto: [API Venda Ecommerce] - Descrição do Problema