Pular para o conteúdo

Controle de fila de integração de pedidos (Feed)

O Orders Feed é uma lista de pedidos disponíveis para serem integrados por parceiros desenvolvedores. O Feed não é uma lista de pedidos, mas uma lista de eventos. Por exemplo, se um pedido é recebido e confirmado na plataforma, é disparado um evento que aparece como um dos objetos no retorno do endpoint.

Ao utilizar o endpoint de get orders para integrar pedidos, o método disponibiliza os dados gerais dos pedidos sem o controle de quais dados são enviados na integração.

Dessa forma, Orders Feed foi desenvolvido especificamente para acompanhar as atualizações de pedidos e garantir o controle na integração. Assim, podemos evitar riscos de pedidos duplicados ou falta de integração de algum pedido.

🚧 Migrando sua loja para Olist Ecommerce

Se você já possui uma integração baseada numa lista de pedidos via requisição de API, recomendamos a migração utilizando o Orders Feed. No entanto, é importante atentar-se que utilizando Orders Feed é preciso uma mudança no fluxo de integração. Saiba mais em guia de integração de pedidos para entender como o processo é feito.

Para receber informações sobre eventos de pedidos pedidos da sua loja, você pode utilizar a API Orders Feeds:

curl --request GET \
--url https://{host da loja}/api/feed/orders \
--header 'Authorization: Bearer {token}'
--header 'Content-Type: application/json'

A resposta dessa requisição com retorno 200 é um body como:

[
{
"id": 45,
"cart_id": 147,
"code": "34B2434D06",
"token": "e9PGdxjuDuccJCeo6sHaoR9VjvgUzeYs",
"status": "confirmed",
"client_id": 57,
"deposit": false,
"card": false,
"slip": true,
"slip_url": "https://api.pagar.me/1/boletos/live_clxertk0tm50cetsl4y",
"slip_token": null,
"payment_method": "Boleto",
"payment_tid": null,
"shipping_price": 0.0,
"shipping_label": "Opção A",
"delivery_type": "expressa",
"subtotal": 1000.0,
"discount_price": 0.0,
"taxes": 0.0,
"total": 1000.0,
"tracking_code": null,
"tracking_code_list": [],
"updated_at": "2022-06-23T16:21:12.290-03:00",
"received_at": "2022-06-23T16:17:20.723-03:00",
"confirmed_at": "2022-06-23T16:21:12.091-03:00",
"shipped_at": null,
"shipping_tracked_at": null,
"delivered_at": null,
"canceled_at": null,
"installments": 1,
"card_number": null,
"extra": {
"_ga": "GA1.1.1485965388.16560137",
"cotation_id": "387518131220883",
"handling_days": "1",
"delivery_company": "Total"
},
"email": "xyz@vnda.com.br",
"delivery_days": 9,
"card_validity": null,
"browser_ip": "176.210.24.97",
"payment_due_date": "2022-06-25T23:59:59.999-03:00",
"slip_due_date": "2022-06-25T23:59:59.999-03:00",
"paid_at": null,
"payment_gateway": "pagarme",
"expected_delivery_date": "2022-07-02",
"agent": null,
"channel": "ecommerce",
"coupon_code": null,
"affiliate_tag": null,
"payment_authorization": null,
"user_id": null,
"user_code": null,
"delivery_message": "Prazo de até 9 dias corridos para a entrega do pedido",
"rebate_token": null,
"rebate_discount": 0.0,
"has_split": false,
"pix": false,
"pix_qr_code": null,
"ame": false,
"ame_qr_code": null,
"antifraud_assurance": null,
"items": [
{
"id": 76,
"variant_id": 796,
"quantity": 1,
"price": 1000.0,
"total": 1000.0,
"weight": 1.0,
"width": 1.0,
"height": 1.0,
"length": 1.0,
"extra": {},
"picture_url": "//a1.vnda.com.br/xyz/2022/06/23/16_17_20_810_13_5_7_754_15_2_4_463_20210901230252_7418992582_h.png?v=1656011840",
"reference": "REF999999",
"sku": "REF999999-1",
"product_name": "Produto Exemplo",
"variant_name": "Variante 1",
"package": "34B2434D06-01",
"product_id": 435,
"original_price": 1000.0,
"place_id": null,
"place_name": null,
"place_city": null,
"has_customizations": false
}
]
}
]

Se você quiser incluir dados do cliente e de envio, utilize na chamada o parâmetro include_shipping_address=true. Será incluído o seguinte objeto no json de retorno:

"shipping_address": {
"id": 99,
"first_name": "Teste",
"last_name": "Olist Ecommerce",
"company_name": null,
"email": "xyz@olistecommerce.com.br",
"documents": {
"cpf": "12312312312"
},
"street_name": "Rua XYZ",
"street_number": "00",
"complement": null,
"neighborhood": "XYZ",
"first_phone_area": "11",
"first_phone": "99999901",
"second_phone_area": null,
"second_phone": null,
"reference": null,
"zip": "90540140",
"city": "Porto Alegre",
"state": "RS",
"recipient_name": "Teste Olist Ecommerce"
}

Também é possível filtrar por situação do pedido, utilizando o parâmetro status.

Um exemplo de chamada utilizando os parâmetros supracitados é:

curl --request GET \
--url https://{host da loja}/api/feed/orders?include_shipping_address=true&status=confirmed \
--header 'Authorization: Bearer {token}'
--header 'Content-Type: application/json'

Após integração do pedido, você deve confirmar o(s) pedido(s) no feed através do método POST , utilizando a requisição:

curl --request POST \
--url https://{host da loja}/api/feed/orders
--header 'Authorization: Bearer {token}'
--header 'X-Shop-Host: {host da loja}'
--header 'Content-Type: application/json'
-d '{"orders":[{"code":"CODIGOPEDIDO1"},{"code":"CODIGOPEDIDO2"}]}'

A resposta dessa requisição deve ser um retorno 204 com no content.

Assim, confirmado que o pedido foi removido ou consumido da listagem de eventos no feed.