Criando um Pedido com a Loggi

🚧

Atenção

Os pedidos são criados e enviados para alocação assim que sua chamada para nossa API é realizada.

Para criar o pedido você vai precisar de um ShopID (que será o ponto onde a entrega será retirada), você pode conseguir um ShopID utilizando o request acima de busca de Lojas e os endereços e dados dos pacotes a serem entregues.

Resolvendo o destinatário

O destinatário do pacote é inserido pelo campo recipient e possue duas informações:

CampoDescrição
nameo nome do destinatário
phonetelefone do destinatário

e.g.:

recipient: {
  name: "Baruch Spinoza"
  phone: "1122819603"
}

Resolvendo o endereço


O endereço do pacote é inserido pelo campo address e possue duas informações:

CampoDescrição
latlatitude
lnglongitude
addressstring completa com as informações do endereço
complementcomplemento
address: {
  lat: -23.5541389,
  lng: -46.6639556,
  address: "R. São Paulo, 236 - Higienópolis, São Paulo - SP, 01244-010, Brasil",
  complement: "ap 2000"
}

O rastreamento é feito por pacote. Uma vez que você cria uma Order, você recebe uma lista de IDs dos pacotes.

Como formular uma boa string de endereço

Uma boa string de endereço conterá o máximo de informações capazes de serem lidas por um humano para o máximo de contexto possível.

e.g. de uma boa string de endereço:

R. Minas Gerais, 236 - Higienópolis, São Paulo - SP, 01244-010, Brasil
-   ----------   ---    ----------    -------   ---   -------    ----
1       2         3         4            5       6       7         8
  1. R.: tipo de logradouro
  2. Minas Gerais: logradouro, nesse caso, o nome da rua
  3. 236: número
  4. Higienópolis: bairro
  5. São Paulo: cidade
  6. SP: estado
  7. 01244-010: cep, código postal
  8. Brasil: país

Dica: se você usa o serviço de localização do Google Maps (geocoding), o campo formatted_address tende a ser uma ótima string de endereço.

Endereço ruim

Caso seja enviado uma string de endereço ruim, pode ser retornado alguns dos seguintes erros:

  • CEP inválido, tente novamente.
  • Local fora da área de cobertura para a cidade São Paulo, caso você esteja fazendo pedidos fora de
    São Paulo, o nome da sua cidade virá aqui

Resolvendo instruções

Se você precisar especificar uma tarefa a qual o entregador precisa fazer, você pode usar o campo instructions, que é uma string.

e.g.:

CampoDescrição
instructions"Esperar no balcão de entregas."

Informando ponto de retirada

❗️

Atenção

Ao criar um pedido, atualmente só consideramos um pickup.

Para informar onde será a retirada do pedido, solicitamos que seja passado o endereço em uma lista de pontos.

Exemplo:

pickups: [{
  address: {
    lat: -23.5703022
    lng: -46.6473154
    address: "Av. Paulista, 100 - Bela Vista, São Paulo - SP, Brasil"
    complement: "8o andar"
  }
  instructions: "Retirar pedido com Jorge"
}]

Após adicionar o ponto de retirada na lista, precisamos saber qual pacote será retirado neste ponto, para isso solicitamos que informe o índice do ponto dentro do pacote,

CampoTipoDescrição
pickupIndexIntIndice do ponto na lista informada, começando com 0 para o primeiro item

exemplo:

packages: [{
  pickupIndex: 0
  recipient: {
    name: "Baruch Spinoza",
    phone: "1122819603
  }
  address: {
    lat: -23.635334
    lng: -46.529835
    address: "Av. Estados Unidos, 500 - Parque das Nações, Santo André - SP, Brasil"
    complement: "Apto 133"
}

Resolvendo dimensões

Para pedidos roteirizados, é necessário passar as dimensões dos pacotes. Isso é feito através do campo dimensions. O campo de dimensões possue os seguintes campos:

CampoDescrição
width"largura, em centímetros "
length"comprimento, em centímetros"
height"altura, em centímetros"
weight"peso, massa, em gramas"

❗️

Atenção

As dimensões máximas permitidas são 40x40x40

dimensions: {
  width: 10
  height: 10
  weight: 10
  length: 10
}

Métodos de pagamento

Mapeamento das formas de pagamento

As formas de pagamento tem seus códigos mapeados da seguinte forma:

Forma de pagamentoCódigo
Cartão de crédito1
Cartão de débito2
Dinheiro sem troco4
Dinheiro com troco8
Cheque16
Pagamento com maquininha da loja32
Pagamento já realizado64
Vale-Refeição128
Sodexo256
Alelo512
Ticket1024

No caso do um meio de pagamento 64 - Pagamento já realizado, deve-se enviar os valores de value e charge com "0.00"

charge: {
  value: "0.00"
  method: 64
  change: "0.00"
}

Sobre os métodos com ponto de retorno

Quando o pagamento é feito com dinheiro sem troco, dinheiro com troco, pagamento com maquininha da loja ou cheque, um ponto de retorno é adicionado automaticamente ao pedido. Esse ponto de retorno pode gerar cobranças.

Mutation de exemplo para criar um pedido

mutation {
  createOrder(input: {
    paymentMethod: 18
    pickups: [{
      address: {
        lat: -23.5703022
        lng: -46.6473154
        address: "Av. Paulista, 100 - Bela Vista, São Paulo - SP, Brasil"
        complement: "8o andar"
      }
      instructions: "Retirar pedido com Jorge"
    }]
    packages: [{
      pickupIndex: 0
      recipient: {
        name: "Baruch Spinoza",
        phone: "1122819603"
      }
      address: {
        lat: -23.635334
        lng: -46.529835
        address: "Av. Estados Unidos, 500 - Parque das Nações, Santo André - SP, Brasil"
        complement: "Apto 133"
      }
      charge: {
        value: "10.00"
        method: 2
        change: "5.00"
      }
      dimensions: {
        width: 10
        height: 10
        length: 10
      }
      instructions: "Entregar pedido para Spinoza"
    }]
  }) {
    success
    orders {
      pk
      packages {
        pk
        status
        pickupWaypoint {
          index
          indexDisplay
          eta
          legDistance
        }
        waypoint {
          index
          indexDisplay
          eta
          legDistance
        }
      }
    }
    errors {
      field
      message
    }
  }
}

e obtenha como resposta:

{
  "data": {
    "createOrder": {
      "success": true,
        "order": {
          "pk": 33940,
            "packages": [
              {
                "pk": 80563,
                "status": "allocating",
                "pickupWaypoint": {
                  "index": 0,
                  "indexDisplay": "A",
                  "eta": 1490047204,
                  "legDistance": 0
                },
                "waypoint": {
                  "index": 1,
                  "indexDisplay": "B",
                  "eta": 1490049018,
                  "legDistance": 7506
                }
              }
            ]
        },
          "errors": []
    }
  }
}

Para saber mais sobre tudo que pode ser feito sobre um pedido com a API da Loggi, clique Pedidos .