Incluir Venda
Primeira etapa: Consulta SPC
O primeiro passo para o processo de venda é o envio de uma requisição do tipo POST
para o endpoint {{ BASE_API_URL }}/v1/cliente/consulta-spc
passando no corpo da requisição um objeto ClienteDTO com o CPF do cliente que deseja realizar a venda, bem como a identificação da loja que está realizando a venda.
Exemplo de payload para consulta do SPC
{
"cpf": "222.570.550-04",
"empresaId": 398,
"lojaId": 441,
"redeId": 201
}
Exemplo de response do retorno de consulta ao SPC
{
"id": 343290,
"mensagem": null,
"permissao": null,
"dataInicial": null,
"dataFinal": null,
"dataCadastro": "2023-05-19",
"lojaId": 441,
"redeId": 201,
"empresaId": 398,
"nome": "NOME CLIENTE",
"cpf": "36257055874",
"segmentacao": null,
"tipoDocumento": "CNH",
"identidade": "121317724",
"orgaoEmissor": "ssp",
"dataEmissao": "2001-01-01",
"uf": "SC",
"grupo": "B",
"dataNascimento": "1953-09-24",
"naturalEstado": "RS",
"naturalCidade": 4314902,
"sexo": "F",
"estadoCivil": "D",
"dependentes": 0,
"nomePai": "",
"nomeMae": "NOME DA MÃE CLIENTE",
"telResidencial": "(48) 3011 - 9299",
"celular": "(48) 95532 - 8888",
"email": "seu-email@gmail.com",
"escolaridade": "SEGUNDO_GRAU_COMPLETO",
"rendaPrincipal": 5000.00,
"enderecoAlternativo": null,
"endereco": {
"cep": "88070-700",
"logradouro": "Rua Professora Antonieta de Barros",
"numero": "732",
"complemento": null,
"bairro": "Canto",
"estado": "SC",
"cidadeIbge": 4205407,
"cidadeNome": "Florianópolis"
},
"tipoResidencia": "P",
"tempoResidenciaAnos": null,
"tempoResidenciaMeses": null,
"resideDesde": "01/1994",
"empresa": "aposentado",
"cargo": "Pensionista",
"tempoEmpregoAnos": null,
"tempoEmpregoMeses": null,
"telComercial": "(48) 3209 - 5961",
"ramal": null,
"nomeRef1": "pablo",
"relacaoRef1": "A",
"telRef1": "(48) 99837 - 8287",
"nomeRef2": "gisa",
"relacaoRef2": "A",
"telRef2": "(48) 99858 - 1509",
"nomeRef3": null,
"relacaoRef3": null,
"telRef3": null,
"nomeRef4": null,
"relacaoRef4": null,
"telRef4": null,
"status": "NORMAL",
"trabalhaNessaEmpresaDesde": "01/2000",
"permitirEnvioSPC": true,
"jaTemCadastroNaLoja": true,
"negativadoSpc": false,
"provedor": null,
"outroProvedor": null,
"flagAutorizacao": null,
"autorizaCompra": true,
"enderecoSecundario": null,
"outrasRendas": 0.00,
"limiteCompartilhado": 3000.00,
"tipoClienteScore": "RESTRITO",
"observacoes": null,
"descricao": null,
"observacao": null,
"assuntoObs": null,
"exibirNaLojaObs": null,
"exibirAte": null,
"exibirMsg": null,
"mensagemErro": null,
"limitesPreAprovado": {
"id": null,
"mensagem": null,
"permissao": null,
"faixaInicial1": 1000.00,
"faixaFinal1": 1000.00,
"peEntrada1": 0.00,
"faixaInicial2": 1000.00,
"faixaFinal2": 1000.00,
"peEntrada2": 0.00,
"faixaInicial3": 1000.00,
"faixaFinal3": 1000.00,
"peEntrada3": 0.00,
"flgAnaliseVisual": false,
"grupo": "B"
},
"valorAluguel": null,
"empregoCBO": 2670,
"score": 754
}
Segunda etapa: Cálculo da venda
No response da primeira etapa, que está exemplificada acima, recebemos todos os dados necessários para a realização da venda, bem como o score do cliente e o limite disponível para compra.
Para prosseguir com a simulação de venda, devemos enviar uma requisição do tipo POST
para o endpoint {{ BASE_API_URL }}/v1/venda/calcular
passando no corpo da requisição um objeto CalcularVendaDTO com os dados do cliente e da loja que está realizando a venda.
Exemplo de payload para calcular a venda
{
"autorizacaoId": null,
"clienteId": 343290,
"diasPrimeiraParcela": null,
"flagAutorizacao": false,
"formaPagamento": "CARNE", // as opções disponiveis serão listadas no response do endpoint /v1/loja/{id}/dadosvenda/{planoId}
"lojaId": 441,
"nomeProduto": "teste",
"parcelaSelecionada": null,
"planoPagamentoId": 11, // recuperar valor do endpoint /v1/loja/{id}/planospagamento
"vlEntrada": null,
"vlProduto": "1.000,00"
}
Exemplo de response do cálculo da venda
[
{
"vlPrimeiraParcela": 1001.69,
"vlDemaisParcela": 1001.69,
"vlEntrada": 0,
"vlParcelaSemTaxaJuros": 1000.00,
"qtdParcela": 1,
"jurosFinanc": 0,
"tarifa": 1.69,
"planoPagamentoId": 11,
"valorTotal": 1001.69
},
...
...
{
"vlPrimeiraParcela": 101.69,
"vlDemaisParcela": 101.69,
"vlEntrada": 0,
"vlParcelaSemTaxaJuros": 100.00,
"qtdParcela": 10,
"jurosFinanc": 0,
"tarifa": 1.69,
"planoPagamentoId": 11,
"valorTotal": 1016.90
}
]
Terceira etapa: Geração do código de autorização
No response da segunda etapa, que está exemplificada acima, recebemos todas as opções de parcelamento disponíveis para o cliente, bem como o valor total da venda e o valor da primeira parcela. Com esses dados, podemos prosseguir com a venda.
Após selecionada a opção de parcelamento, devemos enviar uma requisição do tipo POST
para o endpoint {{ BASE_API_URL }}/v1/codigo-autorizacao/gerar
passando no corpo da requisição um objeto CodigoAutorizacaoDTO com os dados do cliente e da loja que está realizando a venda.
Exemplo de payload de solicitação de código de autorização
{
"tipo": "WHATSAPP",
"destino": "(48) 97732 - 8888",
"nomeCliente": "NOME DO CLIENTE",
"lojaId": 441,
"nomeProduto": "teste",
"valorProduto": "1.005,06",
"qtdParcela": "3",
"valorParcela": "335,02"
}
Exemplo de response de solicitação de código de autorização
{
"id": 1,
"tipo": "WHATSAPP",
"destino": "(48) 97732 - 8888",
"nomeCliente": "NOME DO CLIENTE",
"lojaId": 441,
"nomeProduto": "teste",
"valorProduto": "1.005,06",
"qtdParcela": "3",
"valorParcela": "335,02"
}
Quarta etapa: Confirmação do código de autorização e finalização da venda
No response da terceira etapa, que está exemplificada acima, recebemos o id do código de autorização que foi gerado para a venda. Com esse id, podemos prosseguir com a venda.
Após o cliente confirmar o código de autorização, devemos enviar uma requisição do tipo POST
para o endpoint {{ BASE_API_URL }}/v1/codigo-autorizacao/confirmar
passando no corpo da requisição um objeto CodigoAutorizacaoDTO com o id que retornou no objeto do response da etapa anterior e o código de autorização que o cliente informou.
Exemplo de payload na confirmação do código autorização
{
"codigo": "1022",
"id": 1532
}
Após receber o response da etapa anterior com status de sucesso, devemos enviar uma requisição do tipo POST
para o endpoint {{ BASE_API_URL }}/v1/venda/vender
passando no corpo da requisição um objeto CalcularVendaDTO com os dados do cliente e da loja que está realizando a venda, bem como o id do código de autorização que foi gerado para a venda.
Exemplo de payload para finalização da venda
{
"autorizacaoId": 1532,
"clienteId": 343290,
"diasPrimeiraParcela": null,
"flagAutorizacao": false,
"formaPagamento": "CARNE",
"lojaId": 441,
"nomeProduto": "teste",
"parcelaSelecionada": {
"jurosFinanc": 0,
"planoPagamentoId": 11,
"qtdParcela": 3,
"tarifa": 1.69,
"valorTotal": 1005.06,
"vlDemaisParcela": 335.02,
"vlEntrada": 0,
"vlParcelaSemTaxaJuros": 333.33,
"vlPrimeiraParcela": 335.02,
"planoPagamentoId": 11
},
"vlEntrada": null,
"vlProduto": "1.000,00"
}
Exemplo de response da finalização de inclusão da venda
{
"id":678200,
"mensagem":null,
"permissao":null,
"carneId":693790
}
Em caso de sucesso na inclusão da venda será retornado um objeto CalcularVendaDTO com o id da venda e o id do carnê gerado para a venda. Com esses dados, podemos prosseguir com a impressão do carnê, conforme demonstrado na seção Imprimir Carnê.
Endpoints para busca de dados adicionais para a venda:
Para efetuar as requisições aos endpoints anteriores, durante o processo de inclusão de venda, serão necessários alguns dados adicionais que podem ser obtidos através dos seguintes endpoints:
Obter limite disponível para compra
É enviada uma requisição do tipo GET
para o endpoint abaixo, passando como
parâmetro o id do cliente e o id da loja, que irá retornar um number
com o
valor do limite disponível do cliente.
{{ BASE_API_URL }}/v1/cliente/{id}/limite-disponivel/{lojaId}
Obter percentuais mínimos de entrada
É enviada uma requisição do tipo GET
para o endpoint abaixo, passando como
parâmetro o id do cliente e o id da loja. O response irá retornar um objeto RegraGrupoLimiteCreditoDTO
contendo os percentuais mínimos de entrada, conforme a faixa de valor da
compra, dentro do limite disponivel e de acordo com o score do cliente.
{{ BASE_API_URL }}/v1/cliente/{id}/score/{lojaId}
{
"id": null,
"mensagem": null,
"permissao": null,
"faixaInicial1": 0.00,
"faixaFinal1": 2000.00,
"peEntrada1": 0.00,
"faixaInicial2": 2000.01,
"faixaFinal2": 2500.00,
"peEntrada2": 20.00,
"faixaInicial3": 2500.01,
"faixaFinal3": 3000.00,
"peEntrada3": 30.00,
"flgAnaliseVisual": false,
"grupo": "B"
}
Obter parâmetros para a venda
É enviada uma requisição do tipo GET
para o endpoint abaixo, passando como
parâmetro o id da loja. O response irá retornar um objeto VenderDTO contendo os parâmetros de venda cadastrados para a loja selecionada, como por exemplo, as formas de pagamento disponíveis, tarifas bancárias, contato da loja, etc.
{{ BASE_API_URL }}/v1/loja/{id}/dadosvenda/{planoId}
{
"lojaId": 437,
"vlTarifaParcelaBanco": 5.50,
"vlTarifaParcelaLoja": 0.00,
"vlLimitePreAprovado": null,
"nomeProduto": null,
"vlProduto": null,
"vlEntrada": null,
"qtdParcela": null,
"vlParcela": null,
"codigoAutorizacao": null,
"parcelarEm": 10,
"formasPagamento": [
"BOLETO"
],
"lojistaEmail": "financeiro@gruposoldi.com.br",
"lojistaTelefone": "(47) 99222 - 0564"
}
Obter planos de pagamento disponíveis
É enviada uma requisição do tipo GET
para o endpoint abaixo, passando como
parâmetro o id da loja. O response irá retornar um array de objetos CodigoDescricaoDTO contendo os planos de pagamento cadastrados para a loja selecionada.
{{ BASE_API_URL }}/v1/loja/{id}/planospagamento
[
{
"id": 7,
"descricao": "Plano 10x c/juros 27,00% - 40 dias - Parc Mín de R$ 30,00"
}
]
Para mais informações, acesse a documentação da API:
{{ BASE_API_URL }}/v1/carne/gera-carne-pdf/{id}