DOCS

Tek bir sevkiyat oluşturun

Tek bir sevkiyat oluşturun

CreateDeclarationShipment GraphQL iş akışı, bir Japan Post sevkiyatını ham girdilerden yazdırılabilir bir etikete tek bir gidiş-dönüş içinde getirir.

CreateDeclarationShipment, altı *Workflow mutasyonunu tek bir GraphQL isteğinde birleştirir. Her adım, önceki adımların sağladığı verilere dayanır ve tüm verileri birlikte gönderilir, böylece tam bir sevkiyat tek bir gidiş-dönüş içinde oluşturulabilir:

partyCreateWorkflow            → origin + destination taraflarını tanımla
itemCreateWorkflow             → satır öğelerini tanımla
cartonsCreateWorkflow          → fiziksel ambalajlamayı tanımla
shipmentRatingCreateWorkflow   → taşıyıcı oran teklifini kaydet
landedCostCalculateWorkflow    → gümrük vergileri ve ücretlerini hesapla
shipmentCreateWorkflow         → sevkiyat + etiket oluştur

Workflow mutasyonları zincirleme yapılmak üzere tasarlanmıştır: bir adımdan diğerine ID'leri iletmeniz gerekmez ve adım başına ayrı bir istek göndermeniz gerekmez. Tüm belgeyi gönderin, son Shipment'i geri alın.

Son adımdaki serviceLevel bir Japan Post hizmet seviyesi olduğunda (japan_post.*), Zonos sizin adınıza Japan Post Label API'sini (kod 52) çağırır ve Doğrulanmış Hesabınızın Later Pay Numaralarını kullanarak etiketi ve takip numarasını oluşturur, Declaration ID'sini oluşturur ve bunları bağlar — tümü bu son shipmentCreateWorkflow adımında.

Neden bir mutasyon? Her adım bir öncekisine bağlıdır (iniş maliyeti öğe + tarafları gerektirir; etiket her şeyi gerektirir). Bunları tek bir GraphQL belgesinde birleştirmek, veri tutarlılığını sağlar ve beş ekstra gidiş-dönüşü önler.

Endpoint ve kimlik doğrulama 

Bu zincirdeki isteklerin tümü aynı endpoint'i kullanır. Başlıklara ne koyacağınız kurulumunuza bağlıdır — sekmeinizi seçin.

URL:

https://api.zonos.com/graphql

Başlıklar:

Kendi siparişlerinizi kendi Doğrulanmış Hesabınız altında gönderiyor siniz. Kendiniz olarak kimlik doğrulaması yapın — hesap anahtarı gerekli değildir.

credentialToken: {{YOUR_API_TOKEN}}

Nereyi bulacağınız: Zonos Dashboard → SettingsIntegrationsAccount Key bölümü. API key satırındaki tokeni kopyalayın; bu sizin credentialToken'ınızdır.

Örnek istek 

Kopyalayabileceğiniz ve uyarlayabileceğiniz tam bir CreateDeclarationShipment isteği — mutasyon, değişkenleri ve yanıt — tek bir Japan Post paketi ABD'ye DDP olarak gönderirken. Her giriş, aşağıdaki adım adım bölümünde açıklanmıştır.

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}

Adım adım 

Aşağıdaki tablolarda Status sütunu bu terimleri kullanır:

  • Gerekli — istek olmadan başarısız olur.
  • Etiket için gerekli — GraphQL şemasında isteğe bağlı, ancak geçerli bir Japan Post ABD etiketi üretmek için gerekli.
  • Koşullu — başka bir alana bağlı olarak gerekli (satır içinde belirtilmiştir).
  • Önerilen — isteğe bağlı, ancak doğru vergileri ve vergileri yönlendirir.
  • İsteğe bağlı — gerekli değildir.

1. partyCreateWorkflow

Sevkiyatla ilgili tarafları oluşturur — en azından bir ORIGIN (sevkiyatın nereden gönderileceği) ve bir DESTINATION (alıcı / konsinyatör).

AlanDurumNotlar
typeGerekliORIGIN, DESTINATION, RETURN, vb.
location.countryCodeGerekliISO-2 ülke kodu.
location.line1, locality, administrativeAreaCode, postalCodeEtiket için gerekliGeçerli bir etiket için gereken adres alanları.
person.firstName, lastName, phoneEtiket için gerekliGeçerli bir etiket için gereken iletişim bilgileri.
person.companyName, emailİsteğe bağlı

