Documentação para Integração da Sisfrete
API - Pedidos | Produtos | Embalamento | Rastreios
Acesse o link e confira a documentação completa: https://api3.sisfrete.com.br/
API - Cotação
1.Endereço da API Sisfrete (End Point)
A chamada para API Sisfrete é feita através do seguinte endereço web:
2. Token
- O token será enviado no header da requisição.
Header : { token : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx }
- Se o token estiver errado mostrará uma mensagem de falha e não será possível realizar a cotação solicitada.
3.Observação dos campos
- Analisar as informações que vão receber os valores conforme os campos que encontram no item 4 (Estrutura do Json).
- Verificar se os campos estão corretos, pois caso esteja errado, o sistema não permitirá salvar as informações que contém o erro.
Campo | Tipo | Orientação | Obrigatório | |
Destination | string | Contém o CEP do comprador e onde será entregue os itens, e pode ser enviado em qualquer formatação desde que respeite os 8 dígitos e seja um CEP válido | Sim | |
Itens | array | É a lista onde registra todos os itens que estão sendo comprados | Sim | |
seller_id | string | Identificador da conta | Não | |
Canal_vendas | string | Identificador do canal que está cotando.(nome da plataforna ou Mktplace que enviou a cotação) | Não | |
store_id | string | É a identificação da loja. Essa informação só́ está disponível para aqueles que possuem mais de uma loja embaixo de uma mesma conta | Não | |
sku | string | Esse campo é a identificação do produto a ser comprado | Sim | |
quantity | int | É a quantidade a ser comprada de um mesmo item | Sim | |
origin | string | É o CEP de cadastro do lojista. Pode ser enviado em qualquer formatação desde que respeite os 8 dígitos | Sim | |
price | float | É o preço unitário do produto multiplicado pela quantidade selecionada pelo comprador, no momento de realizar a cotação | Sim | |
dimensions | object | É a relação de dimensões de um produto | Sim | |
length | float | É o comprimento do produto (em centímetros) | Sim | |
width | float | É a altura do produto (em centímetros) | Sim | |
height | float | É a largura do produto (em centímetros) | Sim | |
weight | float | É o peso do produto (em quilogramas). | Sim |
4.Estrutura do Json de Request
Segue a estrutura do json com os campos necessários para registrar as informações no banco de dados:
{"destination": "13295000",
"items": [
{
"seller_id": "89540000",
"sku": "prod-1",
"quantity": 1,
"origin":" 02611-000",
"price": 316,
"dimensions": {
"length": 1,
"height": 1,
"width": 1,
"weight": 1
}
} ,
{
"seller_id": "89540000",
"sku": " prod-2",
"quantity": 1,
"origin":" 02611-000",
"price": 316,
"dimensions": {
"length": 1,
"height": 1,
"width": 1,
"weight": 1
}
}
]
}
5.Estrutura de json de resposta
- packages (array): É a lista de pacotes criados pelo lojista.
- items (array): É a lista de itens dentro de um mesmo pacote.
- sku (string): É a identificação do item a ser comprado.
- seller_id (string): É a identificação da conta que está vendendo o produto. Geralmente é uma cópia de informação já́ passada no request.
- store_id (string): opcional. É a identificação da loja que está vendendo o produto. Geralmente é uma cópia de informação já́ passada no request.
- quantity (int): É a quantidade do produto que será́ enviado no pacote. Pode acontecer por questões de disponibilidade em estoque que uma parcela do produto seja enviada a partir de um CD e a outra parte de outro CD (portanto dois “pacotes” distintos).
- stock (int): É a disponibilidade do produto em estoque por CD. No caso de indisponibilidade dessa informação deve-se retornar o valor -1.
- error_code (int): É o código que irá identificar o tipo de erro em relação ao produto.
- Error_code: -1: Erro inesperado (utilizar somente em casos muito específicos).
- Error_code: 0: Sem Erro.
- Error_code: 1: Quantidade não disponível em estoque.
- Error_code: 2: CEP de destino inválido
- Error_code: 3: Produto não disponível para o CEP de destino.
- Error_code: 4: Produto escolhido não existe.
- quotations (array): É a lista de cotação de frete para um pacote.
- cost (float): É o custo real do frete. No caso de indisponibilidade dessa informação deve-se retornar o mesmo valor de price.
- price (float): É o preço de frete que será apresentado para o comprador. Esta informação se difere de cost pois há a possibilidade de o frete ser subsidiado parcial ou completamente (frete grátis).
- handling_time (int): É o tempo, em dias úteis, que será́ gasto para separação e empacotamento do produto. Abrange todos os processos anteriores ao envio efetivo do pacote. No caso de indisponibilidade dessa informação deve-se retornar o valor 0.
- shipping_time (int): É o tempo, em dias úteis, de trânsito do pacote (da entrada no caminhão até a entrega para o comprador).
- promise (int): É a soma dos valores de handling_time e shipping_time
- caption (string): É o nome dado à cotação. As opções válidas são Normal ou Expresso.
- service_id (int): É o código que identifica um serviço/transportadora dentro do contexto do seller. Valores válidos vão de 0 à 99. Esse código é única e exclusivamente de responsabilidade do seller/integrador
- Segue o exemplo da estrutura do json que será respondido:
"packages": [
{
"items": [
{
"sku": "00266983118",
"seller_id": "207740981",
"quantity": 1,
"stock": -1,
"error_code": 0,
"store_id": null
}
],
"quotations": [
{
"cost": 66.6,
"price": 66.6,
"handling_time": 0,
"shipping_time": 39,
"promise": 39,
"caption": "Normal"
}
]
}
]
}
Web Service - Cotação
1. Conexão SISFRETE
A cotação utiliza o protocolo HTTP com a seguinte URL:
Para realizar a cotação é necessário enviar o parâmetro TOKEN de sua empresa. Ele é obtido através do menu interligação e opção Cálculos (Token). O TOKEN deve ser enviado através do método GET, bem como os demais parâmetros utilizados para realizar a cotação. O parâmetro utilizado é token.
https://cotar.sisfrete.com.br/cotacao/Integracao.php?&token=1CDD2DD25651DDEA56
2. Enviando dados da cotação
As cotações podem ser realizadas para envio de produtos, ou de recebimento. Caso seja envio, deve ser utilizado o parâmetro envio com valor
Caso seja recebimento, deve ser utilizado o parâmetro recebi com o valor 1.
https://cotar.sisfrete.com.br/cotacao/Integracao.php?&token=1CDD2DD25651DDEA56&envio1
https://cotar.sisfrete.com.br/cotacao/Integracao.php?&token=1CDD2DD25651DDEA56&recebi=1
Nota: A cotação deve ser do tipo envio ou recebimento, somente um dos dois valores deve ser declarado.
Informar o número do pedido, obrigatório, através do parâmetro num_ped.
https://cotar.sisfrete.com.br/cotacao/Integracao.php?&token=1CDD2DD25651DDEA56&envio=1&num_ped=895
Informar o número da NF, opcional, através do parâmetro nf_ped.
https://cotar.sisfrete.com.br/cotacao/Integracao.php?&token=1CDD2DD25651DDEA56&envio=1&num_ped=895&nf_ped=4589-9
2.1 Existem duas formas de declarar o destino da cotação:
A primeira consiste em repassar os dados de seu cliente. Esta opção é recomendada o cálculo de tarifas especiais, como por exemplo, a dificuldade de entrega. Para utilizar esta opção declare o parâmetro dados destinatário com o valor 1.
https://cotar.sisfrete.com.br/cotacao/Integracao.php?&token=1CDD2DD25651DDEA56&envio=1&dados_destinatario=1
Se o dado do seu cliente ja estiver cadastrado no sistema SISFRETE você pode passar somente o CPF ou CNPJ através do parâmetro cpf_cnpj, que deve ser enviado sem formatação.
https://cotar.sisfrete.com.br/cotacao/Integracao.php?&token=1CDD2DD25651DDEA56&envio=1&dados_destinatario=1&cpf_cnpj=83712607768
Nota: Não utilizar caracteres especiais como ponto, virgula, traço ou barra.Para cadastrar o cliente na SISFRETE os campos abaixo devem ser enviados:
Parâmetro | Valor | Obs | |
cpf_cnpj | CPF ou CNPJ do cliente | Somente numeros, nao utilizar caracteres especiais | |
pessoa | f para Fisica ou j para Juridica | ||
nome | Nome do cliente | ||
endereco | Endereço do cliente | ||
numero | Referente ao endereço | opcional | |
bairro | Bairro | ||
cep | Cep | Somente números, Não utilizar caracteres especiais | |
E-mail do cliente | Opcional |
Nota: Se os dados precisam ser atualizados, basta somente re-enviar.
https://cotar.sisfrete.com.br/cotacao/Integracao.php?&token=1CDD2DD25651DDEA56&envio=1&dados_destinatario=1&cpf_cnpj=83712607768&pessoa=f&nome=JoaodaSilva&endereco=RuaHolanda&numero=587&bairro=Centro&cep=17600440&email=teste@teste.com
A segunda opção consiste em repassar somente o CEP de destino. Caso Não haja a necessidade de informar o cliente, deve-se utilizar o parâmetro cep_destino, que deve ser enviado sem formatação.
https://cotar.sisfrete.com.br/cotacao/Integracao.php?token=1CDD2DD25651DDEA56&envio=1&cep_destino=17604370
Abaixo, segue uma tabela de parâmetros opcionais que poderão ser encaminhados de acordo com as especificações da transportadora que você utiliza. Por exemplo, se a sua transportadora pede para identificar se a carga é de difícil manuseio, informar o parâmetro manuseio.
https://cotar.sisfrete.com.br/cotacao/Integracao.php?token=1CDD2DD25651DDEA56&envio=1&cep_destino=17604370&manuseio=1Tabela com parâmetros opcionais para a cotação.
Parâmetro | Valor | Descrição | |
Fretecobrar | 1 | Em caso de frete á cobrar | |
reentrega | 1 | Em caso de reentrega | |
manuseio | 1 | Em caso de difícil manuseio | |
palet | 1 | Em caso de carga paletizada | |
qtdpalet | Nº de palets | Em caso de carga paletizada (obrigatório se palet = 1) | |
armazenar | Nº de dias | Em caso de armazenamento | |
atendimento | 1 | Em caso de atendimento fora de horário | |
aeroporto | 1 | Em caso de entrega em aeroporto | |
porto | 1 | Em caso de entrega em porto | |
redespacho | 1 | Em caso de redespacho | |
cidaderedesp | CEP (somente numeros) | cidade de redespacho (obrigatório se redespacho = 1) | |
zmrc | 1 | Em caso de Zona Municipal Restrição Caminhões | |
japalet | 1 | Em caso de carga já paletizada | |
nao_declara_correios | 1 | Declarando esta opção, não será calculado o seguro sobre o valor dos pedidos nos Correios | |
autoembalagem | 1 | Modo especial de cálculo automático de volumes. Os dados para esse modo devem ser preenchidos na seção interligação. | |
ver_cnpj | 1 | Caso declarado, uma nova tag contendo o CNPJ da transportadora é mostrado nas tags | |
dest_pessoa_juridica | 1 | Caso declarado, identifica o destinatário como sendo pessoa Jurídica. |
3. Enviando dados dos produtos
Para cotações com configurações específicas por produtos será necessário realizar o cadastro dos produtos no menu Módulos > Frete Produto > Inserir Produto. O campo Cod/Identificação deve ser obrigatoriamente preenchido, e ser igual ao recebido na cotação. Independente de estar cadastrado na plataforma da sisfrete. Ele deve ser único e deverá ser sempre informado na interligação.
Utilizar o parâmetro prods para declarar os produtos na interligação. Deve ser formado por oito parâmetros separados por ponto e vírgula (;) respectivamente: comprimento(m); largura(m); altura(m); cubagem(m3), não-obrigatório; volume total(un); peso do produto (kg - peso unitário do produto); Código/Identificação única do produto; valor unitário do produto.
https://cotar.sisfrete.com.br/cotacao/Integracao.php?&token=1CDD2DD25651DDEA56&envio=1&cep_destino=17604370&num_ped=895&prods=0,1;0,2;0,3;0.006;3;1.8;9857;50
Para cotar dois ou mais produtos, separar com barra (/).
https://cotar.sisfrete.com.br/cotacao/Integracao.php?&token=1CDD2DD25651DDEA56&envio=1&cep_destino=17604370&num_ped=895&prods=0,1;0,2;0,3;0.006;3;1.8;9857;50/0.2;0.3;0.4;0,016;2;2;237;30,50
Nota: O separador de decimal pode ser ponto (.) ou vírgula (,). Ex.: 20,00 ou 20.00. Não utilizar separador de milhar.
4. Interpretando a resposta
O resultado da cotação é devolvido em XML. A tag contém os dados de cada resultado obtido para a cotação realizada. Dentro desta tag temos:
Tag | Descrição | |
<codigo> | Código do resultado (descontinuado) | |
<cod_nf> | Código da cotação (descontinuado) | |
<transportadora> | Apelido (ou Nome) da transportadora | |
<fob> | Se a transportadora aceita frete á cobrar | |
<servico> | Apelido (ou Nome) do serviço oferecido | |
<transp_padrao> | Nome da transportadora | |
<serviço_padrao> | Nome do serviço oferecido | |
<transporte> | Tipo de transporte | |
<redespacho> | Caso haja redespacho | |
<valor> | Valor do frete | |
<peso> | Peso calculado | |
| Prazo mánimo | |
<prazo_max> | Prazo máximo | |
<temp_exped> | Tempo de Expedição do Item | |
<temp_envio> | Tempo de Envio | |
<tipo_envio> | Tipo de envio(CIF ou FOB) |
<cotacao>
<resultado>
<prioridade>0</prioridade>
<codigo/>
<cod_nf/>
<transportadora>TOTAL EXPRESS</transportadora>
<servico>RODOVIARIO TOTAL</servico>
<transp_padrao>TOTAL EXPRESS</transp_padrao>
<servico_padrao>EXPRESSO</servico_padrao>
<cnpj/>
<fob>NAO</fob>
<base>2609</base>
<transporte>EXPRESSO</transporte>
<valor>43,02</valor>
<peso>1</peso>
<prazo_min>3</prazo_min>
<prazo_max>3</prazo_max>
<temp_exped>0</temp_exped>
<temp_envio>3</temp_envio>
<tipo_envio>CIF</tipo_envio>
<resultado>
<prioridade>0</prioridade>
<codigo/>
<cod_nf/>
<transportadora>TNT</transportadora>
<servico>RODOVIARIO TNT</servico>
<transp_padrao>TNT MERCURIO</transp_padrao>
<servico_padrao>RODOVIARIO</servico_padrao>
<cnpj/>
<fob>NAO</fob>
<base>933</base>
<transporte>RODOVIARIO</transporte>
<valor>47,92</valor>
<peso>1</peso>
<prazo_min>2</prazo_min>
<prazo_max>2</prazo_max>
<temp_exped>0</temp_exped>
<temp_envio>2</temp_envio>
<tipo_envio>CIF</tipo_envio>
</cotacao>
5. Identificando erros
Caso exista algum problema com os dados, que foi enviado, o sistema automaticamente emite um retorno de erro em XML. A informação sobre o erro constará na tag <erro>. Exemplo
<resultado>
<erro>Cidade de destino não localizada.</erro>
</resultado>
API - Sisfrete Delivery
Acesse a documentação da API Rest SisFrete Delivery com os Endpoints relacionados a Pedido(order) e Entregador(deliveryman) neste link: Sisfrete Delivery API - Documentação