Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

  1. Integração de pedidos.
  2. Integração de pedidoscardápio.
  3. Requisição Webhook.


...

1. Integração de pedidos

São disponibilizadas algumas APIs que permitem a integração de pedidos realizados pela plataforma Delivery App. Todas as APIs retornam os dados em formato JSON.

...

1.1.4 Alterar status do pedido 

           1.1 API de pedidos

                   1.1.1 Listagem de pedidos POST::/v1/order

O PDV deverá criar uma rotina de consulta na API de listagem de pedidos, fazendo consultas em torno de 60 segundos (recomendado não usar um tempo menor). Será retornada uma lista de pedidos, que deve ser percorrida, usando o ID no próximo passo:

...

  • id (integer): id do pedido
  • name (string): nome do cliente
  • email (string): email do cliente
  • phone (string): telefone do cliente
  • date (string): data do pedido
  • updated_at (string): data de modificação do pedido
  • status (integer): 0 = Novo Pedido, 1 = Confirmado, 2 = Entregue, 3 = Cancelado (restaurante), 4 = Enviado, 5 = Cancelado Automaticamente (sistema), 6 = Cancelado, com Pagamento Estornado (restaurante), 7 = Cancelado Automaticamente, com Pagamento Estornado (sistema), 8 = Aguardando aprovação do pagamento online, 9 = Pagamento online reprovado
  • tax (decimal): valor da taxa de entrega do pedido
  • voucher_code (string): Código do voucher usado
  • voucher_discount (decimal): Desconto aplicado ao pedido através do uso do voucher (cupom de desconto)
  • payment_method (string): forma de pagamento
  • notes (string): observações do pedido
  • street (string): rua para entrega
  • cep (string): CEP para entrega
  • number (string): número para entrega
  • city (string): cidade para entrega
  • neighborhood (string): bairro para entrega
  • complement (string): complemento do endereço para entrega
  • reference_point (string): ponto de referência do endereço para entrega
  • forma_entrega (integer): forma de entrega do pedido (1 = delivery, 2 = retirar no balcão, 3 = pedir na mesa)
  • table_name (string): quando forma_entrega for 3, será retornado o nome da mesa.
  • order_number (integer): número do pedido
  • troco (decimal): troco para (valor que o cliente irá dar em dinheiro)
  • client_id (integer): id do cliente
  • payment_online (boolean): se true o pagamento foi feito online pelo app ou web
  • latitude (decimal): latitude do endereço de entrega
  • longitude (decimal): longitude do endereço de entrega
  • cpf_in_note (string): se possuir algum valor indica que o usuário solicitou CPF na nota
  • printed (boolean): se comanda do pedido foi impressa
  • total_discount (decimal): total de desconto que o pedido recebeu
  • taxa_extra (decimal): valor da taxa extra
  • taxa_extra_title (string): título do que foi cobrado como taxa extra
  • sub_total (decimal): sub total do pedido (total dos produtos comprados)
  • total (decimal): total do pedido, valor que cliente pagou (já incluindo taxa de entrega, taxas e descontos)

                   1.1.2 Listagem de detalhes do pedido POST::/v1/order/{order_id}

É nessa API que o PDV irá integrar os produtos vendidos. A consulta na API de detalhes do pedido retornará todos os detalhes da venda, bem como os produtos vendidos.

...

  • title (string): titulo do item
  • quantity (integer): quantidade do item
  • name (string): nome da variação do item
  • price (decimal): valor do item
  • total (decimal): total pago pelo item (inclui complementos e quantidade)
  • notes (string): observações para este item
  • ref (string): REF do item
  • variacao_ref (string): REF da variação
  • ComplementCategories (array): cada categoria de complemento pode conter vários complementos. Ex de categoria de complemento “Adicionais”.
  • title (string): título da categoria de complemento
  • Complements (array): contém os complementos da categoria
    • quantity (integer): quantidade do complemento
    • title (string): título do complemento
    • price_un (decimal): preço unitário do complemento
    • total (decimal): total pago pelo complemento
    • ref (string): REF do complemento
    • title (string): título da categoria de complemento
    • Complements (array): contém os complementos da categoria


