DOCS

Buat satu pengiriman

Buat satu pengiriman

Alur kerja CreateDeclarationShipment GraphQL membawa pengiriman Japan Post dari input mentah ke label yang dapat dicetak dalam satu perjalanan bolak-balik.

CreateDeclarationShipment merantai enam mutasi *Workflow menjadi satu permintaan GraphQL. Setiap langkah dibangun di atas data yang diberikan oleh langkah-langkah sebelumnya, dan semuanya disampaikan bersama-sama sehingga pengiriman lengkap dapat dibuat dalam satu perjalanan bolak-balik:

partyCreateWorkflow            → jelaskan pihak asal + tujuan
itemCreateWorkflow             → jelaskan item baris
cartonsCreateWorkflow          → jelaskan kemasan fisik
shipmentRatingCreateWorkflow   → catat kutipan tarif operator
landedCostCalculateWorkflow    → hitung bea cukai / pajak / biaya
shipmentCreateWorkflow         → buat pengiriman + label

Mutasi Workflow dirancang untuk dirantai: Anda tidak perlu mengalirkan ID dari satu langkah ke langkah berikutnya, dan Anda tidak perlu mengirim permintaan terpisah per langkah. Kirimkan seluruh dokumen, dapatkan Shipment akhir kembali.

Ketika serviceLevel pada langkah akhir adalah tingkat layanan Japan Post (japan_post.*), Zonos memanggil Japan Post Label API (kode 52) atas nama Anda menggunakan Nomor Pembayaran Kemudian Akun Terverifikasi Anda, menghasilkan label dan nomor pelacakan, membuat ID Deklarasi, dan menautkannya — semuanya di dalam langkah shipmentCreateWorkflow akhir itu.

Mengapa satu mutasi? Setiap langkah tergantung pada yang sebelumnya (biaya pendaratan membutuhkan item + pihak; label membutuhkan semuanya). Menggabungkannya ke dalam satu dokumen GraphQL menjaga data tetap konsisten dan menghindari lima perjalanan bolak-balik ekstra.

Endpoint dan autentikasi 

Permintaan dalam rantai ini semuanya menggunakan endpoint yang sama. Apa yang Anda lewatkan di header tergantung pada setup Anda — pilih tab Anda.

URL:

https://api.zonos.com/graphql

Headers:

Anda mengirim pesanan Anda sendiri di bawah Akun Terverifikasi Anda sendiri. Autentikasi sebagai diri Anda sendiri — tidak ada kunci akun yang diperlukan.

credentialToken: {{YOUR_API_TOKEN}}

Di mana menemukannya: Zonos Dashboard → SettingsIntegrations → bagian Account Key. Salin token pada baris API key; itu adalah credentialToken Anda.

Contoh permintaan 

Permintaan CreateDeclarationShipment lengkap yang dapat Anda salin dan sesuaikan — mutasi, variabelnya, dan respons — untuk satu paket Japan Post yang dikirim DDP ke A.S. Setiap input dipecah dalam bagian langkah demi langkah di bawah.

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}

Langkah demi langkah 

Kolom Status pada setiap tabel di bawah menggunakan istilah-istilah berikut:

  • Diperlukan — permintaan gagal tanpanya.
  • Diperlukan untuk label — opsional dalam skema GraphQL, tetapi diperlukan untuk menghasilkan label A.S. Japan Post yang valid.
  • Kondisional — diperlukan tergantung pada bidang lain (dicatat secara inline).
  • Direkomendasikan — opsional, tetapi mendorong bea cukai dan pajak yang akurat.
  • Opsional — tidak diperlukan.

1. partyCreateWorkflow

Membuat pihak-pihak yang terlibat dalam pengiriman — minimal ORIGIN (tempat pengiriman dikirim) dan DESTINATION (pembeli / penerima).

BidangStatusCatatan
typeDiperlukanORIGIN, DESTINATION, RETURN, dll.
location.countryCodeDiperlukanKode negara ISO-2.
location.line1, locality, administrativeAreaCode, postalCodeDiperlukan untuk labelBidang alamat diperlukan untuk label yang valid.
person.firstName, lastName, phoneDiperlukan untuk labelDetail kontak diperlukan untuk label yang valid.
person.companyName, emailOpsional

