Cálculo de frete:

Para utilizar a integração por split de meio de pagamento é necessário utilizar autenticação OAuth2 e solicitar a permissão ecommerce-shipping.

Fretes podem ser calculados da seguinte forma:

Nota: As rotas de cotação devem ser autenticadas.

Endpoint POST /api/v2/me/ecommerce/calculate

Payload:

{
  "from": {
    "postal_code": "01002001",  
    "address": "Endereço do remetente", // se for uma transportadora municipal o endereço e o número deve ser informado
    "number": "1" // número do destinatário
  },
  "to": {
    "postal_code": "90570020",  
    "address": "Endereço do destinatário", // se for uma transportadora municipal o endereço e o número deve ser informado
    "number": "2" // número do destinatário
  },
  "package": {
    "weight": 1,
    "width": 12,
    "height": 4,
    "length": 17
  },
  "options": {
    "insurance_value": 20.50, // o valor declarado é obrigatório para transportadoras privadas e deve ser o mesmo valor da nota fiscal
    "receipt": false,
    "own_hand": false,
    "collect": false
  }
}

Exemplo com cURL:

$ curl -X POST \
    'https://www.melhorenvio.com.br/api/v2/me/ecommerce/calculate' \
    -H 'accept: application/json' \
    -H 'authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjNjYmQzNTBjYzI0YmI5NzdjMDRkNTRmYzg1NThhOTE4ZjNkZDBmMDBkMTFhYzg2ZmI0OTViMDBiNzQxODEwZDlhMWM2ZWVlNTRkMTdhZDkxIn0.eyJhdWQiOiIxIiwianRpIjoiM2NiZDM1MGNjMjRiYjk3N2MwNGQ1NGZjODU1OGE5MThmM2RkMGYwMGQxMWFjODZmYjQ5NWIwMGI3NDE4MTBkOWExYzZlZWU1NGQxN2FkOTEiLCJpYXQiOjE1MDY1MjMzODYsIm5iZiI6MTUwNjUyMzM4NiwiZXhwIjoxNTM4MDU5Mzg2LCJzdWIiOiIxNmIyMWVhNS00NmVjLTQ0Y2MtYjdmNS1hMDJmZmY3YjljMjgiLCJzY29wZXMiOlsiY2FydC1yZWFkIiwiY2FydC13cml0ZSIsImNvbXBhbmllcy1yZWFkIiwiY29tcGFuaWVzLXdyaXRlIiwiY291cG9ucy1yZWFkIiwibm90aWZpY2F0aW9ucy1yZWFkIiwiY291cG9ucy13cml0ZSIsIm9yZGVycy1yZWFkIiwicHVyY2hhc2VzLXJlYWQiLCJzaGlwcGluZy1jYWxjdWxhdGUiLCJzaGlwcGluZy1jYW5jZWwiLCJzaGlwcGluZy1jaGVja291dCIsInNoaXBwaW5nLWNvbXBhbmllcyIsInNoaXBwaW5nLWdlbmVyYXRlIiwic2hpcHBpbmctcHJldmlldyIsInNoaXBwaW5nLXByaW50Iiwic2hpcHBpbmctdHJhY2tpbmciLCJ3ZWJob29rcy1yZWFkIiwid2ViaG9va3Mtd3JpdGUiLCJ0cmFuc2FjdGlvbnMtcmVhZCIsInVzZXJzLXJlYWQiLCJ1c2Vycy13cml0ZSJdfQ.GpVYhn4ZLjvtBsNq_sLullUV5E-zb3t009IuKkeRHgDGiDlnt_Lslv7elg6ou2nD_t0u2REIv3umZsLhYxUhHak732DSek84YJ14ehF4OCwFDYY8j1qOHB91YpXIUe6BzrDSD58IC3sknmoV7Cln2oLWwsooHTmowVFceCW5BNzavoT-wawUGxfOKb-el0exgtfx9gs-ppEdfSYfRvRvvfGMDqcbqaoIZxOE1hf9LK1qIbuOjLUO0lPwXCmhIe8q-fKfb-DvGXhz9aTCZ2K4khaseDGkjXOQyB_abOqfzktcFOfqcXuInv53-UoPQNZhzfTPqu2ATe73AlVsbS9Y1w_F40cVgHfhlOujcqccpQiErM6mZvDkx7EIIcEXM7wmX4kDZzWBm5ZEf1Y4WX0lSR-zOK0jm-rOZ6MWKeko5-GcQaeqho9Q3I4o-RViVznBCBW1OnGy7K2jNlB0juL6ZL2YKgKhjxmhe-_dNSQ7BMvJpzhQsKcOkJXS70RBJvx17Dl0vHMuCbW-K1KT1HrPasMVB3psHNNE1wtPI1IeAogcd9eTtvD2Easy7hS0YUqf7KCXk7h2qJdGHpgbjwALGq4U6JvpDeyqWHmS5_d8v92dtJ5Lz4wFc-JYsueNU5tqJiz03ORnRCZCkYZu52pc5kiW7-fo-UVfxSDdizf76Fk' \
    -H 'content-type: application/json' \
    -d '{
    "from": {
      "postal_code": "01002001",  
      "address": "Endereço do remetente",
      "number": "1"
    },
    "to": {
      "postal_code": "90570020",  
      "address": "Endereço do destinatário",
      "number": "2"
    },
    "package": {
      "weight": 1,
      "width": 12,
      "height": 4,
      "length": 17
    },
    "options": {
      "insurance_value": 20.50,
      "receipt": false,
      "own_hand": false,
      "collect": false
    }
  }'