PizzaOrders

  • quantity (integer): quantidade da pizza
  • total_un (decimal): total unitário pago pela pizza
  • notes (string): observações da pizza
  • pizza_maior_valor (boolean): true - foi cobrado o maior valor dos sabores. false - foi calculado a média dos sabores
  • PizzaTamanho (array): informações sobre o tamanho da pizza
    • title (string): titulo do tamanho
    • qtd_sabor (integer): quantidade de sabor da pizza
    • ref (string): REF do tamanho
    • ComplementCategories (array): segue o mesmo modelo dos itens
  • PizzaMassa (array): informações sobre massa/borda da pizza
    • title (string): título da massa/borda
    • price (decimal): valor da massa/borda
    • ref (string): REF da massa/borda
  • PizzaSabor (array): informações sobre os sabores da pizza
    • title (string): título do sabor
    • price (decimal): valor do sabor
    • ref (string): REF do sabor
    • ref_sabor_tamanho (string): REF do sabor vinculado ao tamanho
    • ComplementCategories (array): segue o mesmo modelo dos itens

...

  • value (string): se type for 1, retornará null. Caso contrário retornará o bônus.
  • Products (Array)
    • id (integer): id
  • do produto
    • da opção
  • type
    • title (string):
  • tipo do item. Pode retornar ‘item’ ou ‘pizza’. 
  • name (string): nome do produto
  • calculation (integer):
    • titulo da opção
    • price_un (decimal): preço unitário
    • quantity (integer):
  • sempre será 1
    • quantidade
    • subtotal (decimal): subtotal
  • dos produtos
    • da opção
  • Options as opções são os itens/pizzas em si comprados
    • ComplementCategories (Array)
  • :
      • id (integer): id
  • da opção
      • do complemento
      • title (string):
  • titulo da opção
      • título do complemento
      • price_un (decimal): preço do unitário
      • quantity (integer): quantidade
      • ref (string): código REF de integração
      • subtotal (decimal): subtotal
  • da opção
  • ComplementCategories (Array)
      • do complemento
      • id (integer): id da categoria de complemento
      • title (string): título da categoria de complementos
      • Complements (Array)
    • id (integer): id do
    • complemento
    • produto
    • title
    • type (string):
    • título do complemento
    • price_un (decimal): preço do unitário
    • quantity
    • tipo do item. Pode retornar ‘item’ ou ‘pizza’. 
    • name (string): nome do produto
    • calculation (integer):
    • quantidade
    • ref
    • quantity (
    • string
    • integer):
    • código REF de integração
    • sempre será 1
    • subtotal (decimal): subtotal
    • do complemento
    • dos produtos
    • Options (Array): as opções são os itens/pizzas em si comprados

                   1.1.3 Formas de Pagamento

Clique aqui para ir ao teste e poderá verificar a api de POST

...

{

  "code": 200,

  "name": "Success",

  "payment_methods": [

    "Dinheiro",   

    "Débito Mastercard",

    "Débito Visa",

    "Elo",

    "Crédito Hipercard"

  ],

  "payment_options": [

    {

      "name": "Dinheiro",

      "ref": "106"

    },

    {

      "name": "Débito Mastercard",

      "ref": "100"

    },

    {

      "name": "Débito Visa",

      "ref": "101"

    },

    {

      "name": "Débito Elo",

      "ref": "105"

    } 

]

}


                   1.1.4 Alterar status do pedido

É importante o PDV notificar a API Delivery quando houver alguma mudança de status (confirmação do pedido, saiu para entrega, entregue e/ou pronto), e principalmente se houver cancelamento. Pois a API Delivery irá notificar o consumidor via email e push notification, essa notificação é feita através da API de alteração de status.


...

           2.1. Integração de cardápio

São disponibilizadas algumas APIs que permitem a integração de cardápio com a plataforma Delivery App, permitindo que o PDV consulte e cadastre produtos, pizzas e categorias e altere sua disponibilidade.

                  2.1.1 API de produtos

A API de cardápio permite a atualização de itens do cardápio, podendo alterar o título e a disponibilidade, e permite também a atualização das variações dos itens, permitindo alterar preço, título e disponibilidade. Permite também cadastro de Categorias e Pizzas.

                      2.1.1.1 Cadastro de categoria

Clique aqui para ir ao teste e poderá verificar a api de POST

...

O retorno “code”:201 significa que a categoria foi cadastrada com sucesso. O ID é o ID interno da categoria no Delivery App.

                  2.1.2 Atualização de categoria

Clique aqui para ir ao teste e poderá verificar a api PUT.

...

