DOCS

创建单个发货单

创建单个发货单

CreateDeclarationShipment GraphQL 工作流在一次往返中将日本邮政发货单从原始输入转换为可打印的标签。

CreateDeclarationShipment 将六个 *Workflow 变更链接到一个 GraphQL 请求中。每个步骤都建立在前面步骤提供的数据之上,所有这些都一起提交,以便完整的发货单可以在一次往返中创建:

partyCreateWorkflow            → 描述原点和目的地参与方
itemCreateWorkflow             → 描述产品行项目
cartonsCreateWorkflow          → 描述物理包装
shipmentRatingCreateWorkflow   → 记录承运人报价
landedCostCalculateWorkflow    → 计算关税/税金/费用
shipmentCreateWorkflow         → 创建发货单 + 标签

Workflow 变更被设计为链式的:你不需要从一个步骤将 ID 映射到下一个步骤,也不需要为每个步骤发送单独的请求。提交整个文档,获得最终的 Shipment 返回。

当最后一个步骤的 serviceLevel 是日本邮政服务等级(japan_post.*)时,Zonos 代表你使用你的 Verified Account 的 Later Pay Numbers 调用日本邮政标签 API(代码 52),生成标签和跟踪号,创建申报 ID,并在最后的 shipmentCreateWorkflow 步骤中链接它们。

为什么是一个变更? 每个步骤都取决于前一个步骤(落地成本需要产品和参与方;标签需要一切)。将它们捆绑到一个 GraphQL 文档中可以保持数据一致并避免五个额外的往返。

端点和认证 

此链中的请求都使用相同的端点。你在头中传递的内容取决于你的设置 — 选择你的选项卡。

URL:

https://api.zonos.com/graphql

Headers:

你在自己的 Verified Account 下发送自己的订单。以自己的身份进行身份验证 — 不需要账户密钥。

credentialToken: {{YOUR_API_TOKEN}}

查找位置: Zonos Dashboard → SettingsIntegrationsAccount Key 部分。复制 API key 行上的令牌;这就是你的 credentialToken

示例请求 

一个完整的 CreateDeclarationShipment 请求,你可以复制和调整 — 变更、其变量和响应 — 用于发送给美国的单个日本邮政包裹 DDP。下面逐步部分中分解了每个输入。

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}

逐步说明 

下面每个表格中的 Status 列使用这些术语:

  • Required — 没有它请求会失败。
  • Required for label — 在 GraphQL 架构中是可选的,但需要生成有效的日本邮政美国标签。
  • Conditional — 根据另一个字段(注明内联)是否需要。
  • Recommended — 可选,但提高关税和税金的准确性。
  • Optional — 不需要。

1. partyCreateWorkflow

创建发货单中涉及的参与方 — 至少一个 ORIGIN(发货单发送的地方)和一个 DESTINATION(买家/收货人)。

FieldStatusNotes
typeRequiredORIGIN, DESTINATION, RETURN 等。
location.countryCodeRequiredISO-2 国家代码。
location.line1, locality, administrativeAreaCode, postalCodeRequired for label生成有效标签所需的地址字段。
person.firstName, lastName, phoneRequired for label生成有效标签所需的联系人详情。
person.companyName, emailOptional

示例负载:

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

响应返回创建的 Party ID 和解析的地址字段。

2. itemCreateWorkflow

创建组成发货单的产品行项目。这些是将出现在商业发票上并驱动落地成本计算的 SKU。

FieldStatusNotes
currencyCodeRequired单价的货币。
quantityRequired此项目的单位数。
amountConditional单价(不是总价)。除非提供了 totalAmount,否则需要。
totalAmountOptionalamount 的替代方案;amounttotalAmount / quantity 派生。
hsCodeRecommended协调制度关税代码。驱动关税率。
countryOfOriginRecommended制造产品的 ISO-2 代码。驱动关税/自由贸易协定。
name, descriptionRecommended面向客户的产品名称和描述。
customsDescriptionOptional海关描述覆盖。
sku, productIdOptional你的内部标识符。
measurementsOptional每单位重量/尺寸。

HS 代码、原产国和金额是影响第 5 步关税/税金结果最多的三个字段。

3. cartonsCreateWorkflow

创建物理包装 — 将容纳产品的纸箱、聚袋或信件。

FieldStatusNotes
dimensionalUnitRequiredINCHCENTIMETER
weight, weightUnitRequired for label日本邮政需要包装重量。
length, width, heightOptional外部尺寸。
typeOptional包装风格(纸箱、聚袋、信件)。默认为 PACKAGE

每个纸箱成为第 6 步中运单上的一个包裹。多个纸箱 → 多件发货单,每个纸箱有一个跟踪号。

