Cálculo externo de frete por CEP
Para que o cálculo de frete seja feito por sistemas externos, basta criar um conversor JSON, que receberá os dados do pedido e os CEPs de origem e destino. Este conversor deverá retornar um JSON com as opções de frete e os seus respectivos valores. Opcionalmente retornará também o prazo de entrega de cada opção.
Seguem abaixo os formatos do JSON que enviaremos para a URL de integração e do JSON que esperamos receber como retorno. Esta URL deverá ser informada no caminho ENVIO & FRETE > Cálculo externo > Outros serviços, no site administrativo da loja. Para utilizar esta URL, selecione a opção Outros no campo Serviço remoto, no topo deste caminho.
1 - ENVIO
quote={
"freightQuoteRequest":{
"fromCEP": "99999-999",
"toCEP": "99999-999",
"totalAmount": 9999.99,
"totalWeight": 9999.99,
"hasBulky": true,
"calculationParameters":{
"giftPacking": 99,
"packagePrice": 99.99,
"fixedFreight": 99.99,
"insurancePercentage": 9.99,
"additionalValue": 9.99,
"additionalWeight": 9.99,
"additionalDays": 9,
"freightMultiplier": 9.99,
"freeFreightForZeroWeight": true,
"partnerId": 999999,
"partnerFreightDiscount": 99.99
},
"products":[
{
"id": 99999999,
"sku": "aaaaaaaaa",
"name": "aaaaaaaaaaaa",
"category": "bbbbbbbb",
"barcode": "12344",
"filters": "aaa=123",
"color": "amarelo",
"simpleDescriptor1": "aaaaaaaa",
"simpleDescriptor2": "aaaaaaaa",
"simpleDescriptor3": "aaaaaaaa",
"specialDescriptor1": "aaaaaaaa",
"specialDescriptor2": "aaaaaaaa",
"specialDescriptor3": "aaaaaaaa",
"quantity": 99,
"unitValue": 999.99,
"unitWeight": 10.234,
"bulky": true,
"unitHeight": 123.99,
"unitLength": 123.99,
"unitWidth": 123.99
}
]
}
}
Obs: O envio do JSON de cotação é feito via POST. O user-agent é Fastcommerce Freight Interface.
2 - RETORNO
Formato do JSON de retorno.
{
"freightQuoteResponse":{
"err": 123,
"errDescr": "error description",
"useContingency": false,
"useLower": false,
"shippingServices":[
{
"serviceName": "SEDEX",
"servicePrice": 6.50,
"serviceNotes": "2 dias"
},
{
"serviceName": "Encomenda PAC",
"servicePrice": 2.30,
"serviceNotes": "10 dias"
}
]
}
}
Obs1: O retorno do JSON de cotação deverá ser feito via POST. Utilize um user-agent exclusivo.
Obs2: Em operação bem sucedida o retorno será Err=0 e errDescr=""
3 - Dicionário de dados
JSON ENVIO
| Campo | Tipo/Opções | Descrição |
|---|---|---|
| fromCEP | varchar(8) | CEP de origem dos pedidos. * CAMPO OPCIONAL (Se não for informado, será utilizado CEPEmpresa) |
| toCEP | varchar(8) | CEP de envio dos pedidos que será utilizado para realizar o cálculo da tarifa. |
| totalAmount | moeda | Valor total do pedido |
| totalWeight | real | Peso total do pedido |
| hasBulky | bit | Se TRUE, existe produto volumoso na cesta |
| giftPacking | int | Indica se a loja faz embalagens para presente.
(0) Cliente NÃO indica quais produtos a embalar | Cálculo da embalagem = zero (1) Cliente NÃO indica quais produtos a embalar | Cálculo da embalagem = Preço da embalagem (2) Cliente NÃO indica quais produtos a embalar | Cálculo da embalagem = Preço da embalagem X produtos individuais na cesta (3) Cliente NÃO indica quais produtos a embalar | Cálculo da embalagem = Preço da embalagem X quantidade de cada produto na cesta (4) Cliente indica quais produtos a embalar | Cálculo da embalagem = Preço da embalagem (5) Cliente indica quais produtos a embalar | Cálculo da embalagem = Preço da embalagem X produtos individuais na cesta (6) Cliente indica quais produtos a embalar | Cálculo da embalagem = Preço da embalagem X quantidade de cada produto na cesta |
| packagePrice | moeda | Preço da embalagem, adicionado ao total do pedido caso o cliente solicite embalagem para presente. |
| fixedFreight | moeda | Valor fixo pelo frete |
| insurancePercentage | real | Valor percentual de seguro que deverá ser incluido no valor de frete sobre o preço total dos produtos remetidos. |
| additionalValue | moeda | Valor a cobrar sobre o frete calculado, que será adicionada ao valor do mesmo. |
| additionalWeight | real | Peso em Kg a ser adicionado ao peso total dos produtos de cada pedido. |
| additionalDays | varchar(5) | Quantidade de dias que serão adicionados ao tempo estimado pelo serviço para entrega do produto. Este valor também pode ser em percentual. Neste caso, informe o valor seguido de %. Exemplo: 5% |
| freightMultiplier | moeda | Valor a multiplicar sobre o frete calculado |
| freeFreightForZeroWeight | bit | Se TRUE, frete gratuito para peso zero |
| partnerId | int | ID interno do parceiro |
| partnerFreightDiscount | moeda | Percentual de desconto do parceiro |
| id | int | ID interno do produto |
| sku | varchar(15) | Código de referência do produto, exibido ao visitante |
| name | varchar(100) | Nome do produto |
| category | varchar(25) | Nome da categoria |
| barcode | varchar(25) | Código de barras do produto |
| filters | varchar(512) | Item do filtro utilizado neste produto |
| color | varchar(1024) | Cores disponíveis no produto. Se multivalorado, serão apresentados entre vírgulas. |
| simpleDescriptor1 | varchar(2048) | Texto da informação adicional sobre o produto, indicado em Descritor simples 1 |
| simpleDescriptor2 | varchar(2048) | Texto da informação adicional sobre o produto, indicado em Descritor simples 2 |
| simpleDescriptor3 | varchar(2048) | Texto da informação adicional sobre o produto, indicado em Descritor simples 3 |
| specialDescriptor1 | varchar(1024) | Texto da informação adicional sobre o produto, indicado em Descritor especial 1 |
| specialDescriptor2 | varchar(1024) | Texto da informação adicional sobre o produto, indicado em Descritor especial 2 |
| specialDescriptor3 | varchar(1024) | Texto da informação adicional sobre o produto, indicado em Descritor especial 3 |
| quantity | int | Quantidade de itens |
| unitValue | moeda | Valor unitário |
| unitWeight | real | Peso unitário em Kg |
| Bulky | bit | Se TRUE, produto volumoso |
| unitHeight | real | Altura em cm |
| unitLength | real | Profundidade em cm |
| unitWidth | real | Largura em cm |
JSON RETORNO
| Campo | Tipo/Opções | Descrição |
|---|---|---|
| err | int | Código do erro |
| errDescr | varchar(200) | Mensagem de erro |
| useContingency | bit | Se TRUE usar os Tipo de Frete registrados na loja mesmo que estes tipos não existam no serviço remoto |
| useLower | bit | Se TRUE para que o sistema possa comparar as tarifas cadastradas na loja (contingência) e as retornadas pelo serviço remoto, onde será apresentado ao cliente sempre a menor tarifa |
| serviceName | varchar(32) | Nome do tipo de frete. Ex: Entrega expressa |
| servicePrice | real | Valor da tarifa |
| serviceNotes | varchar(10) | Infomações adicionais sobre a entrega. Ex: 15 dias |
4 - Histórico de versão
A versão atual da API é 1.1.
| Versão | Data | Detalhes |
|---|---|---|
| 1.1 | 11/05/2023 | Inserção: Novos campos - hasBulky (indica se tem produto volumoso na cesta) e Bulky (indica se o produto é volumoso) |