Przepływ GraphQL CreateDeclarationShipment tworzy przesyłkę Japan Post od danych wejściowych do gotowej do druku etykiety w jednej rundzie.
CreateDeclarationShipment łączy w łańcuch sześć mutacji *Workflow w jedno żądanie GraphQL. Każdy krok opiera się na danych dostarczonych przez poprzednie kroki, a wszystkie są przesyłane razem, dzięki czemu kompletną przesyłkę można utworzyć w jednej rundzie:
partyCreateWorkflow → opisz strony źródłową i docelową
itemCreateWorkflow → opisz pozycje towarowe
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 przekazywać identyfikatorów z jednego kroku do następnego i nie musisz wysyłać osobnego żądania na każdy krok. Przesyłasz cały dokument i otrzymujesz ostateczny Shipment.
Gdy serviceLevel w ostatnim kroku jest poziomem usług Japan Post (japan_post.*), Zonos wywołuje w Twoim imieniu Japan Post Label API (kod 52), używając numerów Later Pay Twojego konta zweryfikowanego, generuje etykietę i numer śledzenia, tworzy identyfikator deklaracji i łączy je – wszystko wewnątrz tego ostatniego kroku shipmentCreateWorkflow.
Dlaczego jedna mutacja? Każdy krok zależy od poprzedniego (Landed cost wymaga pozycji towarowych i stron; etykieta wymaga wszystkiego). Zebranie ich w jednym dokumencie GraphQL zapewnia spójność danych i pozwala uniknąć pięciu dodatkowych rund.
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 w ramach swojego konta zweryfikowanego. Uwierzytelniaj się jako Ty sam – nie jest potrzebny klucz konta.
credentialToken: {{YOUR_API_TOKEN}}
Gdzie go znaleźć: Zonos Dashboard → Ustawienia → Integracje → sekcja Klucz konta. Skopiuj token w wierszu Klucz API; to jest Twój credentialToken.
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 rozłożone na czynniki w sekcji krok po kroku poniżej.
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 prawidłowej etykiety Japan Post dla 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 (miejsce, z którego wysyłana jest przesyłka) i DESTINATION (kupujący / odbiorca).
Pole↕
Status↕
Uwagi↕
type
Wymagane
ORIGIN i DESTINATION to dwa typy potrzebne w tym przepływie. Inne (CONSIGNEE, EXPORTER, IMPORTER_OF_RECORD, PAYOR itd.) istnieją, ale nie są tu używane.
Odpowiedź zwraca utworzone identyfikatory Party i uzupełnione pola adresu.
2. itemCreateWorkflow
Tworzy pozycje towarowe, które składają się na przesyłkę. Są to jednostki SKU, które pojawią się na fakturze handlowej i zasilą obliczenie Landed cost.
Pole↕
Status↕
Uwagi↕
currencyCode
Wymagane
Waluta ceny jednostkowej.
quantity
Wymagane
Liczba jednostek tego elementu.
amount
Warunkowe
Cena jednostkowa (nie całkowita). Wymagane, chyba że podano totalAmount.
totalAmount
Opcjonalne
Alternatywa dla amount; amount jest wyliczane z totalAmount / quantity.
hsCode
Rekomendowane
Kod taryfowy Zharmonizowanego Systemu (HS). Wpływa na stawki ceł.
countryOfOrigin
Rekomendowane
Kod ISO-2 kraju, w którym wytworzono towar. Wpływa na cło / FTA.
name, description
Rekomendowane
Nazwa produktu widoczna dla klienta + opis.
customsDescription
Opcjonalne
Zastąpienie opisu celnego.
sku, productId
Opcjonalne
Twoje wewnętrzne identyfikatory.
measurements
Opcjonalne
Waga / 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ć towary.
Pole↕
Status↕
Uwagi↕
dimensionalUnit
Wymagane
INCH lub CENTIMETER.
weight, weightUnit
Wymagane dla etykiety
Japan Post wymaga wagi paczki.
length, width, height
Opcjonalne
Wymiary zewnętrzne.
type
Opcjonalne
Styl 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ę.
Pole↕
Status↕
Uwagi↕
amount
Wymagane
Co kupujący płaci za wysyłkę. Przesyłaj 0, jeśli jest darmowa.
currencyCode
Wymagane
Waluta amount.
serviceLevelCode
Wymagane
Kod usługi przewoźnika (np. japan_post.air.parcel). Pełną listę znajdziesz w Poziomach usług Japan Post.
displayName
Opcjonalne
Ładna nazwa do paragonu / faktury.
To jest stawka, jaką kupujący otrzymał w kasie. Zasila ona obliczenie Landed cost jako podsumę „shipping”, dzięki czemu cła i podatki są liczone względem prawidłowej wartości CIF.
5. landedCostCalculateWorkflow
Uruchamia obliczenie ceł, podatków i opłat dla kraju docelowego. Wykorzystuje towary, strony i koszt wysyłki z poprzednich kroków.
Pole↕
Status↕
Uwagi↕
endUse
Wymagane
NOT_FOR_RESALE lub FOR_RESALE. Niektóre miejsca docelowe stosują różne stawki dla użytku handlowego w porównaniu z osobistym.
tariffRate
Wymagane
Domyślnie ZONOS_PREFERRED, jeśli pominięte. Mówi Zonos, które źródło taryfy / metodologię zastosować.
calculationMethod
Rekomendowane
DDP (kupujący płaci z góry) lub DDU (kupujący płaci przy drzwiach). Użyj DDP dla opłaconego z góry. Determinuje, czy LandedCost.amountSubtotals obejmuje cło / podatek.
currencyCode
Opcjonalne
Waluta, w której zwracane są podsumy kosztu Landed cost.
arrivalDate
Opcjonalne
Kursy walut i harmonogramy taryf są przypięte do tej daty, jeśli została 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 końcowy – tworzy encję Shipment, generuje etykietę przewoźnika i (opcjonalnie) fakturę handlową / listę pakowania.
W przypadku kont zweryfikowanych Japan Post to również tutaj Zonos wywołuje w Twoim imieniu Japan Post Label API (kod 52), wstrzykuje Twoje numery Later Pay, tworzy identyfikator deklaracji i łączy identyfikator deklaracji z numerem śledzenia zwracanym przez Japan Post.
Pola kluczowe:
Pole↕
Status↕
Uwagi↕
serviceLevel
Wymagane dla etykiety
Usługa Japan Post, którą wysyłasz (np. japan_post.air.ems_merchandise). Musi być poziomem usługi japan_post.*.
generateLabel
Opcjonalne
Domyślnie true; musi być true, aby zwrócić etykietę.
contentsType
Rekomendowane
Determinuje sposób obsługi celnej. Jedna z wartości: SALE_OF_GOODS, ECOMMERCE_GOODS, COMMERCIAL_GOODS, COMMERCIAL_SAMPLE, RETURNED_GOODS, GIFT, DOCUMENTS, OTHER.
nonDelivery
Opcjonalne
Co Japan Post powinien zrobić, jeśli paczki nie można dostarczyć. Patrz poniżej.
references
Opcjonalne
Numery referencyjne dostarczone przez handlowca, drukowane na etykiecie i fakturze handlowej. Patrz poniżej.
W przypadku contentsType dwie najczęstsze wartości dla ruchu na kontach zweryfikowanych to ECOMMERCE_GOODS (sprzedaż konsumentowi, BtoC) i COMMERCIAL_GOODS (sprzedaż między firmami, BtoB). Ustawiają one pkgType, który Zonos przesyła w wywołaniu etykiety Japan Post, więc ten wybór zmienia to, co drukuje się na zgłoszeniu celnym – to nie jest tylko etykieta.
Podpole nonDelivery
Informuje Japan Post, co zrobić z paczką, jeśli nie można jej dostarczyć – odbiorca odmówił jej przyjęcia, została odrzucona na granicy albo nie można jej dostarczyć na podany adres.
option przyjmuje wyłącznie te cztery wartości. Nie istnieje wartość RETURN – użyj RETURN_AFTER_RETENTION lub RETURN_IMMEDIATELY, aby wybrać, kiedy paczka wraca.
option↕
Odpowiednik w Dashboard↕
Co robi Japan Post↕
RETURN_AFTER_RETENTION
Zwrot
Przechowuje paczkę w urzędzie pocztowym docelowym przez okres retencji, a następnie zwraca ją nadawcy.
RETURN_IMMEDIATELY
Zwrot
Zwraca paczkę nadawcy od razu, bez okresu retencji.
FORWARD
Przekierowanie
Przekierowuje paczkę na inny adres. Obowiązuje dodatkowa opłata pocztowa.
ABANDON
Zrzeczenie się
Utylizuje paczkę w miejscu docelowym. Nic nie jest zwracane i nie jest naliczana opłata za zwrot.
API udostępnia oba warianty zwrotu niezależnie od siebie; opcja Zwrot w Dashboard obejmuje oba.
transportMethod przyjmuje AIR lub MOST_ECONOMICAL i określa, jak wraca zwracana paczka. Dotyczy to tylko dwóch opcji RETURN_* – Dashboard wyświetla odpowiadające pole Metoda zwrotu tylko wtedy, gdy wybrano Zwrot.
Selektor Jeśli nie można dostarczyć w oknie dialogowym Utwórz etykietę w Dashboard zapisuje to samo pole, więc etykieta utworzona w Dashboard i etykieta utworzona przez API zachowują się identycznie.
Podpole references
Te pola są drukowane na etykiecie przewoźnika i / lub fakturze handlowej. Użyj ich, aby przekazać numery PO, numery licencji i uwagi w formie wolnego tekstu, które musi zobaczyć odbiorca lub organ celny.
Pole↕
Status↕
Uwagi↕
Długość↕
invoiceNumber
Opcjonalne
Numer faktury handlowca.
—
purchaseOrderNumber
Opcjonalne
Numer PO handlowca.
—
licenseNumber
Opcjonalne
Numer licencji eksportowej / importowej.
—
certificateNumber
Opcjonalne
Numer certyfikatu celnego.
—
paymentConditions
Opcjonalne
Warunki płatności w formie wolnego tekstu, widoczne na fakturze handlowej.
Ogranicz do 200 znaków – dłuższe wartości powodują przepełnienie na wydrukowanej fakturze.
customsRemarks
Opcjonalne
Uwagi celne w formie wolnego tekstu.
—
taxCode
Opcjonalne
Niestandardowy 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 – zażądaj tego, który pasuje do Twojego przepływu pracy (lub obu):
Pole↕
Zwraca↕
Użyj gdy↕
url
Hostowany link do wyrenderowanego pliku etykiety (PDF), gotowy do pobrania lub wydruku.
Chcesz przekazać link – otworzyć go, wysłać e-mailem lub pobrać plik później, bez przechowywania go w treści odpowiedzi.
labelImage
Obraz etykiety zakodowany w base64 (PNG / PDF / ZPL) umieszczony w treści odpowiedzi.
Chcesz mieć bajty etykiety bezpośrednio w odpowiedzi, aby dołączyć je do przepływu realizacji zamówienia lub zapisać w swoim systemie WMS.
Wybierz tylko pola, których potrzebujesz. Żądanie url utrzymuje odpowiedź w małym rozmiarze; żądanie labelImage zwraca pełną etykietę w treści odpowiedzi, dzięki czemu nie potrzebujesz drugiej rundy, aby ją pobrać. Powyższy przykład żąda pola url.
Kody poziomów usług używają kropek, nie podkreśleń. Możesz zobaczyć formę z podkreśleniem (japan_post_air_parcel) w komunikatach o błędach i wewnętrznych odniesieniach, ale nie jest to prawidłowe wejście.
Usługi lotnicze
Kod↕
Usługa Japan Post↕
Typ przesyłki↕
japan_post.air.ems_documents
EMS (documents)
1-0
japan_post.air.ems_merchandise
EMS (merchandise)
1-1
japan_post.air.parcel
International parcel
1-5
japan_post.air.packet
International Air Packet
1-8
japan_post.air.small_packet
Small packet
1-9
japan_post.air.printed_matter_registered
Printed matter, registered
1-A
japan_post.air.printed_matter
Printed matter
1-B
japan_post.air.letter_registered
Letter, registered
1-C
japan_post.air.letter
Letter
1-D
Usługi powierzchniowe
Kod↕
Usługa Japan Post↕
Typ przesyłki↕
japan_post.surface.parcel
International parcel
2-5
japan_post.surface.small_packet
Small packet
2-9
japan_post.surface.printed_matter
Printed matter
2-B
japan_post.surface.letter
Letter
2-D
Wybór między podobnymi usługami
Small packet a International Air Packet. Obie usługi są ograniczone do 2 kg. japan_post.air.packet to śledzona usługa Small packet firmy Japan Post. japan_post.air.small_packet to jej nieśledzony odpowiednik. Jeśli potrzebujesz śledzenia lekkiej paczki, użyj japan_post.air.packet.
Warianty rejestrowane. W przypadku listów i druków śledzenie jest dodawane przez zarejestrowaną (書留) wersję usługi. japan_post.air.printed_matter i japan_post.air.letter nie zawierają go samodzielnie.
Kody przestarzałe
japan_post.air.epacket_light oznaczał International e-Packet Light. Japan Post zmieniło nazwę tej usługi na International Air Packet 1 czerwca 2026 roku i rozszerzyło ją na wszystkie kraje i regiony. Sama usługa nie zmieniła się.
Stary kod wciąż działa, dzięki czemu istniejące integracje nie przestają funkcjonować, ale w nowych rozwiązaniach należy używać japan_post.air.packet.
Kody trybu transportu
japan_post.air, japan_post.surface, japan_post.economy_air i japan_post.custom również działają, ale określają tryb transportu lub rozwiązanie zastępcze, a nie konkretny produkt pocztowy. W przypadku standardowych przesyłek użyj jednego z powyższych kodów usług.
Zweryfikuj wysyłany kod
Nierozpoznany serviceLevelCodenie powoduje błędu. Żądanie zwraca HTTP 200 bez tablicy errors, serviceLevel wraca jako null, a koszt wysyłki wypada z sumy Landed cost – więc odpowiedź wygląda prawidłowo, mimo że kwoty są błędne.
Zawsze sprawdzaj, czy shipmentRatingCreateWorkflow.serviceLevel nie jest null, zanim zaczniesz polegać na sumach.
Aby w każdej chwili pobrać aktualną listę:
{
serviceLevels(carrier:"carrier_00004c9b-9431-4518-bfbc-b9f8476335b1"){
code
name
}}
To zapytanie przyjmuje ID przewoźnika. Przekazanie kodu przewoźnika japan_post zwraca pustą listę bez błędu.
Błędy walidacji (brakujące wymagane pola, nieprawidłowe kody krajów itp.) wracają w standardowej tablicy GraphQL errors i przerywają resztę łańcucha.
Błędy Japan Post (niepowodzenie generowania etykiety, nieprawidłowy adres itp.) pojawiają się jako błędy GraphQL w shipmentCreateWorkflow. Jeśli potrzebna jest ponowna próba, skontaktuj się z pomocą techniczną – zalecaną ścieżką jest ponowne przesłanie całej mutacji z poprawionymi danymi wejściowymi.
VALIDATION_INVALID_TYPE_VARIABLE
{"errors":[{"message":"invalid type for variable: 'shipmentInput'","extensions":{"name":"shipmentInput","code":"VALIDATION_INVALID_TYPE_VARIABLE"}}]}
Ten błąd wskazuje całą zmienną, a nie pole, które faktycznie jest nieprawidłowe. Prawie zawsze oznacza to, że jedna z wartości enum wewnątrz tej zmiennej nie jest członkiem swojego enuma – najczęściej nonDelivery.option, contentsType lub serviceLevel.
To nie jest problem z typowaniem JSON. Cytowanie lub odcytowanie wartości logicznych i liczbowych niczego nie zmieni, ponieważ ładunek nigdy nie dociera tak daleko – enum jest odrzucany wcześniej.
Aby znaleźć błędne pole, sprawdź każde pole typu enum w zmiennej pod kątem jego akceptowanych wartości:
Pole↕
Akceptowane wartości↕
nonDelivery.option
RETURN_AFTER_RETENTION, RETURN_IMMEDIATELY, FORWARD, ABANDON – brak RETURN
nonDelivery.transportMethod
AIR, MOST_ECONOMICAL
contentsType
SALE_OF_GOODS, ECOMMERCE_GOODS, COMMERCIAL_GOODS, COMMERCIAL_SAMPLE, RETURNED_GOODS, GIFT, DOCUMENTS, OTHER
serviceLevel
Kod poziomu usługi japan_post.*
Pełna lista wartości enum dla każdego wejścia znajduje się na jego stronie typu w dokumentacji API.
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 handlowca na koncie zweryfikowanym przyznaje wszystkie te uprawnienia.
Utwórz pojedynczą przesyłkę
Utwórz pojedynczą przesyłkę
Przepływ GraphQL
CreateDeclarationShipmenttworzy przesyłkę Japan Post od danych wejściowych do gotowej do druku etykiety w jednej rundzie.CreateDeclarationShipmentłączy w łańcuch sześć mutacji*Workfloww jedno żądanie GraphQL. Każdy krok opiera się na danych dostarczonych przez poprzednie kroki, a wszystkie są przesyłane razem, dzięki czemu kompletną przesyłkę można utworzyć w jednej rundzie:Mutacje
Workflowsą zaprojektowane do łańcuchowania: nie musisz przekazywać identyfikatorów z jednego kroku do następnego i nie musisz wysyłać osobnego żądania na każdy krok. Przesyłasz cały dokument i otrzymujesz ostatecznyShipment.Gdy
serviceLevelw ostatnim kroku jest poziomem usług Japan Post (japan_post.*), Zonos wywołuje w Twoim imieniu Japan Post Label API (kod 52), używając numerów Later Pay Twojego konta zweryfikowanego, generuje etykietę i numer śledzenia, tworzy identyfikator deklaracji i łączy je – wszystko wewnątrz tego ostatniego krokushipmentCreateWorkflow.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:
Nagłówki:
Wysyłasz własne zamówienia w ramach swojego konta zweryfikowanego. Uwierzytelniaj się jako Ty sam – nie jest potrzebny klucz konta.
Gdzie go znaleźć: Zonos Dashboard → Ustawienia → Integracje → 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 rozłożone na czynniki w sekcji krok po kroku poniżej.mutation CreateDeclarationShipment($partyInput: [PartyCreateWorkflowInput!]!$itemInput: [ItemCreateWorkflowInput!]!$cartonInput: [CartonCreateWorkflowInput!]!$shipmentRatingInput: ShipmentRatingCreateWorkflowInput!$landedCostInput: LandedCostWorkFlowInput!$shipmentInput: ShipmentCreateWorkflowInput!) {partyCreateWorkflow(input: $partyInput) {idtypelocation {line1localitypostalCodecountryCode}}itemCreateWorkflow(input: $itemInput) {idnameskuamountcurrencyCodehsCode}cartonsCreateWorkflow(input: $cartonInput) {idlengthwidthheightdimensionalUnitweightweightUnit}shipmentRatingCreateWorkflow(input: $shipmentRatingInput) {idamount}landedCostCalculateWorkflow(input: $landedCostInput) {idmethodcurrencyCodeamountSubtotals {dutiestaxesfeesshippinglandedCostTotal}}shipmentCreateWorkflow(input: $shipmentInput) {idtrackingDetails {number}shipmentCartons {label {url}}}}Krok po kroku
Kolumna
Statusw każdej tabeli poniżej używa tych terminów:1.
partyCreateWorkflowTworzy strony zaangażowane w przesyłkę – co najmniej
ORIGIN(miejsce, z którego wysyłana jest przesyłka) iDESTINATION(kupujący / odbiorca).typeORIGINiDESTINATIONto dwa typy potrzebne w tym przepływie. Inne (CONSIGNEE,EXPORTER,IMPORTER_OF_RECORD,PAYORitd.) istnieją, ale nie są tu używane.location.countryCodelocation.line1,locality,administrativeAreaCode,postalCodeperson.firstName,lastName,phoneperson.companyName,emailPrzykładowy payload:
[ { "type": "DESTINATION", "location": { "countryCode": "US" }, "person": {} }, { "type": "ORIGIN", "location": { "countryCode": "JP" }, "person": {} } ]Odpowiedź zwraca utworzone identyfikatory
Partyi uzupełnione pola adresu.2.
itemCreateWorkflowTworzy pozycje towarowe, które składają się na przesyłkę. Są to jednostki SKU, które pojawią się na fakturze handlowej i zasilą obliczenie Landed cost.
currencyCodequantityamounttotalAmount.totalAmountamount;amountjest wyliczane ztotalAmount / quantity.hsCodecountryOfOriginname,descriptioncustomsDescriptionsku,productIdmeasurementsKod HS, kraj pochodzenia i kwota to trzy pola, które najbardziej wpływają na wynik cła / podatku w kroku 5.
3.
cartonsCreateWorkflowTworzy paczki fizyczne – pudełka, worki foliowe lub listy, które będą zawierać towary.
dimensionalUnitINCHlubCENTIMETER.weight,weightUnitlength,width,heighttypePACKAGE.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.
shipmentRatingCreateWorkflowRejestruje ofertę stawki, którą kupiec pobiera od kupującego za wysyłkę.
amount0, jeśli jest darmowa.currencyCodeamount.serviceLevelCodejapan_post.air.parcel). Pełną listę znajdziesz w Poziomach usług Japan Post.displayNameTo jest stawka, jaką kupujący otrzymał w kasie. Zasila ona obliczenie Landed cost jako podsumę „shipping”, dzięki czemu cła i podatki są liczone względem prawidłowej wartości CIF.
5.
landedCostCalculateWorkflowUruchamia obliczenie ceł, podatków i opłat dla kraju docelowego. Wykorzystuje towary, strony i koszt wysyłki z poprzednich kroków.
endUseNOT_FOR_RESALElubFOR_RESALE. Niektóre miejsca docelowe stosują różne stawki dla użytku handlowego w porównaniu z osobistym.tariffRateZONOS_PREFERRED, jeśli pominięte. Mówi Zonos, które źródło taryfy / metodologię zastosować.calculationMethodDDP(kupujący płaci z góry) lubDDU(kupujący płaci przy drzwiach). UżyjDDPdla opłaconego z góry. Determinuje, czyLandedCost.amountSubtotalsobejmuje cło / podatek.currencyCodearrivalDateOdpowiedź 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.
shipmentCreateWorkflowKrok końcowy – tworzy encję
Shipment, generuje etykietę przewoźnika i (opcjonalnie) fakturę handlową / listę pakowania.W przypadku kont zweryfikowanych Japan Post to również tutaj Zonos wywołuje w Twoim imieniu Japan Post Label API (kod 52), wstrzykuje Twoje numery Later Pay, tworzy identyfikator deklaracji i łączy identyfikator deklaracji z numerem śledzenia zwracanym przez Japan Post.
Pola kluczowe:
serviceLeveljapan_post.air.ems_merchandise). Musi być poziomem usługijapan_post.*.generateLabeltrue; musi byćtrue, aby zwrócić etykietę.contentsTypeSALE_OF_GOODS,ECOMMERCE_GOODS,COMMERCIAL_GOODS,COMMERCIAL_SAMPLE,RETURNED_GOODS,GIFT,DOCUMENTS,OTHER.nonDeliveryreferencesdeclaredValue/isDeclaredValueshipmentConsolidationIdW przypadku
contentsTypedwie najczęstsze wartości dla ruchu na kontach zweryfikowanych toECOMMERCE_GOODS(sprzedaż konsumentowi, BtoC) iCOMMERCIAL_GOODS(sprzedaż między firmami, BtoB). Ustawiają onepkgType, który Zonos przesyła w wywołaniu etykiety Japan Post, więc ten wybór zmienia to, co drukuje się na zgłoszeniu celnym – to nie jest tylko etykieta.Podpole
nonDeliveryInformuje Japan Post, co zrobić z paczką, jeśli nie można jej dostarczyć – odbiorca odmówił jej przyjęcia, została odrzucona na granicy albo nie można jej dostarczyć na podany adres.
optionprzyjmuje wyłącznie te cztery wartości. Nie istnieje wartośćRETURN– użyjRETURN_AFTER_RETENTIONlubRETURN_IMMEDIATELY, aby wybrać, kiedy paczka wraca.option↕RETURN_AFTER_RETENTIONRETURN_IMMEDIATELYFORWARDABANDONAPI udostępnia oba warianty zwrotu niezależnie od siebie; opcja Zwrot w Dashboard obejmuje oba.
transportMethodprzyjmujeAIRlubMOST_ECONOMICALi określa, jak wraca zwracana paczka. Dotyczy to tylko dwóch opcjiRETURN_*– Dashboard wyświetla odpowiadające pole Metoda zwrotu tylko wtedy, gdy wybrano Zwrot.{ "nonDelivery": { "option": "RETURN_AFTER_RETENTION", "transportMethod": "MOST_ECONOMICAL" } }Selektor Jeśli nie można dostarczyć w oknie dialogowym Utwórz etykietę w Dashboard zapisuje to samo pole, więc etykieta utworzona w Dashboard i etykieta utworzona przez API zachowują się identycznie.
Podpole
referencesTe pola są drukowane na etykiecie przewoźnika i / lub fakturze handlowej. Użyj ich, aby przekazać numery PO, numery licencji i uwagi w formie wolnego tekstu, które musi zobaczyć odbiorca lub organ celny.
invoiceNumberpurchaseOrderNumberlicenseNumbercertificateNumberpaymentConditionscustomsRemarkstaxCodeOdpowiedź
Interesujące pola zwracanego
Shipment:{ id trackingDetails { number } shipmentCartons { label { url labelImage } } }trackingDetails.numberto numer śledzenia Japan Post.Obiekt
labelmoże zwrócić etykietę na dwa sposoby – zażądaj tego, który pasuje do Twojego przepływu pracy (lub obu):urllabelImageWybierz tylko pola, których potrzebujesz. Żądanie
urlutrzymuje odpowiedź w małym rozmiarze; żądanielabelImagezwraca pełną etykietę w treści odpowiedzi, dzięki czemu nie potrzebujesz drugiej rundy, aby ją pobrać. Powyższy przykład żąda polaurl.Poziomy usług Japan Post
Przekaż jeden z tych kodów jako
serviceLevelCodewshipmentRatingCreateWorkflow.Kody poziomów usług używają kropek, nie podkreśleń. Możesz zobaczyć formę z podkreśleniem (
japan_post_air_parcel) w komunikatach o błędach i wewnętrznych odniesieniach, ale nie jest to prawidłowe wejście.Usługi lotnicze
japan_post.air.ems_documents1-0japan_post.air.ems_merchandise1-1japan_post.air.parcel1-5japan_post.air.packet1-8japan_post.air.small_packet1-9japan_post.air.printed_matter_registered1-Ajapan_post.air.printed_matter1-Bjapan_post.air.letter_registered1-Cjapan_post.air.letter1-DUsługi powierzchniowe
japan_post.surface.parcel2-5japan_post.surface.small_packet2-9japan_post.surface.printed_matter2-Bjapan_post.surface.letter2-DWybór między podobnymi usługami
Small packet a International Air Packet. Obie usługi są ograniczone do 2 kg.
japan_post.air.packetto śledzona usługa Small packet firmy Japan Post.japan_post.air.small_packetto jej nieśledzony odpowiednik. Jeśli potrzebujesz śledzenia lekkiej paczki, użyjjapan_post.air.packet.Warianty rejestrowane. W przypadku listów i druków śledzenie jest dodawane przez zarejestrowaną (書留) wersję usługi.
japan_post.air.printed_matterijapan_post.air.letternie zawierają go samodzielnie.Kody przestarzałe
japan_post.air.epacket_lightoznaczał International e-Packet Light. Japan Post zmieniło nazwę tej usługi na International Air Packet 1 czerwca 2026 roku i rozszerzyło ją na wszystkie kraje i regiony. Sama usługa nie zmieniła się.Stary kod wciąż działa, dzięki czemu istniejące integracje nie przestają funkcjonować, ale w nowych rozwiązaniach należy używać
japan_post.air.packet.Kody trybu transportu
japan_post.air,japan_post.surface,japan_post.economy_airijapan_post.customrównież działają, ale określają tryb transportu lub rozwiązanie zastępcze, a nie konkretny produkt pocztowy. W przypadku standardowych przesyłek użyj jednego z powyższych kodów usług.Zweryfikuj wysyłany kod
Nierozpoznany
serviceLevelCodenie powoduje błędu. Żądanie zwraca HTTP 200 bez tablicyerrors,serviceLevelwraca jakonull, a koszt wysyłki wypada z sumy Landed cost – więc odpowiedź wygląda prawidłowo, mimo że kwoty są błędne.Zawsze sprawdzaj, czy
shipmentRatingCreateWorkflow.serviceLevelnie jestnull, zanim zaczniesz polegać na sumach.Aby w każdej chwili pobrać aktualną listę:
{ serviceLevels(carrier: "carrier_00004c9b-9431-4518-bfbc-b9f8476335b1") { code name } }To zapytanie przyjmuje ID przewoźnika. Przekazanie kodu przewoźnika
japan_postzwraca pustą listę bez błędu.Obsługa błędów
errorsi przerywają resztę łańcucha.shipmentCreateWorkflow. Jeśli potrzebna jest ponowna próba, skontaktuj się z pomocą techniczną – zalecaną ścieżką jest ponowne przesłanie całej mutacji z poprawionymi danymi wejściowymi.VALIDATION_INVALID_TYPE_VARIABLE{ "errors": [ { "message": "invalid type for variable: 'shipmentInput'", "extensions": { "name": "shipmentInput", "code": "VALIDATION_INVALID_TYPE_VARIABLE" } } ] }Ten błąd wskazuje całą zmienną, a nie pole, które faktycznie jest nieprawidłowe. Prawie zawsze oznacza to, że jedna z wartości enum wewnątrz tej zmiennej nie jest członkiem swojego enuma – najczęściej
nonDelivery.option,contentsTypelubserviceLevel.To nie jest problem z typowaniem JSON. Cytowanie lub odcytowanie wartości logicznych i liczbowych niczego nie zmieni, ponieważ ładunek nigdy nie dociera tak daleko – enum jest odrzucany wcześniej.
Aby znaleźć błędne pole, sprawdź każde pole typu enum w zmiennej pod kątem jego akceptowanych wartości:
nonDelivery.optionRETURN_AFTER_RETENTION,RETURN_IMMEDIATELY,FORWARD,ABANDON– brakRETURNnonDelivery.transportMethodAIR,MOST_ECONOMICALcontentsTypeSALE_OF_GOODS,ECOMMERCE_GOODS,COMMERCIAL_GOODS,COMMERCIAL_SAMPLE,RETURNED_GOODS,GIFT,DOCUMENTS,OTHERserviceLeveljapan_post.*Pełna lista wartości enum dla każdego wejścia znajduje się na jego stronie typu w dokumentacji API.
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 handlowca na koncie zweryfikowanym przyznaje wszystkie te uprawnienia.Następne kroki
CartonCreateWorkflowInput ItemCreateWorkflowInput LandedCostWorkFlowInput PartyCreateWorkflowInput ShipmentCreateWorkflowInput ShipmentRatingCreateWorkflowInput
cartonsCreateWorkflow itemCreateWorkflow landedCostCalculateWorkflow partyCreateWorkflow shipmentCreateWorkflow shipmentRatingCreateWorkflow
Czy ta strona była pomocna?