Shopify Storefront GraphQL创建客户时无法设置手机号问题
解决Shopify Storefront GraphQL创建客户时手机号不生效的问题
问题根源
你当前的customerCreate mutation 没有在input参数里声明phone字段,也没在mutation的变量定义中包含phone参数——即便请求变量里传了phone值,Shopify接口也不会接收处理这个字段。
解决方案:更新customerCreate Mutation
修改mutation代码,添加phone变量定义,并将phone加入input对象:
const String customerCreateMutation = r''' mutation MyMutation( $firstName: String, $lastName: String, $email: String!, $password: String!, $phone: String, // 新增phone变量定义 $acceptsMarketing: Boolean // 新增acceptsMarketing变量定义 ) { customerCreate(input: { firstName: $firstName, lastName: $lastName, email: $email, password: $password, phone: $phone, // 将phone传入input参数 acceptsMarketing: $acceptsMarketing // 同步传入acceptsMarketing }) { customer{ acceptsMarketing createdAt tags displayName email firstName id lastName phone } customerUserErrors { code field message } } } ''';
关键注意事项
- 手机号必须使用E.164标准格式(如
+919876543211),非标准格式会被Shopify拒绝 - 确保请求变量中的
phone和acceptsMarketing与mutation定义的变量完全对应
备选方案:创建后更新客户手机号
若无法在创建时设置手机号,可使用customerUpdate mutation修改已创建客户的手机号:
mutation CustomerUpdate($customerId: ID!, $input: CustomerUpdateInput!) { customerUpdate(customerId: $customerId, input: $input) { customer { phone } customerUserErrors { code field message } } }
请求变量示例:
final MutationOptions updateOptions = MutationOptions( document: gql(customerUpdateMutation), variables: { 'customerId': "gid://shopify/Customer/123456789", 'input': { 'phone': "+919876543211" } }, );
内容的提问来源于stack exchange,提问作者Sujan Gainju
相关产品推荐
相关产品推荐

