PAYATHON 2026

Shopify Admin GraphQL 为什么查不到客户订阅合同?

数据小陈

结论

如果这些订阅合同是由 Shopify Subscriptions APP 创建的,自定义 APP 通常无法通过 Admin GraphQL 查询到它们。subscriptionContracts 的查询范围取决于合同归属和 APP 的访问权限。客户信息可以查到,但 nodes 为空,可能是因为这些合同不属于当前 APP。

Shopify Admin GraphQL API 要求具备 read_own_subscription_contracts 或 write_own_subscription_contracts 权限。这里的 own 指由当前 APP 管理的合同。Shopify 开发者社区也说明,订阅合同归创建它的 APP 所有,其他 APP 即使拥有订阅相关权限,也无法读取这些合同或接收其合同 Webhook。Shopify 订阅合同文档;Shopify 开发者社区说明

先检查 API 权限

如果合同确实由当前自定义 APP 创建,请检查安装授权是否包含以下 Admin API 权限:

  • 查询客户:read_customers
  • 查询本 APP 创建的订阅合同:read_own_subscription_contracts

修改权限配置后,确保店铺重新授权了 APP,再用同一客户 ID 查询。权限不足时通常会出现 GraphQL 错误。若请求成功但连接为空,也请确认合同是否由其他订阅 APP 创建。Shopify 只允许 APP 读取其自身的 SubscriptionContract 记录。API access scopes

Shopify Subscriptions 创建的合同怎么办?

如果合同由 Shopify Subscriptions 或其他第三方订阅 APP 创建,为自定义 APP 增加 read_own_subscription_contracts 权限仍无法读取这些合同。可以考虑以下方案:

  1. 使用创建合同的订阅 APP 提供的 API 或集成能力。 确认它是否支持查询订阅状态,或能否将状态同步到你的系统。
  2. 检查该 APP 是否提供状态变更通知。 让订阅 APP 将续订、暂停、取消等事件同步到你的服务端,再根据客户身份维护状态。Shopify 的合同 Webhook 也受合同归属限制,自定义 APP 无法直接接收另一个 APP 创建的合同事件。
  3. 若由你自己的 APP 创建并管理合同, 使用该 APP 获得授权的 Admin GraphQL API 查询合同,并根据 status 判断是否符合业务规则。

Customer Account API 同样受合同归属限制。customer_read_own_subscription_contracts 权限只允许读取属于当前 APP 的合同,因此切换到 Customer Account API 也无法读取 Shopify Subscriptions 创建的合同。Customer API access scopes

为什么订单记录不能直接替代合同状态

订单中包含订阅商品,只能说明客户曾有相关购买记录,无法证明订阅目前仍处于 active 状态。若要据此决定是否允许客户使用服务,应从创建或管理订阅合同的 APP 获取当前状态,或通过该 APP 支持的同步机制维护状态。

备注:内容仅供参考。