Örnek yük:

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

Yanıt, oluşturulan Party ID'lerini ve çözümlenen adres alanlarını döndürür.

2. itemCreateWorkflow

Sevkiyatı oluşturan satır öğelerini oluşturur. Bunlar, ticari faturada görünecek ve iniş maliyeti hesaplamasını yönlendirecek SKU'lardır.

AlanDurumNotlar
currencyCodeGerekliBirim fiyatının para birimi.
quantityGerekliBu öğenin birim sayısı.
amountKoşulluBirim fiyatı (toplam değil). totalAmount sağlanmadıkça gerekli.
totalAmountİsteğe bağlıamount'a alternatif; amount totalAmount / quantity öğesinden türetilir.
hsCodeÖnerilenHarmonize Sistem tarife kodu. Gümrük oranlarını yönlendirir.
countryOfOriginÖnerilenISO-2 kodu, öğenin yapıldığı yer. Gümrük / FTA'yı yönlendirir.
name, descriptionÖnerilenMüşteriye yönelik ürün adı + açıklaması.
customsDescriptionİsteğe bağlıGümrük açıklaması geçersiz kılması.
sku, productIdİsteğe bağlıİç tanımlayıcılarınız.
measurementsİsteğe bağlıBirim başına ağırlık / boyutlar.

HS kodu, menşe ülkesi ve tutar, 5. adımdaki vergi/vergi sonucunu en çok etkileyen üç alandır.

3. cartonsCreateWorkflow

Fiziksel paketleri — kutular, polybag'lar veya öğeleri tutacak mektupları oluşturur.

AlanDurumNotlar
dimensionalUnitGerekliINCH veya CENTIMETER.
weight, weightUnitEtiket için gerekliJapan Post paket ağırlığı gerektirir.
length, width, heightİsteğe bağlıDış boyutlar.
typeİsteğe bağlıAmbalaj stili (kutu, polybag, mektup). Varsayılan PACKAGE.

Her karton, 6. adımdaki taşıyıcı etikette bir parsel haline gelir. Birden fazla karton → bir takip numarası ile çok parçalı sevkiyat.

4. shipmentRatingCreateWorkflow

Oran teklifini kaydeder — satıcının alıcıya kargo için talep ettiği tutar.

AlanDurumNotlar
amountGerekliAlıcının kargo için ödediği tutar. Ücretsiz ise 0 iletin.
currencyCodeGerekliamount'un para birimi.
serviceLevelCodeGerekliTaşıyıcı hizmet kodu (ör. japan_post.air.parcel).
displayNameİsteğe bağlıMakbuz / faturada güzel ad.

Bu, alıcıya kasa sırasında teklif edilen orandır. Gümrük ve vergiler doğru CIF değerine karşı hesaplanacak şekilde iniş maliyeti hesaplamasına "kargo" alt toplamı olarak girer.

5. landedCostCalculateWorkflow

Hedef ülke için gümrük vergileri ve ücretler hesaplaması çalıştırır. Önceki adımlardan öğeleri, tarafları ve kargo maliyetini kullanır.

AlanDurumNotlar
endUseGerekliNOT_FOR_RESALE veya FOR_RESALE. Bazı hedefler ticari vs kişisel kullanım için farklı oranlar uygular.
tariffRateGerekliAtlanırsa ZONOS_PREFERRED varsayılanını ayarlar. Zonos'a hangi tarife kaynağı/yönteminin uygulanacağını söyler.
calculationMethodÖnerilenDDP (alıcı ön ödeme) veya DDU (alıcı kapıda ödeme). Ön ödeme için DDP kullanın. LandedCost.amountSubtotals'in vergi/vergi içerip içermediğini belirler.
currencyCodeİsteğe bağlıİniş maliyeti alt toplamlarının döndürüleceği para birimi.
arrivalDateİsteğe bağlıSağlanırsa döviz kurları ve tarife tabloları bu tarihe sabitleştirilir.

Yanıt, amountSubtotals (duties, taxes, fees, shipping, landedCostTotal) içerir — bunlar, alıcıya kasa sırasında göstereceğiniz ve ticari faturada basılacak sayılardır.

6. shipmentCreateWorkflow

Terminal adımı — Shipment varlığını oluşturur, taşıyıcı etiketi ve (isteğe bağlı olarak) ticari faturayı / paketleme taslağını oluşturur.