Contoh payload:

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

Respons mengembalikan ID Party yang dibuat dan bidang alamat yang diselesaikan.

2. itemCreateWorkflow

Membuat item baris yang membentuk pengiriman. Ini adalah SKU yang akan muncul pada faktur komersial dan mendorong perhitungan biaya pendaratan.

BidangStatusCatatan
currencyCodeDiperlukanMata uang harga unit.
quantityDiperlukanJumlah unit item ini.
amountKondisionalHarga unit (bukan total). Diperlukan kecuali totalAmount disediakan.
totalAmountOpsionalAlternatif untuk amount; amount diturunkan dari totalAmount / quantity.
hsCodeDirekomendasikanKode tarif Sistem Harmonis. Mendorong tarif bea cukai.
countryOfOriginDirekomendasikanKode ISO-2 tempat barang dibuat. Mendorong bea cukai / FTA.
name, descriptionDirekomendasikanNama produk + deskripsi menghadap pelanggan.
customsDescriptionOpsionalPenggantian deskripsi bea cukai.
sku, productIdOpsionalPengidentifikasi internal Anda.
measurementsOpsionalBerat / dimensi per unit.

Kode HS, negara asal, dan jumlah adalah tiga bidang yang paling mempengaruhi hasil bea cukai / pajak di langkah 5.

3. cartonsCreateWorkflow

Membuat paket fisik — kotak, polybag, atau surat yang akan menampung item.

BidangStatusCatatan
dimensionalUnitDiperlukanINCH atau CENTIMETER.
weight, weightUnitDiperlukan untuk labelJapan Post memerlukan berat paket.
length, width, heightOpsionalDimensi luar.
typeOpsionalGaya kemasan (kotak, polybag, surat). Default ke PACKAGE.

Setiap karton menjadi satu paket pada label operator di langkah 6. Beberapa karton → pengiriman multi-piece dengan satu nomor pelacakan per karton.

4. shipmentRatingCreateWorkflow

Mencatat kutipan tarif yang dikenakan pedagang kepada pembeli untuk pengiriman.

BidangStatusCatatan
amountDiperlukanApa yang dibayar pembeli untuk pengiriman. Lewatkan 0 jika gratis.
currencyCodeDiperlukanMata uang amount.
serviceLevelCodeDiperlukanKode layanan operator (misalnya japan_post.air.parcel).
displayNameOpsionalNama cantik untuk tanda terima / faktur.

Ini adalah tarif yang dijumlahkan pembeli saat checkout. Ini masuk ke perhitungan biaya pendaratan sebagai subtotal "pengiriman" sehingga bea cukai dan pajak dihitung terhadap nilai CIF yang benar.

5. landedCostCalculateWorkflow

Menjalankan perhitungan bea cukai, pajak, dan biaya untuk negara tujuan. Menggunakan item, pihak, dan biaya pengiriman dari langkah-langkah sebelumnya.

BidangStatusCatatan
endUseDiperlukanNOT_FOR_RESALE atau FOR_RESALE. Beberapa tujuan menerapkan tarif berbeda untuk penggunaan akhir komersial vs pribadi.
tariffRateDiperlukanDefault ke ZONOS_PREFERRED jika dihilangkan. Memberitahu Zonos sumber tarif / metodologi mana yang akan diterapkan.
calculationMethodDirekomendasikanDDP (pembeli prabayar) atau DDU (pembeli membayar di pintu). Gunakan DDP untuk prabayar. Mendorong apakah LandedCost.amountSubtotals menyertakan bea cukai / pajak.
currencyCodeOpsionalMata uang subtotal biaya pendaratan dikembalikan.
arrivalDateOpsionalTarif FX dan jadwal tarif disematkan pada tanggal ini jika disediakan.

Respons mencakup amountSubtotals (duties, taxes, fees, shipping, landedCostTotal) — ini adalah angka yang Anda tampilkan kepada pembeli saat checkout dan yang dicetak pada faktur komersial.

6. shipmentCreateWorkflow

Langkah terminal — membuat entitas Shipment, menghasilkan label operator, dan (opsional) faktur komersial / slip kemasan.

