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

NestJS调用Shopify REST API获取履行订单返回空数组问题排查

问题:使用@shopify/shopify-api调用Shopify REST API获取履行订单返回空数组

在NestJS应用中使用@shopify/shopify-api包调用Shopify REST API,尝试获取指定订单的所有履行订单,代码如下:

async getFulfillmentOrders(orderId: string) {
    const res = await this.shopify.rest.FulfillmentOrder.all({
      session: this.getSession(),
      order_id: orderId,
    });

    return res?.fulfillment_orders;
}

调用API后返回的对象包含值为空数组的data字段和headers字段,但直接访问URL(https://xxx.shopify.com/store/xxx/orders/orderId/fulfillment_orders.json)可得到预期的履行订单。所有Shopify连接密钥等配置均正常,寻求问题原因及解决办法。


原因分析与解决办法

1. API版本不匹配

@shopify/shopify-api包默认使用的API版本可能与你手动访问的版本不一致,部分旧版本的API对履行订单的返回格式或查询逻辑有差异。

解决办法:
调用时显式指定与手动访问一致的API版本:

const res = await this.shopify.rest.FulfillmentOrder.all({
  session: this.getSession(),
  order_id: orderId,
  api_version: '2024-04' // 替换为你手动访问时使用的API版本
});

也可以在NestJS的Shopify全局配置中设置默认API版本。

2. Session对象的店铺域名错误

手动访问的URL包含/store/xxx路径(这是店铺前台的访问路径),但Shopify REST API要求使用店铺的后台域名(格式为xxx.myshopify.com或xxx.shopify.com,不带/store/xxx)。如果getSession()返回的session中shop属性包含/store/xxx,会导致API请求路径错误。

解决办法:
检查getSession()返回的session对象,确保shop字段为纯店铺域名(如xxx.shopify.com),去除/store/xxx后缀。

3. 订单ID格式或值错误

确认代码中传入的orderId与手动URL中的订单ID完全一致,避免出现字符串转数字丢失精度、多传前缀/后缀等问题。Shopify订单ID是纯数字字符串,确保没有传入包含其他字符的ID。

解决办法:
在调用前打印orderId值,与手动访问的URL中的ID对比,确保完全匹配;必要时将orderId转为数字类型后传入:

order_id: parseInt(orderId, 10)

4. 访问令牌权限不足

虽然连接密钥配置正常,但session对应的访问令牌可能缺少read_fulfillments权限,导致API返回空数据(而非权限错误)。

解决办法:

  • 登录Shopify合作伙伴后台,检查应用的权限设置,确认已添加read_fulfillments权限;
  • 重新安装应用以获取包含该权限的新访问令牌;
  • 验证session中的访问令牌权限范围,可通过解码JWT令牌查看包含的权限。

5. API请求路径自动拼接问题

@shopify/shopify-api的FulfillmentOrder.all方法会自动拼接API路径,若session的shop域名不正确,会导致请求发送到错误的端点。

解决办法:
开启API请求日志,查看实际发送的请求URL,确认是否与预期的https://xxx.shopify.com/admin/api/{version}/orders/{order_id}/fulfillment_orders.json一致。在NestJS中可通过配置Shopify客户端的日志级别实现:

// Shopify配置示例
Shopify.Context.initialize({
  // 其他配置
  logger: {
    level: LogSeverity.Debug,
  },
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:33:28