You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Shopify API创建Fulfillment返回422错误的技术咨询

Shopify Fulfillment API 返回422错误的修复方案

2022-04版本的Fulfillment接口对请求体结构校验严格,你当前代码存在2个明确的结构/类型错误,和ID取值无关,修正即可解决:

  • 非法传null给tracking_info字段:该字段仅支持两种传值方式,要么传入包含物流商、运单号、查询链接的合法跟踪信息对象,要么完全不传该字段。显式传null会被判定为参数类型不匹配,直接触发422。
  • 字段类型传参错误:notify_customer是布尔类型字段,仅接受true/false用于控制是否给客户发送发货通知;message是字符串类型字段,用于传递发货通知内的自定义备注。你当前将同一个变量同时赋值给两个字段,若该变量是布尔值,会导致message字段类型不合法,触发校验失败。
修正后的参考代码
// 按字段类型定义传值
const fulfillmentNotifyCustomer = true; // 布尔值,控制是否发送发货通知
const fulfillmentMessage = "您的订单已发出,预计3-5天送达"; // 字符串,自定义通知备注,不需要可直接删除该字段传参

let response = await axios.get(`${shopify_url}/admin/api/2022-04/orders/${order_id}/fulfillment_orders.json`, shopify_config)

let fulfillment = {
  fulfillment: {
    // 无自定义备注可删除下一行
    message: fulfillmentMessage,
    notify_customer: fulfillmentNotifyCustomer,
    // 无物流跟踪信息直接删除tracking_info字段,禁止传null
    // tracking_info: {
    //   company: "顺丰速运",
    //   number: "SF1234567890",
    //   url: "物流查询链接"
    // },
    line_items_by_fulfillment_order: [{
      fulfillment_order_id: response.data.fulfillment_orders[0].id,
      fulfillment_order_line_items: [{
        id: line_item_id,
        quantity: line_item_qty
      }]
    }]
  }
};

response = await axios.post(`${shopify_url}/admin/api/2022-04/fulfillments.json`, fulfillment, shopify_config);

额外排查项:如果修正上述问题后仍返回422,检查请求配置shopify_config的headers中是否配置了正确的Content-Type: application/json,Axios默认会为POST请求添加该头,若自定义headers时覆盖了默认配置,缺失该头也会导致请求被接口拒绝。该问题和你使用Promise链式调用还是async/await语法无关,不需要调整异步写法。

内容的提问来源于stack exchange,提问作者Nick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 15:30:52