Nota: O Parâmetro pretty pode ser passado para imprimir o JSON de modo que se possa visualizar a informação na fase de desenvolvimento, não sendo recomendado para produção por aumentar o tamanho da resposta enviada ao cliente.

É possível informar uma lista de produtos no lugar do pacote, fazendo com que seja montado pacotes de acordo com o limite das transportadoras:

Endpoint POST /api/v2/me/ecommerce/calculate

Payload:

{
  "from": {
    "postal_code": "01002001",  
    "address": "Endereço do remetente",
    "number": "1"
  },
  "to": {
    "postal_code": "90570020",  
    "address": "Endereço do destinatário",
    "number": "2"
  },
  "products": [ // transportadoras possuem limite de peso, dimensões e valor declarado por pacote
    {
      "weight": 5,
      "width": 12,
      "height": 4,
      "length": 17,
      "insurance_value": 100
    },
    {
      "weight": 10,
      "width": 12,
      "height": 4,
      "length": 17,
      "insurance_value": 100
    },
    {
      "weight": 15,
      "width": 12,
      "height": 4,
      "length": 17,
      "insurance_value": 100
    }
  ],
  "options": {
    "insurance_value": 20.50, // quando for calculado o frete com uma lista de produtos e o mesmo contendo seu respectivo valor segurado, não é necessário informar este campo
    "receipt": false,
    "own_hand": false,
    "collect": false
  }
}

Exemplo com cURL:

$ curl -X POST \
  'https://www.melhorenvio.com.br/api/v2/me/ecommerce/calculate' \
  -H 'accept: application/json' \
  -H 'authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjNjYmQzNTBjYzI0YmI5NzdjMDRkNTRmYzg1NThhOTE4ZjNkZDBmMDBkMTFhYzg2ZmI0OTViMDBiNzQxODEwZDlhMWM2ZWVlNTRkMTdhZDkxIn0.eyJhdWQiOiIxIiwianRpIjoiM2NiZDM1MGNjMjRiYjk3N2MwNGQ1NGZjODU1OGE5MThmM2RkMGYwMGQxMWFjODZmYjQ5NWIwMGI3NDE4MTBkOWExYzZlZWU1NGQxN2FkOTEiLCJpYXQiOjE1MDY1MjMzODYsIm5iZiI6MTUwNjUyMzM4NiwiZXhwIjoxNTM4MDU5Mzg2LCJzdWIiOiIxNmIyMWVhNS00NmVjLTQ0Y2MtYjdmNS1hMDJmZmY3YjljMjgiLCJzY29wZXMiOlsiY2FydC1yZWFkIiwiY2FydC13cml0ZSIsImNvbXBhbmllcy1yZWFkIiwiY29tcGFuaWVzLXdyaXRlIiwiY291cG9ucy1yZWFkIiwibm90aWZpY2F0aW9ucy1yZWFkIiwiY291cG9ucy13cml0ZSIsIm9yZGVycy1yZWFkIiwicHVyY2hhc2VzLXJlYWQiLCJzaGlwcGluZy1jYWxjdWxhdGUiLCJzaGlwcGluZy1jYW5jZWwiLCJzaGlwcGluZy1jaGVja291dCIsInNoaXBwaW5nLWNvbXBhbmllcyIsInNoaXBwaW5nLWdlbmVyYXRlIiwic2hpcHBpbmctcHJldmlldyIsInNoaXBwaW5nLXByaW50Iiwic2hpcHBpbmctdHJhY2tpbmciLCJ3ZWJob29rcy1yZWFkIiwid2ViaG9va3Mtd3JpdGUiLCJ0cmFuc2FjdGlvbnMtcmVhZCIsInVzZXJzLXJlYWQiLCJ1c2Vycy13cml0ZSJdfQ.GpVYhn4ZLjvtBsNq_sLullUV5E-zb3t009IuKkeRHgDGiDlnt_Lslv7elg6ou2nD_t0u2REIv3umZsLhYxUhHak732DSek84YJ14ehF4OCwFDYY8j1qOHB91YpXIUe6BzrDSD58IC3sknmoV7Cln2oLWwsooHTmowVFceCW5BNzavoT-wawUGxfOKb-el0exgtfx9gs-ppEdfSYfRvRvvfGMDqcbqaoIZxOE1hf9LK1qIbuOjLUO0lPwXCmhIe8q-fKfb-DvGXhz9aTCZ2K4khaseDGkjXOQyB_abOqfzktcFOfqcXuInv53-UoPQNZhzfTPqu2ATe73AlVsbS9Y1w_F40cVgHfhlOujcqccpQiErM6mZvDkx7EIIcEXM7wmX4kDZzWBm5ZEf1Y4WX0lSR-zOK0jm-rOZ6MWKeko5-GcQaeqho9Q3I4o-RViVznBCBW1OnGy7K2jNlB0juL6ZL2YKgKhjxmhe-_dNSQ7BMvJpzhQsKcOkJXS70RBJvx17Dl0vHMuCbW-K1KT1HrPasMVB3psHNNE1wtPI1IeAogcd9eTtvD2Easy7hS0YUqf7KCXk7h2qJdGHpgbjwALGq4U6JvpDeyqWHmS5_d8v92dtJ5Lz4wFc-JYsueNU5tqJiz03ORnRCZCkYZu52pc5kiW7-fo-UVfxSDdizf76Fk' \
  -H 'content-type: application/json' \
  -d '{
  "from": {
    "postal_code": "01002001",  
    "address": "Endereço do remetente",
    "number": "1"
  },
  "to": {
    "postal_code": "90570020",  
    "address": "Endereço do destinatário",
    "number": "2"
  },
  "products": [
    {
      "id": "p-1", // id do produto (para ter referência do mesmo nos pacotes) (opcional)
      "weight": 5,
      "width": 12,
      "height": 4,
      "length": 17,
      "insurance_value": 100 // valor declarado/segurado do produto
    },
    {
      "id": "p-2",
      "weight": 25,
      "width": 12,
      "height": 4,
      "length": 17,
      "insurance_value": 100
    },
    {
      "id": "p-3",
      "weight": 15,
      "width": 12,
      "height": 4,
      "length": 17,
      "insurance_value": 100
    }
  ],
  "options": {
    "insurance_value": 20.50,
    "receipt": false,
    "own_hand": false,
    "collect": false
  }
}'

