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

如何用Ruby的shopify_api gem创建GraphQL appSubscriptionCreate突变?

解决shopify_api gem执行GraphQL突变的问题

你遇到的问题核心是GraphQL突变的语法格式错误,以及对graphql-client(shopify_api依赖的库)的执行逻辑不熟悉。下面一步步帮你解决:

错误原因分析

你写的mutation语法有问题:

{ mutation { appSubscriptionCreate(...) { ... } } }

这种写法是把mutation字段放在了QueryRoot(查询根类型)下,但GraphQL里mutation是独立的根类型,不属于QueryRoot,所以会报"Field 'mutation' doesn't exist on type 'QueryRoot'"的错误。而当你去掉外层的mutation后,appSubscriptionCreate本身是mutation字段,自然也不存在于QueryRoot上,所以第二个错误也随之而来。

另外,shopify_api的ShopifyAPI::GraphQL客户端确实没有单独的mutation方法——因为它依赖的graphql-client库,不管是query还是mutation,都用query方法执行,只要你的GraphQL语句是正确的mutation格式就行。

正确的代码实现

下面是修正后的完整代码示例:

# 初始化GraphQL客户端(确保你已经完成了Shopify的OAuth认证,客户端已正确配置)
@@client = ShopifyAPI::GraphQL.new

# 正确定义mutation:注意语法是直接以mutation开头,而非嵌套在{}里
PAYMENT_MUTATION = @@client.parse <<-'GRAPHQL'
mutation CreateAppSubscription {
  appSubscriptionCreate(
    name: "Super Duper Recurring Plan"
    returnUrl: "http://super-duper.shopifyapps.com"
    lineItems: [
      {
        plan: {
          appRecurringPricingDetails: {
            price: { amount: 10.00, currencyCode: USD }
          }
        }
      }
    ]
  ) {
    userErrors {
      field
      message
    }
    confirmationUrl
    appSubscription {
      id
    }
  }
}
GRAPHQL

def initialize
  # 用query方法执行mutation,graphql-client会自动识别类型
  @result = @@client.query(PAYMENT_MUTATION)
  # 可以先检查是否有错误
  if @result.data.appSubscriptionCreate.userErrors.any?
    puts "创建订阅出错: #{@result.data.appSubscriptionCreate.userErrors.map(&:message).join(', ')}"
  end
end

def confirmation_url
  @result.data.appSubscriptionCreate.confirmationUrl
end

关键注意点

  • mutation语法:必须以mutation [可选名称] { ... }开头,这是GraphQL标准的mutation写法,graphql-client会正确识别这是一个mutation操作,而不是query。
  • 错误处理:别忘了处理userErrors,Shopify的mutation通常会返回这些错误信息,方便你排查问题(比如参数格式错误、权限不足等)。
  • 客户端配置:确保你的ShopifyAPI::GraphQL客户端已经正确设置了shop域名、API密钥、访问令牌等认证信息,否则会出现权限错误。

这样修改后,你应该就能成功创建应用订阅并获取到confirmationUrl了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:13:35