Untuk Akun Terverifikasi Japan Post, ini juga tempat Zonos memanggil Japan Post Label API (kode 52) atas nama Anda, menyuntikkan Nomor Pembayaran Kemudian Anda, membuat ID Deklarasi, dan menautkan ID Deklarasi ke nomor pelacakan yang dikembalikan oleh Japan Post.

Bidang kunci:

BidangStatusCatatan
serviceLevelDiperlukan untuk labelLayanan Japan Post untuk dikirim dengan (misalnya japan_post.air.ems_merchandise). Harus berupa tingkat layanan japan_post.*.
generateLabelOpsionalDefault ke true; harus true untuk mengembalikan label.
contentsTypeDirekomendasikanSALE_OF_GOODS, GIFT, DOCUMENTS, SAMPLE, dll. Mendorong perlakuan bea cukai.
nonDeliveryOpsionalApa yang harus dilakukan operator jika pengiriman gagal: RETURN, ABANDON, FORWARD.
referencesOpsionalNomor referensi yang disediakan pedagang dicetak pada label dan faktur komersial. Lihat di bawah.
declaredValue / isDeclaredValueOpsionalNilai asuransi untuk pengiriman.
shipmentConsolidationIdOpsionalDigunakan ketika pengiriman ini adalah bagian dari pengiriman batch.

Sub-input references

Bidang-bidang ini dicetak pada label operator dan / atau faktur komersial. Gunakan untuk menampilkan nomor PO, nomor lisensi, dan komentar teks bebas yang harus dilihat penerima atau otoritas bea cukai.

BidangStatusCatatanPanjang
invoiceNumberOpsionalNomor faktur pedagang.
purchaseOrderNumberOpsionalNomor PO pedagang.
licenseNumberOpsionalNomor lisensi ekspor / impor.
certificateNumberOpsionalNomor sertifikat bea cukai.
paymentConditionsOpsionalIstilah pembayaran teks bebas ditampilkan pada faktur komersial.Batasi hingga 200 karakter — nilai yang lebih panjang meluap pada faktur yang dicetak.
customsRemarksOpsionalKomentar bea cukai teks bebas.
taxCodeOpsionalKode pajak khusus dicetak pada label.

Respons

Bidang menarik pada Shipment yang dikembalikan adalah:

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

trackingDetails.number adalah nomor pelacakan Japan Post.

Objek label dapat mengembalikan label dengan dua cara — minta mana pun yang sesuai dengan alur kerja Anda (atau keduanya):

BidangMengembalikanGunakan ketika
urlTautan yang dihosting ke file label yang dirender (PDF), siap untuk diunduh atau dicetak.Anda ingin menyerahkan tautan — buka, email, atau ambil file nanti tanpa menyimpannya dalam payload.
labelImageGambar label yang dikodekan base64 (PNG/PDF/ZPL) inline dalam respons.Anda menginginkan byte label langsung dalam respons untuk melampirkan pada alur kerja pemenuhan atau menyimpan ke WMS Anda.

Pilih hanya bidang yang Anda butuhkan. Meminta url membuat respons kecil; meminta labelImage mengembalikan label lengkap inline sehingga Anda tidak memerlukan perjalanan bolak-balik kedua untuk mengambilnya. Contoh di atas meminta url.

Penanganan kesalahan 

  • Kesalahan validasi (bidang yang diperlukan hilang, kode negara tidak valid, dll.) kembali dalam array errors GraphQL standar dan menghentikan sisa rantai.
  • Kesalahan Japan Post (kegagalan pembuatan label, alamat tidak valid, dll.) muncul sebagai kesalahan GraphQL pada shipmentCreateWorkflow. Jika diperlukan percobaan lagi, hubungi dukungan — jalur yang disarankan adalah mengirim ulang mutasi lengkap dengan input yang diperbaiki.

Izin 

Setiap langkah dijamin secara independen. Kunci API Anda harus memegang cakupan penulisan untuk setiap entitas dalam rantai (ITEM_WRITE, CARTON_WRITE, SHIPMENT_RATING_WRITE, LANDED_COST_WRITE, SHIPMENT_WRITE). Peran pedagang standar pada Akun Terverifikasi memberikan semuanya.

Langkah selanjutnya 

Pesan demo

Apakah halaman ini bermanfaat?