Cálculo externo de frete por LOCALIDADES
Para que o cálculo de frete seja feito por sistemas externos, basta criar um conversor JSON, que receberá os dados do pedido e as localides 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 > Formas de envio > Tabela de preços > URL de consulta, no site administrativo da loja. Para utilizar esta URL, selecione a opção [ 5 ] Utilizar cálculo externo por localidade deste caminho.
ATENÇÃO: Se a loja vende somente para o Brasil, utilize a opção [ 3 ] Utilizar faixas de CEP (Brasil). Caso queira utilizar um serviço de cálculo externo por CEP, configure este serviço no caminho ENVIO & FRETE > Cálculo externo.
Para maiores detalhes, clique aqui.
1 - ENVIO
quote={
"freightQuoteRequest":{
"fromAddress": {
"line1": "123 street name",
"line2": "",
"city": "new york",
"state": "xx",
"country": "Brazil",
"countryCode": "BR",
"postalCode": "111111111",
"phone": "112222222222222"
},
"shippingAddress": {
"line1": "123 street name",
"line2": "",
"city": "new york",
"state": "xx",
"country": "Brazil",
"countryCode": "BR",
"postalCode": "111111111",
"phone": "112222222222222"
},
"totalAmount": 9999.99,
"totalWeight": 9999.99,
"hasBulky": true/false,
"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/false
"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/false,
"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",
"shippingServices":[
{
"serviceName": "International courrier",
"servicePrice": 6.50,
"serviceNotes": "12 days"
},
{
"serviceName": "Express delivery",
"servicePrice": 2.30,
"serviceNotes": "2 days"
}
]
}
}
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 |
|---|---|---|
| line1 | varchar(70) | Linha 1 do endereço |
| line2 | varchar(70) | Linha 2 do endereço |
| city | varchar(50) | Cidade |
| state | varchar(2) | Estado |
| country | varchar(20) | País |
| countryCode | varchar(2) | Sigla do país |
| postalCode | varchar(9) | Código postal |
| phone | varchar(20) | Telefone |
| 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 |
| 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) |