allegro / allegro-api

Issue tracker and wiki for Allegro REST API
https://developer.allegro.pl/
217 stars 39 forks source link

Scalanie zamówień w jedno i usuwanie ich #9973

Open studiowizjo opened 1 month ago

studiowizjo commented 1 month ago

Pobierajac zamowienie, ktorego checkoutFormId = 808082e2-76a2-11ef-a613-47b0e7fb1065 otrzymujemy zwrotnie nastepujace informacje o id poszczegolnych elementow zamowienia:

{
  "id": "808082e2-76a2-11ef-a613-47b0e7fb1065",
  "messageToSeller": null,
  "buyer": {},
  "payment": {},
  "status": "READY_FOR_PROCESSING",
  "fulfillment": {},
  "delivery": {},
  "invoice": {},
  "lineItems": [
    {
      "id": "d026dd20-7694-11ef-99fc-d3c5743b61d5",
      "offer": {},
      "quantity": 1,
      "originalPrice": {},
      "price": {},
      "reconciliation": null,
      "selectedAdditionalServices": [],
      "vouchers": [],
      "tax": {},
      "boughtAt": "2024-09-19T14:38:35.337Z"
    },
    {
      "id": "da595861-767e-11ef-b28e-2f98dbccc264",
      "offer": {},
      "quantity": 2,
      "originalPrice": {},
      "price": {},
      "reconciliation": null,
      "selectedAdditionalServices": [],
      "vouchers": [],
      "tax": {},
      "boughtAt": "2024-09-19T12:01:40.697Z"
    },
    {
      "id": "da595860-767e-11ef-b28e-2f98dbccc264",
      "offer": {},
      "quantity": 2,
      "originalPrice": {},
      "price": {},
      "reconciliation": null,
      "selectedAdditionalServices": [],
      "vouchers": [],
      "tax": {},
      "boughtAt": "2024-09-19T12:01:40.697Z"
    }
  ],
  "surcharges": [],
  "discounts": [],
  "note": null,
  "marketplace": {},
  "summary": {},
  "updatedAt": "2024-09-19T16:17:00.774Z",
  "revision": "2f44a6b8"
}

Problem polega na tym, ze te same id dla "lineItems" sa powiazane rowniez z innymi zamowieniami

Obecnie tych zamowien nie mozna juz pobrac i probujac to zrobic otrzymujemy blad:

Client error: `GET https://api.allegro.pl/order/checkout-forms/d02f8fb0-7694-11ef-99fc-d3c5743b61d5` resulted in a `404 Not Found` response: {"errors":[{"code":"CheckoutFormNotFoundException","message":"Checkout form d02f8fb0-7694-11ef-99fc-d3c5743b61d5 not fou (truncated...)

Wyglada to wiec tak jakby najpierw istnialy te 2 zamowienia:

z tymi 3 itemami, a nastepnie zamowienia zostaly usuniete i scalone w jedno nowe o id 808082e2-76a2-11ef-a613-47b0e7fb1065.

Jak jednak mozemy wykryc taka sytuacje? Korzystamy z dziennika zdarzen (https://api.allegro.pl/order/events) do pobierania informacji o kolejnych zdarzeniach zamowien.

MaciejFrackowiak commented 1 month ago

Do momentu kiedy kupujący nie opłaci zamówienia lub nie wybierze wysyłki za pobraniem (status zamówienia READY_FOR_PROCESSING) to składowe zamówienia i sama zawartość zamówienia może ulec zmianie. Dlatego gdy, otrzymasz event READY_FOR_PROCESSING możesz przyjąć, że dla zamówienia, którego ono dotyczy nic się już nie zmieni.

studiowizjo commented 1 month ago

Ok. Rozumiem wiec, ze pobierajac zdarzenia wystarczy pominac rodzaj BOUGHT aby uniknac tego problemu, natomiast w dalszym ciagu pobierac wszystkie inne aby miec najbardziej pelne i aktualne informacje?

BOUGHT: purchase without checkout form filled in
FILLED_IN: checkout form filled in but payment is not completed yet so data could still change
READY_FOR_PROCESSING: payment completed. Purchase is ready for processing
BUYER_CANCELLED: purchase was cancelled by buyer
FULFILLMENT_STATUS_CHANGED: fulfillment status changed
AUTO_CANCELLED: purchase was cancelled automatically by Allegro.
MaciejFrackowiak commented 1 month ago

Również w przypadku FILLED_IN możesz otrzymać niepełne dane lub mogą się one zmienić. Generalnie, co do zasady rozpoczęcie przygotowania wysyłki powinno nastąpić w momencie, gdy danego zamówienia pojawi się event READY_FOR_PROCESSING i taki też status pojawi się jako status zamówienia.