DraftOrderInputがdiscountCodesとacceptAutomaticDiscountsを受け入れるようになりました

1. 技術的課題の定義と現状分析

ShopifyのGraphQL Admin APIでは、ドラフトオーダーに割引コードを適用したり、自動割引を計算時に受け入れるかどうかを決定することが求められていました。しかし、これまでのバージョンでは、そのような操作を行うための入力フィールドがDraftOrderInputには存在していませんでした。

2. 具体的な技術的ソリューションの提案

2024年7月のGraphQL Admin APIのバージョン更新により、DraftOrderInputはdiscountCodesとacceptAutomaticDiscountsを受け入れるようになりました。これらの任意の入力フィールドを使用することで、ドラフトオーダーに割引コードを適用したり、自動割引を計算時に受け入れるかどうかを決定できます。

3. 実装手順とコード例


mutation {
  draftOrderCreate(input: {
    lineItems: [{ 
      variantId: "gid://shopify/ProductVariant/1", 
      quantity: 1 
    }],
    discountCodes: ["DISCOUNT_CODE"],
    acceptAutomaticDiscounts: true
  }) {
    draftOrder {
      ...
    }
    userErrors {
      field
      message
    }
  }
}

上記のコードは、新しいドラフトオーダーを作成し、割引コードを適用し、自動的な割引を受け入れる設定の例です。

4. パフォーマンス・コスト分析

この新しい機能の導入により、ドラフトオーダー作成時の割引設定が容易になり、これまで手動で行っていた割引設定の作業時間を大幅に削減できます。これにより、開発者の生産性向上とコスト削減が期待できます。

5. 実装時の注意点・ベストプラクティス

割引コードと自動割引の設定は、ドラフトオーダー作成時に行うことができますが、それぞれの割引設定が競合する場合には注意が必要です。具体的には、acceptAutomaticDiscountsがtrueの場合でも、discountCodesで指定した割引が優先されます。

6. 次のステップ・発展案

さらに、新たなフィールドDraftOrderPlatformDiscountも追加されました。これは、プラットフォーム割引がドラフトオーダーの各ラインアイテムにどのように割り振られているか、割引の種類、その名称などの詳細を説明するフィールドです。詳細はShopify.devで学ぶことができます。

参考記事: DraftOrderInput now accepts discountCodes and acceptAutomaticDiscounts.