Resposta:

[
  {
    "id": 1,
    "name": "Econômico",
    "shipping_id": 105, // id único da cotação para este serviço (Correios - Econômico), este id deve ser fornecido como 'valor' para escolha da opção de frete
    "price": "123.64", // valor total do frete,
    "custom_price": "123.64", // valor total do frete customizado (pode ser configurado pelo cliente, como por exemplo tendo um adicional ou sendo frete grátis - pode ser utilizado em lojas virtuais)
    "discount": "5.16", // valor total do desconto repassado ao cliente
    "currency": "R$", // moeda utilizada
    "delivery_range": { // tempo de entrega estimado em mínimo e máximo
      "min": 10,
      "max": 10,
    },
    "delivery_time": 10, // tempo de entrega baseado na média do mínimo e máximo
    "custom_delivery_time": 10, // tempo de entrega customizado (pode ser configurado pelo cliente, como por exemplo tendo um adicional - pode ser utilizado em lojas virtuais)
    "packages": [ // pacotes que serão enviados (volumes)
      {
        "insurance_value": 200, // valor declarado/segurado do pacote (volume)
        "weight": 30, // peso do pacote (limite do serviço econômico, por conta disso montou-se 2 pacotes)
        "dimensions": { // dimensões do pacote
          "width": 12,
          "height": 4,
          "length": 34
        },
        "format": "box", // formato do pacote
        "products": [ // id dos produtos se não informado será o índice do array de produtos
          {
            "id": "p-1",
            "quantity": 1
          },
          {
            "id": "p-2",
            "quantity": 1
          }
        ],
        "price": "62.54", // preço do pacote
        "discount": "2.61", // desconto do pacot
      },
      {
        "insurance_value": 100,
        "weight": 15,
        "dimensions": {
          "width": 12,
          "height": 4,
          "length": 17
        },
        "format": "box",
        "products": [
          {
            "id": "p-3",
            "quantity": 1
          }
        ],
        "price": "61.1",
        "discount": "2.55"
      }
    ],
    "additional_services": {
      "receipt": false,
      "own_hand": false,
      "collect": false
    },
    "company": {
      "id": 1,
      "name": "Correios",
      "picture": "https://www.melhorenvio.com.br/images/shipping-companies/correios.png"
    }
  },
  // ... (resultado de outros serviços)
]

Configurando transportadoras e serviços

O usuário poderá escolher as transportadoras que deseja utilizar em sua loja no momento que autorizar seu app (requerido a permissão ecommerce-shipping) ou então alterar as configurações posteriormente em seu painel > integrações conforme imagens abaixo:

results matching ""

    No results matching ""