4. shipmentRatingCreateWorkflow

记录商家向买家收取的运费报价

FieldStatusNotes
amountRequired买家为运费支付的费用。免费时传递 0
currencyCodeRequiredamount 的货币。
serviceLevelCodeRequired运承人服务代码(例如 japan_post.air.parcel)。
displayNameOptional收据/发票的漂亮名称。

这是买家在结账时报价的费率。它作为"运费"小计进入落地成本计算,以便针对正确的 CIF 值计算关税和税金。

5. landedCostCalculateWorkflow

运行目的地国家的关税、税金和费用计算。使用前面步骤中的产品、参与方和运费成本。

FieldStatusNotes
endUseRequiredNOT_FOR_RESALEFOR_RESALE。某些目的地对商业与个人终端用途应用不同的费率。
tariffRateRequired如果省略,默认为 ZONOS_PREFERRED。告诉 Zonos 应用哪个关税来源/方法。
calculationMethodRecommendedDDP(买家预付)或 DDU(买家在门口支付)。对预付使用 DDP。驱动 LandedCost.amountSubtotals 是否包括关税/税金。
currencyCodeOptional返回落地成本小计的货币。
arrivalDateOptional如果提供,外汇汇率和关税表将固定在此日期。

响应包括 amountSubtotalsdutiestaxesfeesshippinglandedCostTotal) — 这些是你在结账时向买家显示的数字,并打印在商业发票上。

6. shipmentCreateWorkflow

最终步骤 — 创建**Shipment** 实体、生成运单标签和(可选)商业发票/装箱单。

对于日本邮政 Verified Account,这也是 Zonos 代表你调用日本邮政标签 API(代码 52)、注入你的 Later Pay Numbers、创建申报 ID 并将申报 ID 链接到日本邮政返回的跟踪号的地方。

关键字段:

FieldStatusNotes
serviceLevelRequired for label要发货的日本邮政服务(例如 japan_post.air.ems_merchandise)。必须是 japan_post.* 服务等级。
generateLabelOptional默认为 true;必须为 true 以返回标签。
contentsTypeRecommendedSALE_OF_GOODSGIFTDOCUMENTSSAMPLE 等。驱动海关处理。
nonDeliveryOptional如果交付失败,运承人应该做什么:RETURNABANDONFORWARD
referencesOptional商家提供的参考号打印在标签和商业发票上。见下面。
declaredValue / isDeclaredValueOptional发货单的保险价值。
shipmentConsolidationIdOptional当此发货单是批量调度的一部分时使用。

references 子输入

这些字段打印在运单标签和/或商业发票上。使用它们来显示收货人或海关部门需要看到的 PO 号、许可号和自由文本注释。

FieldStatusNotesLength
invoiceNumberOptional商家发票号。
purchaseOrderNumberOptional商家 PO 号。
licenseNumberOptional出口/进口许可号。
certificateNumberOptional海关证书号。
paymentConditionsOptional商业发票上显示的自由文本付款条款。限制 200 个字符 — 较长的值会在打印发票上溢出。
customsRemarksOptional自由文本海关备注。
taxCodeOptional打印在标签上的自定义税法代码。

响应

返回的 Shipment 上有趣的字段是:

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

trackingDetails.number 是日本邮政跟踪号。

label 对象可以通过两种方式返回标签 — 请求符合你的工作流的任何一个(或两个):

FieldReturnsUse when
url指向渲染标签文件(PDF)的托管链接,可随时下载或打印。你想交付一个链接 — 打开它、通过电子邮件发送或稍后在不将其保存在负载中的情况下获取文件。
labelImagebase64 编码的标签图像(PNG/PDF/ZPL)内联在响应中。你想要响应中的标签字节来附加到履行工作流或保存到你的 WMS。

仅选择你需要的字段。请求 url 会保持响应较小;请求 labelImage 会返回完整的标签内联,所以你不需要第二次往返来获取它。上面的示例请求 url

错误处理 

  • 验证错误(缺少必需字段、无效国家代码等)在标准 GraphQL errors 数组中返回并中止链的其余部分。
  • 日本邮政错误(标签生成失败、地址无效等)在 shipmentCreateWorkflow 上作为 GraphQL 错误出现。如果需要重试,请联系支持 — 推荐的路径是使用更正的输入重新提交完整的变更。

权限 

每个步骤都独立保护。你的 API 密钥必须为链中的每个实体持有写入作用域(ITEM_WRITECARTON_WRITESHIPMENT_RATING_WRITELANDED_COST_WRITESHIPMENT_WRITE)。Verified Account 上的标准商家角色授予所有这些。

后续步骤 

预约演示

这个页面有帮助吗?


在此页面: