As APIs de Débitos Veiculares da Celcoin são consideradas assíncronas, pois seguem um fluxo específico para cada requisição. Veja como funciona:
- Recebemos os dados da requisição;
- Confirmamos o recebimento;
- Disparamos um webhook de forma assíncrona, contendo as informações sobre a consulta ou confirmação do pagamento.
Todos os webhooks enviados pela Celcoin são assíncronos. Ou seja, após realizar uma consulta, você precisará aguardar o envio do webhook para a URL configurada, que trará as informações sobre os débitos pendentes do veículo consultado. Da mesma forma, ao criar um pagamento, o webhook informará a confirmação sobre o processamento da transação.
Exemplos de retornos assíncronos:
Webhook retornado após uma consulta:
Se o veículo não tiver débitos pendentes, será enviado um webhook com essa informação.
Exemplo de webhook para veículos sem débitos:
{ "type": "VehicleWithoutDebts", "transactionId": 817622466, "clientRequestId": "0a384059-eaf0-4240-9dc7-f4125671b4c9", "vehicle": { "uf": "DF", "document": "3138777503", "licensePlate": "RCK0E56", "renavam": "33864569420" } }
Se o veículo não for encontrado, será enviado um webhook informando essa situação.
Exemplo de webhook para veículos não encontrados:
{ "type": "VehicleNotFound", "transactionId": 817211803, "clientRequestId": "0a384059-eaf0-4240-9dc7-f4125671b4c9" }
Se houver débitos pendentes, a informação será retornada conforme o exemplo abaixo.
Exemplo de webhook para débitos pendentes:
{ "type": "debts", "transactionId": 9393366, "clientRequestId": "teste hml 20221014 01", "vehicle": { "uf": "DF", "document": "11111111111", "licensePlate": "JFI8753", "renavam": "56387604559" }, "debts": [ { "id": "28850DB5-05EA-4461-A84A-EE04EF9B545D", "amount": 204.79, "title": "Infração Vencida - I004242123", "description": "I004242123 - Infração de Trânsito", "dueDate": "2022-10-14T00:00:00", "expirationDate": "2022-10-14T00:00:00", "hasDiscount": false, "isExpired": true, "type": "ticket", "year": null, "required": false, "dependsOn": [], "distinct": [] } ] }
Webhook retornado após um pagamento:
A Celcoin envia dois tipos de comprovantes: um informando que o pagamento foi aceito (Comprovante Celcoin) e outro indicando que o órgão responsável aceitou o pagamento (Comprovante de Liquidação).
Exemplo de webhook quando o pagamento é aceito pela Celcoin:
{ "type": "receipt", "paymentId": "29C32257-2DDB-41B0-9BB0-4CB64783443F", "receipt": { "licensePlate": "DIS9865", "renavam": "01203988813", "state": "DF", "description": "Licenciamento 2022", "debtId": "312D6A5F-2B5A-4694-84DA-F640FC01CC74", "amount": 1009.36, "authentication": "F2.2D.2C.32.74.24.11.59.81.C1.FD.C2.91.A3.BF.93", "dueDate": "2022-12-28T00:00:00", "clientRequestId": "29d648b8-594f-436c-ba53-a543fdaf9467", "year": 2022, "payDate": "2022-12-28T00:00:00" } }
Exemplo de Comprovante de Liquidação do órgão:
{ "type": "settlement-events", "transactionId": 000, "status": "SUCCESS", "paymentId": "29C32257-2DDB-41B0-9BB0-4CB64783443F", "clientRequestId": "29d648b8-594f-436c-ba53-a543fdaf9467", "debtId": "312D6A5F-2B5A-4694-84DA-F640FC01CC74", "body": { "metaDetran": [ {"state": "DF"}, {"licensePlate": "DIS9865"}, {"renavam": "01203988813"}, {"document": "03477457650"}, {"nsuDetran": "10000008"}, {"settlementBank": "Bradesco"}, {"settlementDateTime": "2022-12-28T00:00:00"}, {"amount": "1009.36"}, {"dueDate": "2022-12-28T00:00:00"}, {"debitType": "licensing"}, {"year": "2023"}, {"debtDescription": "Licenciamento 2023"} ] } }
Se houver falha no pagamento, um webhook será enviado informando o erro.
Exemplo de webhook de falha no pagamento:
{ "type": "debitNotAuthorized", "paymentId": "1C49892E-0594-4E2D-AA8D-0FF2DC735798", "clientRequestId": "1671047351", "processedDate": "2022-12-14T17:05:33", "errorCode": "900", "errorMessage": "Transação não autorizada", "debitId": "2610EF2D-BE83-49D6-806A-590A84B9F79D" }
Quais são os retornos considerados síncronos?
Os retornos síncronos são aqueles que vêm diretamente na resposta da chamada à API de Consulta ou de Pagamento.
- Na API de Consulta, quando a resposta da requisição for "200", será informada a mensagem "processing" de forma síncrona.
- Na API de Pagamento, como o processamento do pagamento leva algum tempo, o retorno da requisição com status "200" será a mensagem: "Solicitação recebida com sucesso. Aguarde a resposta do processamento no webhook cadastrado."
Quando ocorre um erro síncrono, normalmente ele está relacionado a algum formato incorreto nos campos da requisição, como uma sequência inválida ou o envio de uma propriedade de tipo errado.
Exemplos de erros síncronos:
- Response da API de Consulta:
Para conferir os tipos de erro da API de Consulta de Débitos Veiculares, acesse a tabela de erros da API de Consulta.
- Response da API de Pagamento:
Se algum débito dependente não for incluído na solicitação de pagamento, o erro retornado será:
{ "transactionId": 9391165, "message": "Existem débitos dependentes que devem ser pagos juntos ao débito informado", "execute": "2022-09-30 14:41:56", "errorCode": "815" }
Se um débito não deve ser pago junto com outro (distinto), a API retornará:
{ "transactionId": 9391167, "message": "Existem débitos que não podem ser pagos em conjunto", "execute": "2022-09-30 14:40:56", "errorCode": "817" }
Se um débito obrigatório não for incluído na solicitação de pagamento, o erro será:
{ "transactionId": 815949758, "message": "Existem débitos obrigatórios que devem ser pagos", "execute": "2022-09-30 14:33:35", "errorCode": "816" }
Para mais detalhes sobre débitos distintos, dependentes e obrigatórios, recomendamos a leitura da documentação sobre débitos dependentes, distintos e obrigatórios.
Além desses erros, outros podem ser retornados na resposta da API de Pagamento. Para consultar todos os erros possíveis, acesse a tabela de erros da API de Pagamentos de Débitos Veiculares.
Comentários
0 comentário
Artigo fechado para comentários.