DOCS

Utwórz pojedynczą przesyłkę

Utwórz pojedynczą przesyłkę

Przepływ GraphQL CreateDeclarationShipment tworzy przesyłkę Japan Post od danych wyjściowych do gotowej do druku etykiety w jednej rundzie.

CreateDeclarationShipment łańcuchuje razem sześć mutacji *Workflow w jedno żądanie GraphQL. Każdy krok opiera się na danych, które dostarczyły poprzednie kroki, i wszystkie są przesyłane razem, aby można było utworzyć pełną przesyłkę w jednej rundzie:

partyCreateWorkflow            → opisz źródłowe i docelowe strony
itemCreateWorkflow             → opisz pozycje linii
cartonsCreateWorkflow          → opisz fizyczne opakowanie
shipmentRatingCreateWorkflow   → zarejestruj ofertę stawki przewoźnika
landedCostCalculateWorkflow    → oblicz cła / podatki / opłaty
shipmentCreateWorkflow         → utwórz przesyłkę + etykietę

Mutacje Workflow są zaprojektowane do łańcuchowania: nie musisz przesyłać identyfikatorów z jednego kroku do następnego, a nie musisz wysyłać osobnego żądania na krok. Prześlij cały dokument, otrzymaj ostateczny Shipment.

Gdy serviceLevel w ostatnim kroku jest poziomem usług Japan Post (japan_post.*), Zonos wywołuje Japan Post Label API (kod 52) w Twoim imieniu, używając numerów Late Pay Twojego konta zweryfikowanego, generuje etykietę i numer śledzenia, tworzy identyfikator deklaracji i łączy je – wszystko wewnątrz ostatniego kroku shipmentCreateWorkflow.

Dlaczego jedna mutacja? Każdy krok zależy od poprzedniego (koszt przesłania wymaga elementów + stron; etykieta wymaga wszystkiego). Pakowanie ich w jeden dokument GraphQL zapewnia spójność danych i pozwala uniknąć pięciu dodatkowych rund.

Punkt końcowy i uwierzytelnianie 

Wszystkie żądania w tym łańcuchu używają tego samego punktu końcowego. Co przesyłasz w nagłówkach, zależy od Twojej konfiguracji – wybierz swoją kartę.

URL:

https://api.zonos.com/graphql

Nagłówki:

Wysyłasz własne zamówienia na swoje konto zweryfikowane. Uwierzytelniaj się jako ty – nie jest potrzebny klucz konta.

credentialToken: {{YOUR_API_TOKEN}}

Gdzie go znaleźć: Pulpit nawigacyjny Zonos → UstawieniaIntegracje → sekcja Klucz konta. Skopiuj token w wierszu Klucz API; to jest Twój credentialToken.

Przykładowe żądanie 

Pełne żądanie CreateDeclarationShipment, które możesz skopiować i dostosować – mutacja, jej zmienne i odpowiedź – dla pojedynczej paczki Japan Post wysłanej DDP do USA. Każde wejście zostało rozbite w sekcji krok po kroku poniżej.

1mutation CreateDeclarationShipment(
2$partyInput: [PartyCreateWorkflowInput!]!
3$itemInput: [ItemCreateWorkflowInput!]!
4$cartonInput: [CartonCreateWorkflowInput!]!
5$shipmentRatingInput: ShipmentRatingCreateWorkflowInput!
6$landedCostInput: LandedCostWorkFlowInput!
7$shipmentInput: ShipmentCreateWorkflowInput!
8) {
9 partyCreateWorkflow(input: $partyInput) {
10 id
11 type
12 location {
13 line1
14 locality
15 postalCode
16 countryCode
17 }
18 }
19 itemCreateWorkflow(input: $itemInput) {
20 id
21 name
22 sku
23 amount
24 currencyCode
25 hsCode
26 }
27 cartonsCreateWorkflow(input: $cartonInput) {
28 id
29 length
30 width
31 height
32 dimensionalUnit
33 weight
34 weightUnit
35 }
36 shipmentRatingCreateWorkflow(input: $shipmentRatingInput) {
37 id
38 amount
39 }
40 landedCostCalculateWorkflow(input: $landedCostInput) {
41 id
42 method
43 currencyCode
44 amountSubtotals {
45 duties
46 taxes
47 fees
48 shipping
49 landedCostTotal
50 }
51 }
52 shipmentCreateWorkflow(input: $shipmentInput) {
53 id
54 trackingDetails {
55 number
56 }
57 shipmentCartons {
58 label {
59 url
60 }
61 }
62 }
63}

Krok po kroku 

Kolumna Status w każdej tabeli poniżej używa tych terminów:

  • Wymagane – żądanie nie powiedzie się bez tego.
  • Wymagane dla etykiety – opcjonalne w schemacie GraphQL, ale potrzebne do utworzenia ważnej etykiety Japan Post USA.
  • Warunkowe – wymagane w zależności od innego pola (zanotowane w tekście).
  • Rekomendowane – opcjonalne, ale zapewnia dokładne cła i podatki.
  • Opcjonalne – nie jest potrzebne.