Japan Post Doğrulanmış Hesapları için, Zonos'un sizin adınıza Japan Post Label API'sini (kod 52) çağırdığı, Later Pay Numaralarınızı enjekte ettiği, Declaration ID'sini oluşturduğu ve bunları takip numarasına bağladığı yerdir.

Önemli alanlar:

AlanDurumNotlar
serviceLevelEtiket için gerekliJapan Post servisiyle gönderme (ör. japan_post.air.ems_merchandise). japan_post.* hizmet seviyesi olmalıdır.
generateLabelİsteğe bağlıVarsayılan true; etiket döndürmek için true olmalıdır.
contentsTypeÖnerilenSALE_OF_GOODS, GIFT, DOCUMENTS, SAMPLE, vb. Gümrük muamelesi yönlendirir.
nonDeliveryİsteğe bağlıTeslimat başarısız olursa taşıyıcı ne yapmalı: RETURN, ABANDON, FORWARD.
referencesİsteğe bağlıSatıcı tarafından sağlanan referans numaraları etikete ve ticari faturaya basılı. Aşağıya bakın.
declaredValue / isDeclaredValueİsteğe bağlıSevkiyat için sigorta değeri.
shipmentConsolidationIdİsteğe bağlıBu sevkiyat bir batch dispatch parçası olduğunda kullanılır.

references alt giriş

Bu alanlar taşıyıcı etiketinde ve/veya ticari faturada basılı. Konsinyatör veya gümrük otoritesinin görmesi gereken PO numaralarını, lisans numaralarını ve serbest metin açıklamalarını yüzeye çıkarmak için bunları kullanın.

AlanDurumNotlarUzunluk
invoiceNumberİsteğe bağlıSatıcı fatura numarası.
purchaseOrderNumberİsteğe bağlıSatıcı PO numarası.
licenseNumberİsteğe bağlıİhracat/ithalatata lisans numarası.
certificateNumberİsteğe bağlıGümrük sertifikası numarası.
paymentConditionsİsteğe bağlıTicari faturada gösterilen serbest metin ödeme koşulları.200 karakterle sınırlı — daha uzun değerler basılı faturada taşar.
customsRemarksİsteğe bağlıSerbest metin gümrük açıklamaları.
taxCodeİsteğe bağlıEtikette basılı özel vergi kodu.

Yanıt

Döndürülen Shipment'daki ilginç alanlar:

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

trackingDetails.number Japan Post takip numarasıdır.

label nesnesi etiketi iki şekilde döndürebilir — iş akışınıza uyan şeyi isteyin (veya her ikisini):

AlanDöndürürŞu durumlarda kullanın
urlİşlenen etiket dosyasına (PDF) barındırılan bağlantı, indirmeye veya yazdırmaya hazır.Bir bağlantı aktarmak istiyorsunuz — açın, e-posta ile gönderin veya payload'u tutmadan dosyayı daha sonra alın.
labelImageBase64 kodlamalı etiket görüntüsü (PNG/PDF/ZPL) yanıtta satır içi.Yanıtta doğrudan etiket bayt'larını istiyorsunuz, yerine getirme iş akışına eklemek veya WMS'ye kaydetmek için.

Yalnızca gerekli alanları seçin. url istemek yanıtı küçük tutar; labelImage istemek tam etiketi satır içinde döndürür, böylece almak için ikinci bir gidiş-dönüş gerekmez. Yukarıdaki örnek url istemektedir.

Hata işleme 

  • Doğrulama hataları (eksik gerekli alanlar, geçersiz ülke kodları, vb.) standart GraphQL errors dizisinde geri gelir ve zincirin geri kalanını durdurur.
  • Japan Post hataları (etiket üretim hatası, geçersiz adres, vb.) shipmentCreateWorkflow üzerinde GraphQL hataları olarak yüzeye çıkar. Yeniden deneme gerekiyorsa, desteğe başvurun — önerilen yol, tam mutasyonu düzeltilmiş girdilerle yeniden göndermektir.

İzinler 

Her adım bağımsız olarak güvenliği sağlanır. API anahtarınız, zincirdeki her varlık için yazma kapsamını (ITEM_WRITE, CARTON_WRITE, SHIPMENT_RATING_WRITE, LANDED_COST_WRITE, SHIPMENT_WRITE) tutmalıdır. Doğrulanmış Hesaptaki standart satıcı rolü tümünü verir.

Sonraki adımlar 

Bu sayfa faydalı mıydı?