Alterar API List Orders para Order Feed

Olá, @Alan_Oliveira!

Em complemento ao que a @sesnick comentou, queria te dar uma perspectiva do funcionamento do Feed, que é diferente do List orders, mas cumpre a mesma função de maneira mais eficiente.

O List orders te retorna a lista dos pedidos que foram feitos na sua loja naquele período de tempo selecionado.

Já o Feed retorna uma lista de atualizações de pedidos que cumpram os requisitos do filtro. Mas o Feed só recebe atualizações depois que você o configura. Vamos ver um exemplo com a configuração que você fez:

Get - https://xxxx.myvtex.com/api/orders/feed/config
{
“filter”: {
“status”: [
“order-completed”,
“start-handling”,
“handling”,
“ready-for-handling”,
“waiting-ffmt-authorization”,
“cancel”
],
“type”: “FromWorkflow”
},
“queue”: {
“visibilityTimeoutInSeconds”: 350,
“messageRetentionPeriodInSeconds”: 355600
},
“quantity”: 25,
“approximateAgeOfOldestMessageInSeconds”: 24691.625987708518
}

Qualquer pedido que entrar em algum desses status do campo status vai gerar um evento no feed. Digamos que você configurou às 12h e às 12h30 o pedido ABC entra em ready-for-handling. Você consulta o Feed às 12h45 e o feed vai retornar algo parecido com isso:

[
{
"eventId": "ED423DDED4C1AE580CADAC1A4D02DA3F"
"handle": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lZW50aXR ..."
"domain": "Fulfillment"
"state": "ready-for-handling"
"lastState": "window-to-cancel"
"orderId": "ABC"
"lastChange": "2019-08-12T12:20:01.134057Z"
"currentChange": "2019-08-12T20:12:30.7153839Z"
}
]

Aí você toma as devidas ações na loja com essa informação e comita o evento, limpando o feed.

Às 13h o pedido XYZ também chega em ready-for-handling e às 13h05 o ABC chega em start-handling. Nesse caso, se consultar o feed às 13h10, receberá:

[
{
"eventId": "ED423DDOLJHDFHG354AC1A4D02DA3F"
"handle": "dfhg6d5fgh4g6hk8h4u6l84h6h8f4gb6daz8f4g68fg4nghj5k1lhf32lj468gkxv3h5jxv3nb54xv3b5n4gc6h8j7k ..."
"domain": "Fulfillment"
"state": "start-handling"
"lastState": "ready-for-handling"
"orderId": "ABC"
"lastChange": "2019-08-12T12:30:01.134057Z"
"currentChange": "2019-08-12T20:13:05.7153839Z"
},
{
"eventId": "ED423456GDSFADAC1A4D02DA3F"
"handle": "dgfh6s5dfhg46sd5h46fg54h6df5gh46df5g4h6d5fg4h6d5f4gh65d4f6gh54d6fg5h46df5g4h6df5g4h65f ..."
"domain": "Fulfillment"
"state": "ready-for-handling"
"lastState": "window-to-cancel"
"orderId": "XYZ"
"lastChange": "2019-08-12T12:30:01.134057Z"
"currentChange": "2019-08-12T20:13:00.7153839Z"
}
]

Então, novamente, você pode realizar as ações necessárias na loja e comitar os eventos, limpando o feed novamente.

Importante lembrar que que, dados os valores que você estabeleceu na sua configuração, depois que você consulta o feed, os eventos retornados somem de consultas futuras por 350 segundos (visibilityTimeOutInSeconds). Além disso, qualquer evento será automaticamente excluído do feed após 355600 segundos = ±98h (MessageRetentionPeriodInSeconds).

Além dessas documentações que a Fer citou, recomendo também esse guia de integração de pedidos que traz esse fluxo bem explicado.

3 Likes