1. partyCreateWorkflow

Tworzy strony zaangażowane w przesyłkę – co najmniej ORIGIN (skąd wysyłka wysyła) i DESTINATION (kupujący / adresat).

PoleStatusUwagi
typeWymaganeORIGIN, DESTINATION, RETURN, itp.
location.countryCodeWymaganeKod kraju ISO-2.
location.line1, locality, administrativeAreaCode, postalCodeWymagane dla etykietyPola adresu potrzebne do ważnej etykiety.
person.firstName, lastName, phoneWymagane dla etykietySzczegóły kontaktu potrzebne do ważnej etykiety.
person.companyName, emailOpcjonalne

Przykładowe ładowanie:

[
  { "type": "DESTINATION", "location": { "countryCode": "US" }, "person": {} },
  { "type": "ORIGIN", "location": { "countryCode": "JP" }, "person": {} }
]

Odpowiedź zwraca utworzone identyfikatory Party i rozwiązane pola adresu.

2. itemCreateWorkflow

Tworzy pozycje linii, które tworzą przesyłkę. Są to jednostki SKU, które pojawią się na fakturze handlowej i będą napędzać obliczenie kosztu przesłania.

PoleStatusUwagi
currencyCodeWymaganeWaluta ceny jednostkowej.
quantityWymaganeLiczba jednostek tego elementu.
amountWarunkoweCena jednostkowa (nie całkowita). Wymagane, chyba że podano totalAmount.
totalAmountOpcjonalneAlternatywa dla amount; amount pochodzi z totalAmount / quantity.
hsCodeRekomendowaneKod taryfowy Sharmonizowanego Systemu. Wpływa na stawki ceł.
countryOfOriginRekomendowaneKod ISO-2 miejsca produkcji artykułu. Wpływa na cło / FTA.
name, descriptionRekomendowaneNazwa produktu dostępna dla klienta + opis.
customsDescriptionOpcjonalnePrzesłonięcie opisu celnego.
sku, productIdOpcjonalneTwoje wewnętrzne identyfikatory.
measurementsOpcjonalneWaga / wymiary na jednostkę.

Kod HS, kraj pochodzenia i kwota to trzy pola, które najbardziej wpływają na wynik cła / podatku w kroku 5.

3. cartonsCreateWorkflow

Tworzy paczki fizyczne – pudełka, worki foliowe lub listy, które będą zawierać artykuły.

PoleStatusUwagi
dimensionalUnitWymaganeINCH lub CENTIMETER.
weight, weightUnitWymagane dla etykietyJapan Post wymaga wagi paczki.
length, width, heightOpcjonalneWymiary zewnętrzne.
typeOpcjonalneStyl opakowania (pudełko, worek foliowy, list). Domyślnie PACKAGE.

Każdy karton staje się jedną przesyłką na etykiecie przewoźnika w kroku 6. Wiele kartonów → przesyłka wieloczęściowa z jednym numerem śledzenia na karton.

4. shipmentRatingCreateWorkflow

Rejestruje ofertę stawki, którą kupiec pobiera od kupującego za wysyłkę.

PoleStatusUwagi
amountWymaganeCo kupujący płaci za wysyłkę. Przesyłaj 0, jeśli jest darmowe.
currencyCodeWymaganeWaluta amount.
serviceLevelCodeWymaganeKod usługi przewoźnika (np. japan_post.air.parcel).
displayNameOpcjonalneŁadna nazwa do paragonu / faktury.

To jest stawka, którą kupujący otrzymał w kasie. Wpływa na obliczenie kosztu przesłania jako „wysyłka" podsumy, aby cła i podatki były obliczane względem prawidłowej wartości CIF.

5. landedCostCalculateWorkflow

Uruchamia obliczenie ceł, podatków i opłat dla kraju docelowego. Używa artykułów, stron i kosztu wysyłki z poprzednich kroków.

PoleStatusUwagi
endUseWymaganeNOT_FOR_RESALE lub FOR_RESALE. Niektóre miejsca docelowe stosują różne stawki dla użytku handlowego w stosunku do osobistego.
tariffRateWymaganeDomyślnie ZONOS_PREFERRED, jeśli pominięte. Mówi Zonosowi, które źródło taryfy / metodologię zastosować.
calculationMethodRekomendowaneDDP (kupujący opłaca z góry) lub DDU (kupujący płaci przy drzwiach). Użyj DDP dla opłacone z góry. Określa, czy LandedCost.amountSubtotals obejmuje cło / podatek.
currencyCodeOpcjonalneWaluta zwrócenia podsumowań kosztu lądowania.
arrivalDateOpcjonalneKursy wymiany i harmonogramy taryf są przypięte do tej daty, jeśli jest podana.

