Wybór usługi z oferty
Większość integracji z góry wie, której usługi przewoźnika chce, i przekazuje
stały service_id. Gdy tak nie jest — gdy chcesz pokazać klientowi (albo
własnemu silnikowi reguł) zbiór usług, które faktycznie mogą przewieźć tę
paczkę, i jedną z nich wybrać — najpierw wyceń przesyłkę we wszystkich
usługach, a potem wybieraj według pełnego zestawu ograniczeń, nie samej
ceny.
Najtańsza wycena to często zły wybór: usługa punkt–punkt potrzebuje
identyfikatora automatu, międzynarodowa — danych celnych, część usług wymaga
zamówionego odbioru kurierskiego. Usługa, której wymagań nie spełnisz,
wywali się przy order_send, nie przy wycenie.
Ten przewodnik obejmuje początek przepływu. Wszystko po utworzeniu zamówienia (etykieta, śledzenie, anulowanie) jest identyczne jak w Cyklu życia zamówienia — ta strona zastępuje tylko sposób wyboru usługi.
order_valuation (bez service_id) → service_structure (mapowanie wymagań) →
uzupełnienie payloadu (odbiór / punkt / cło) → order_send →
etykieta / śledzenie / … (zobacz Cykl życia zamówienia)
Przykłady używają SDK PHP; każdy krok podaje nazwę metody API, więc przepływ mapuje się 1:1 na surowe żądania z kopertą z dowolnego języka.
1. Wyceń we wszystkich usługach — order_valuation bez usługi
Zbuduj zamówienie na neutralnym szkielecie — odbiór SELF, bez punktu,
bez cła — i pomiń usługę. order_valuation zwróci wtedy price_table z
każdą usługą, która może przewieźć tę paczkę.
Code
Bez SDK — to samo wywołanie, bez service_id w payloadzie:
Code
Wyceniaj szkielet, nie finalne zamówienie
Dodanie pól specyficznych dla usługi (punkt, odbiór kurierski, cło) może zmienić albo ograniczyć dostępną ofertę. Najpierw wyceń neutralne zamówienie, uzupełniaj dopiero po wyborze.
2. Zmapuj ofertę na service_structure — sprawdź wymagania
price_table mówi, kto może przewieźć paczkę i za ile.
service_structure mówi, czego każda usługa wymaga. Połącz je po
service_id. Słownik czytaj z cache (odświeżaj mniej więcej raz dziennie),
zamiast wołać go przy każdej wycenie — zobacz
Dobre praktyki.
Code
Co każda flaga oznacza dla payloadu, który zbudujesz w kroku 3:
Warunek usługi (z service_structure) | Co musisz dodać przed order_send |
|---|---|
pickup_courier = 2 (kurier wymagany) | pickup.type = COURIER + date / hours_from / hours_to — okno wybierz z pickup_hours |
pickup_courier = 0 (kurier niedostępny) | tylko SELF / nadanie własne — bez odbioru kurierskiego |
trasa przez punkt (door_to_point / point_to_point / point_to_door = 1) | foreign_address_id z points/{type}/ po właściwej stronie (nadawca i/lub odbiorca) |
domestic = 0 (międzynarodowa) | cło: customs_data per pozycja przesyłki (+ blok customs na poziomie zamówienia, gdy usługa go wymaga) |
| pobranie / usługi dodatkowe | sprawdź options w słowniku oraz option_cod / option_send / option_deliver na wybranym punkcie |
Najtaniej ≠ najlepiej
Wybieraj według własnej polityki — SLA, trasa i to, czy faktycznie spełnisz
dodatkowe wymagania — nie według najniższego price_gross. Cały sens tego
przepływu to zawężenie oferty do usług wykonalnych.
3. Uzupełnij payload dla wybranej usługi
Po wyborze ustaw usługę i dodaj tylko te pola, których ta usługa potrzebuje.
Code
Blok customs na poziomie zamówienia (content_type, EORI_number,
documents_form, documents) nie ma jeszcze typowanego buildera. Jeśli
usługa go wymaga, zamień zamówienie przez toArray(), dodaj blok i przekaż
tablicę do sendOrder() — przyjmuje obie formy.
Pułapka nazewnicza odbioru
Przy tworzeniu zamówienia pola są w liczbie mnogiej — hours_from /
hours_to. Osobne endpointy pickup / batch_pickup używają liczby
pojedynczej hour_from / hour_to. Zobacz Typy odbioru.
Uzupełnienie zamówienia może zmienić jego cenę — jeśli pokazałeś klientowi pierwszą wycenę, wyceń finalny payload ponownie przed wysłaniem (zobacz Cykl życia zamówienia → krok 2b).
4. Utwórz zamówienie — order_send
Code
order_send nie jest idempotentne — ponowione żądanie po timeoucie może
utworzyć zduplikowane zamówienie. Przed ponowieniem uzgodnij stan przez
getOrders(), nigdy nie ponawiaj zapisu na ślepo. Zobacz
dobre praktyki.
5. Dalej jak zwykle
Od tego miejsca przepływ jest identyczny jak w Cyklu życia zamówienia: pobierz etykietę, opcjonalnie kod nadania / potwierdzenie zbiorcze, potem śledź przesyłkę (Śledzenie). Anulowanie i wgląd w zamówienia bez zmian.
Zobacz też: Cykl życia zamówienia · Typy odbioru · Śledzenie · Dobre praktyki · Podpisywanie żądań (HMAC)

