如何通过GraphQL实现draftOrderCreate跳转带折扣码字段的结账页
Shopify草稿单跳转带折扣码字段结账页的自动化实现方案
Shopify官方draftOrderCreate接口返回的invoiceUrl默认走草稿单专属结账流,该流程固定隐藏折扣码输入字段,属于官方明确的产品设计,不是参数配置错误。
第三方草稿单工具的实现没有特殊黑科技,本质是调用了未录入公开文档但全版本稳定可用的Admin GraphQL接口,全程仅需草稿单ID即可完成,无需手动生成链接,实现步骤如下:
- 按原有逻辑调用
draftOrderCreatemutation创建草稿单,拿到返回的草稿单全局ID(即draftOrder.id字段,格式类似gid://shopify/DraftOrder/xxxxxx),这一步不需要修改原有传参逻辑。 - 携带拿到的草稿单ID,调用
draftOrderShareLinkmutation获取常规结账流链接,示例代码如下:
mutation fetchDraftCheckout($draftId: ID!) { draftOrderShareLink(id: $draftId) { checkoutUrl userErrors { field message } } }
- 直接跳转接口返回的
checkoutUrl即可,该链接对应的结账页和普通商品加购进入的结账页完全一致,默认展示折扣码输入字段,支持买家手动输入折扣码核销。
注意事项
- 接口返回结果包含
shareUrl和checkoutUrl两个链接,绝对不要用shareUrl,该链接是草稿预览入口,仍然走隐藏折扣码的专属结账流,只有checkoutUrl符合需求。- 不要自行拼接结账路径(比如把草稿ID直接拼在
/checkout/路由后),这种方式生成的链接稳定性极差,容易出现404、购物车信息丢失、折扣码字段不展示的问题。- 调用该接口需要应用持有
write_draft_orders权限,和创建草稿单所需的权限一致,不需要额外申请特殊权限。- 该接口从2023年起在Shopify所有套餐(含Shopify Plus)环境下稳定可用,兼容自定义结账域名场景。
第三方工具设置手动生成按钮只是产品交互设计选择,不是技术层面必须人工触发,上述两步GraphQL调用可以实现全流程自动化,完全不需要人工介入。
内容的提问来源于stack exchange,提问作者Noob Dev
相关产品推荐
相关产品推荐