Cada categoria tem seu retorno individual, quando atualizada com sucesso será retornado updated: true.

                  2.1.3 Atualização de item

Clique aqui para ir ao teste e poderá verificar a api PUT.

...

O retorno informa individualmente se o item foi atualizado ou não, se updated = true, o item foi atualizado com sucesso, se falso, não foi possível atualizar e o message deverá conter o motivo de não ter atualizado.

                  2.1.4 Atualização de variação

Clique aqui para ir ao teste e poderá verificar a api PUT.

...

O retorno informa individualmente se a variação foi atualizado ou não, se updated = true, a variação foi atualizado com sucesso, se falso, não foi possível atualizar e o message deverá conter o motivo de não ter atualizado.

                  2.1.5 Cadastro de item

Clique aqui para ir ao teste e poderá verificar a api POST.

...

O retorno informa se o item foi cadastrado com  "message: Item cadastrado com sucesso".

                  2.1.6 Cadastro de variações de item

Clique aqui para ir ao teste e poderá verificar a api POST.

...

O retorno informa se o item foi cadastrado com  "message: Variação cadastrado com sucesso".

                  2.1.7 Cadastro de complementos global

Clique aqui para verificar a api POST.

...

{

  "code": 200,

  "name": "Success",

  "Results": [

    {

      "ref": "222222",

      "inserted": true

    },

    {

      "ref": "333333",

      "inserted": false,

      "message": "Erro de cadastro de complemento",

      "Errors": [

        "Título não pode ficar em branco",

        "Título não pode ficar em branco"

      ]}

  ]

}


                        2.1.7.1 Cadastro Categoria de complementos e grupos de complementos

Clique aqui para verificar a api POST.

...

{

  "code": 200,

  "name": "Success",

  "Results": [

    {

      "ref": "111111",

      "inserted": true

    },

    {

      "ref": "222222",

      "inserted": false,

      "message": "parâmetro Complements não encontrado ou vazio",

      "Errors": [

        "parâmetro Complements não encontrado ou vazio"

      ]

    }

  ]

}


                        2.1.7.2 Vincular Grupos de Complementos ao Item

Clique aqui para verificar a api POST.

...

{

  "code": 200,

  "name": "Success",

  "Results": [

    {

      "ref": "8804505",

      "inserted": true

    },

    {

      "ref": "1505",

      "inserted": false,

      "message": "Item não encontrado",

      "Errors": [

        "Item não encontrado"

      ]

    },

    {

      "ref": "8804505",

      "inserted": false,

      "message": "Grupos de complemento não encontrado",

      "Errors": [

        "Grupos de complemento não encontrado"

      ]}

  ]

}

 

                  2.1.8 Cadastro de complementos padrão

Clique aqui para ir ao teste e poderá verificar a api POST.

...

O retorno informa se o item foi cadastrado com  "message: Complemento cadastrado".

                  2.1.9 Cadastro de sabor de pizza

Clique aqui para ir ao teste e poderá verificar a api POST.

...

O retorno informa se o item foi cadastrado com  "message: Sabor cadastrado".

                  2.1.10 Cadastro de categoria de sabor de pizza

Clique aqui para ir ao teste e poderá verificar a api POST.

...

O retorno informa individualmente se o item foi atualizado ou não, se inserted = true, o item foi atualizado com sucesso, se falso, não foi possível atualizar e o message deverá conter o motivo de não ter atualizado.

                  2.1.11 Cadastro de tamanho de pizza 

Clique aqui para ir ao teste e poderá verificar a api POST.

...

O retorno informa individualmente se o item foi atualizado ou não, se inserted = true, o item foi atualizado com sucesso, se falso, não foi possível atualizar e o message deverá conter o motivo de não ter atualizado.

 

                  2.1.12 Cadastro de categoria de tamanho de pizza

Clique aqui para ir ao teste e poderá verificar a api POST.

...

O retorno informa individualmente se o item foi atualizado ou não, se inserted = true, o item foi atualizado com sucesso, se falso, não foi possível atualizar e o message deverá conter o motivo de não ter atualizado.

2. Requisição Webhook

A empresa que desejar dar suporte a comunicação através do recurso de webhook da Neemo deverá implementar uma rota na sua aplicação que receberá uma requisição HTTP POST, essa rota (URL) deverá então ser cadastrada no sistema da Neemo onde poderá ser associada às lojas.  

...