Odpowiedź zawiera amountSubtotals (duties, taxes, fees, shipping, landedCostTotal) – to są liczby, które pokazujesz kupującemu w kasie i które są drukowane na fakturze handlowej.

6. shipmentCreateWorkflow

Krok terminalowy – tworzy encję Shipment, generuje etykietę przewoźnika i (opcjonalnie) fakturę handlową / podsumowanie paczki.

W przypadku kont zweryfikowanych Japan Post, tutaj Zonos wywołuje Japan Post Label API (kod 52) w Twoim imieniu, wstrzykuje numery Late Pay, tworzy identyfikator deklaracji i łączy identyfikator deklaracji z numerem śledzenia zwracanym przez Japan Post.

Pola kluczowe:

PoleStatusUwagi
serviceLevelWymagane dla etykietyUsługa Japan Post do wysyłki (np. japan_post.air.ems_merchandise). Musi być japan_post.* poziomem usługi.
generateLabelOpcjonalneDomyślnie true; musi być true aby zwrócić etykietę.
contentsTypeRekomendowaneSALE_OF_GOODS, GIFT, DOCUMENTS, SAMPLE, itp. Napędza obsługę celną.
nonDeliveryOpcjonalneCo przewoźnik powinien zrobić w przypadku nieudanej dostawy: RETURN, ABANDON, FORWARD.
referencesOpcjonalneNumery referencyjne dostarczone przez kupca drukowane na etykiecie i fakturze handlowej. Patrz poniżej.
declaredValue / isDeclaredValueOpcjonalneWartość ubezpieczenia dla przesyłki.
shipmentConsolidationIdOpcjonalneUżywane, gdy ta przesyłka jest częścią dispatch zbiorczego.

references sub-input

Te pola są drukowane na etykiecie przewoźnika i / lub fakturze handlowej. Użyj ich do wyświetlenia numerów PO, numerów licencji i uwag w dowolnym tekście, które adresat lub władze celne muszą widzieć.

PoleStatusUwagiDługość
invoiceNumberOpcjonalneNumer faktury kupca.
purchaseOrderNumberOpcjonalneNumer PO kupca.
licenseNumberOpcjonalneNumer licencji eksportowej / importowej.
certificateNumberOpcjonalneNumer certyfikatu celnego.
paymentConditionsOpcjonalneWarunki płatności w dowolnym tekście wyświetlane na fakturze handlowej.Ogranicz do 200 znaków – dłuższe wartości przepełniają drukowaną fakturę.
customsRemarksOpcjonalneUwagi celne w dowolnym tekście.
taxCodeOpcjonalneNiestandardowy kod podatkowy drukowany na etykiecie.

Odpowiedź

Interesujące pola zwracanego Shipment:

{
  id
  trackingDetails {
    number
  }
  shipmentCartons {
    label {
      url
      labelImage
    }
  }
}

trackingDetails.number to numer śledzenia Japan Post.

Obiekt label może zwrócić etykietę na dwa sposoby – poproś, która pasuje do Twojego przepływu pracy (lub obie):

PoleZwracaUżyj gdy
urlLink hostowany do wyrenderowanego pliku etykiety (PDF), gotowy do pobrania lub druku.Chcesz przekazać link – otwórz go, wyślij e-mailem lub pobierz plik później bez przechowywania go w ładunku.
labelImageObraz etykiety zakodowany w base64 (PNG / PDF / ZPL) umieszczony w odpowiedzi.Chcesz bajty etykiety bezpośrednio w odpowiedzi, aby dołączyć do przepływu pracy realizacji lub zapisać w systemie zarządzania magazynem.

Wybierz tylko pola, których potrzebujesz. Żądanie url utrzymuje odpowiedź małą; żądanie labelImage zwraca pełną etykietę w tekście, aby nie potrzebować drugiej rundy do pobrania. Przykład powyżej żądań url.

Obsługa błędów 

  • Błędy walidacji (brakujące wymagane pola, nieprawidłowe kody krajów, itp.) wracają w standardowej tablicy GraphQL errors i przerwają resztę łańcucha.
  • Błędy Japan Post (nieudana generacja etykiety, nieprawidłowy adres, itp.) pojawiają się jako błędy GraphQL na shipmentCreateWorkflow. Jeśli wymagane jest ponowienie, skontaktuj się z pomocą – zalecaną ścieżką jest przesłanie pełnej mutacji z poprawnym wejściem.

Uprawnienia 

Każdy krok jest niezależnie zabezpieczony. Twój klucz API musi posiadać zakres zapisu dla każdej encji w łańcuchu (ITEM_WRITE, CARTON_WRITE, SHIPMENT_RATING_WRITE, LANDED_COST_WRITE, SHIPMENT_WRITE). Standardowa rola kupca na koncie zweryfikowanym przyznaje wszystkie te.

Następne kroki 

Czy ta strona była pomocna?