Shoper Api lista zamówień i filtrowanie

0

Dobry wieczór,

Koledzy i koleżanki... mam taką potrzebę zrobienia update-u statusu zamówienia na sklepie internetowym Shopera. Udostępnia on swoje api, w sumie wygląda całkiem sensownie, ale ze względu na moją nikłą znajomość tematu mam problem z wyciągnięciem danych, a właściwie ich wyfiltrowaniem
Chodzi mi o zasoby listy zamówień a właściwie wyfiltrowanie chociażby po jakimś id zamówienia.

Używam RestSharpa, najpierw pobieram sobie token i później robię:

var requestOrders = new RestRequest("/webapi/rest/orders", Method.GET);
requestOrders.AddHeader("Authorization", token_type + " " + access_token);
requestOrders.AddParameter("order_id", "233");

var responseOrders = client.Execute(requestOrders);

var orders = JObject.Parse(responseOrders.Content);

I teraz pytanie moje - jak do licha wysłać tam jakiś parametr/filtr? Próbowałem na różne sposoby przepchać to przez AddParameter ale zawsze w odpowiedzi dostaję pełną listę zamówień.... :/
Jak powinienem tego używać?

Później pewnie będę pytał też o PUT....

0

Mnie się wydaje, że zadziała jak zrobisz

requestOrders.AddQueryParameter("order_id", "233");
0

Niestety nie, dalej dostaję całość.

1

A zamiast AddQueryParameter() wpisz ID od razu w url

var requestOrders = new RestRequest("/webapi/rest/orders/233", Method.GET);

Tutaj tak napisali

1

Serio?
Czytaj doksy, a nie z partyzanta lecisz, znalazłem w 15 sekund, kolega wyżej mnie wyprzedził.

0

No, serio, pytałem o filtrowanie bo nie chcę wybierać akurat po id, ale może po dacie, dostawie czy płatności - akurat próbowałem po id filtrować...

0

Z tego co TUTAJ jest napisane, to filtry są tablicą, które są wpisywane w url. Spróbuj z ciekawości zrobić

var requestOrders = new RestRequest("/webapi/rest/orders?['order_id'=>'233']", Method.GET);
requestOrders.AddHeader("Authorization", token_type + " " + access_token);

var responseOrders = client.Execute(requestOrders);

var orders = JObject.Parse(responseOrders.Content);

Ewentualnie jeszcze tak

var requestOrders = new RestRequest("/webapi/rest/orders?filters=['order_id'=>'233']", Method.GET);
requestOrders.AddHeader("Authorization", token_type + " " + access_token);

var responseOrders = client.Execute(requestOrders);

var orders = JObject.Parse(responseOrders.Content);
0

@AdamWox: Niestety, ani jeden ani drugi sposób nie filtruje danych. No nic, będę leciał kolejno po id i odkładał gdzieś z boku te ID które już uzupełniłem o dane które potrzebuję dołożyć. Przy następnym uruchomieniu zacznę od ID+1 i jakoś to będzie.... xD

Chociaż to filtrowanie by ułatwiło sprawę znacznie...

1

Jedyne co możesz zrobić to wysłać mi token na priv i ci to sprawdzę. Do you trust me? 😈

0

bo ten filtr równa się ma wyglądać tak
['field'=>['='=>'value']

Ponadto może orderId nie można użyć w filtrach (bo i po co ktoś miałby dawać obsługę filtra order id, skoro mozemy się do order odwołać po get/123/)
Pokaż jak budujesz filtr ;)

0

Jeśli nie masz większej logiki, więcej warunków to może zostać filtr uproszczony, tak jak ja napisałem

0

No nie mam większej jakiejś logiki, po prostu chce w zależności od sposobu płatności zmieniać status zamówienia więc pikuś...
Co nie zmienia faktu że żaden z wymienionych sposobów nie działał.

var requestOrderList = new RestRequest("/webapi/rest/orders?['payment_id'=>['='=>'1']", Method.GET);
// zwraca wszystkie zamówienia

var requestOrderList = new RestRequest("/webapi/rest/orders?filters=['payment_id'=>['='=>'1']", Method.GET);
//wyrzuca syntax error

['order_id'=>'233'] i filters=['order_id'=>'233'] zachowują się analogcznie.

Dobra, nieważne Panowie, jakoś sobie to obejdę chyba że komuś chce się drążyć :D

0

No to spróbuj

var requestOrderList = new RestRequest("/webapi/rest/orders?filter=['payment_id'=>['='=>'1']", Method.GET);

Ja jestem uparty.

0

A teraz uwaga:

screenshot-20210128154357.png

Więc teoretycznie powinienem się odwoływać tak:

var requeststring = "/webapi/rest/orders?filters={\"payment_id\":{\"=\":\"1\"}}"

Ale dlaczego nie mogę zbudować zmiennej z użyciem " ??????
(z ' nie działa :D)

screenshot-20210128154902.png

1 użytkowników online, w tym zalogowanych: 0, gości: 1