Comunidade
Divergência entre Recebedor e Destinatário na cotação gerada via API
Contexto
Estamos realizando uma integração via API com a Rodonaves em um e-commerce.
Ao confirmar um pedido com frete Rodonaves, nosso sistema executa duas chamadas em sequência:
POST /api/v1/customer/savecustomer— cadastra/atualiza o destinatário com os dados do pedidoPOST /api/v1/gera-cotacao— gera a cotação oficial com protocolo
O problema
Na tela da cotação gerada no sistema de vocês, os campos Recebedor e Destinatário estão exibindo endereços diferentes. Por causa dessa divergência, a operação não está aceitando a cotação.
O que já analisamos
Mapeamento que identificamos
Pela análise da documentação e dos logs, entendemos que os campos funcionam assim:
Campo no payload do gera-cotacao | Campo exibido na tela |
|---|---|
ReceiverCpfcnp (busca o perfil do CPF na base de vocês) | Recebedor |
DestinationAddress (endereço de entrega que enviamos explicitamente) | Destinatário |
Com base nisso, o Destinatário está correto — ele vem do DestinationAddress que enviamos no payload. O problema está no Recebedor, que lê o perfil cadastrado para o ReceiverCpfcnp na base de vocês.
O que o saveCustomer está retornando
saveCustomer está retornandoChamamos o savecustomer antes de cada gera-cotacao para garantir que o CPF esteja cadastrado e com o endereço de entrega correto. Porém, analisando o retorno da API, identificamos o seguinte no endereço criado/atualizado:
"Type": "FISCO",
"TypeDescription": "Fiscal/Principal",
"IsDelivery": false,
"Origin": "LOG"
O endereço criado pelo savecustomer é do tipo Fiscal e não é marcado como
endereço de entrega (IsDelivery: false).
Nossa hipótese
O savecustomer cria/atualiza um endereço do tipo FISCO, mas o gera-cotacao
pode estar usando uma fonte de dados diferente para preencher o Recebedor —
possivelmente o endereço principal/original do cliente cadastrado na base de vocês,
que é diferente do endereço FISCO que criamos.
Isso explicaria por que mesmo chamando o savecustomer com o endereço correto antes
do gera-cotacao, o Recebedor continua exibindo um endereço diferente do
Destinatário.
Detalhe importante: os CPFs usados nos testes já possuíam cadastro anterior na
base de vocês, com endereço diferente do endereço de entrega do pedido.
---
Exemplo real
Payload enviado ao savecustomer:
{
"Description": "Nome do Cliente",
"TaxIdRegistration": "***********",
"Email": "[email protected]",
"Phone": "***********",
"ZipCode": "********",
"Street": "Rua Exemplo",
"Number": "100",
"Supplement": "",
"District": "Centro",
"City": "Cidade Exemplo",
"UnitFederation": "UF"
}
Trecho do payload enviado ao gera-cotacao:
{
"ReceiverCpfcnp": "***********",
"ContactName": "Nome do Cliente",
"ContactPhoneNumber": "***********",
"DestinationAddress": {
"Address": "Rua Exemplo",
"Number": "100",
"Supplement": "",
"District": "Centro",
"City": "Cidade Exemplo",
"UnitFederation": "UF",
"ZipCode": "********"
}
}
Ambos os payloads carregam o mesmo endereço. Mesmo assim, os campos Recebedor
e Destinatário exibem endereços diferentes na tela da cotação.
Dúvidas
-
O endereço exibido no campo Recebedor da cotação vem do perfil cadastrado via savecustomer, ou de outra fonte de dados?
-
O endereço do tipo FISCO criado pelo savecustomer (IsDelivery: false) é o mesmo que o gera-cotacao utiliza para preencher o Recebedor? Ou o gera-cotacao lê um endereço de tipo diferente (por exemplo, IsDelivery: true)?
-
Para CPFs que já possuíam cadastro anterior na base de vocês (com endereço diferente), o savecustomer atualiza o endereço existente ou cria um endereço adicional sem sobrescrever o original? Se criar um adicional, como forçar a atualização do endereço principal que o gera-cotacao utiliza?
-
Existe algum parâmetro no savecustomer para definir o tipo do endereço (por exemplo, para criar um endereço de entrega com IsDelivery: true em vez de FISCO)? Isso resolveria o problema?
-
Qual é o fluxo correto, via API, para garantir que Recebedor e Destinatário exibam o mesmo endereço de entrega na tela da cotação?
Objetivo
Garantir que, ao gerar uma cotação via API, os campos Recebedor e Destinatário exibam sempre o mesmo endereço de entrega — sem divergência — para que a cotação seja aceita pela operação.
Qualquer orientação sobre como estruturar as chamadas ou quais parâmetros utilizar será muito bem-vinda.
Fico no aguardo, grato desde já.
