ShopifyのCheckout Admin REST APIにおけるラインアイテムのapplied_discountsとdiscount_allocationsに対するdiscount_classの公開

Shopifyストアの開発者や技術者の皆さんは、商品のディスカウントを管理する際に、各ラインアイテムに適用されるディスカウントの種類を詳細に把握することが重要です。しかし、現状ではその情報が十分に把握できず、ディスカウント管理の効率化や最適化に課題がありました。

技術的ソリューションの提案

ここで新たな解決策として注目したいのが、APIバージョン2023-07で公開される機能です。これにより、Checkout Admin REST APIline_items[n].applied_discountsline_items[n].discount_allocationsにおいてdiscount_class属性が公開されます。

このdiscount_class属性は、ラインアイテムに適用されるディスカウントの種類を識別します。以下の2つのクラスが定義されています。

  • PRODUCT - 特定の商品だけに適用される商品クラスのディスカウントを示します。
  • ORDER - 全てのラインアイテムに適用されるオーダークラスのディスカウントを示します。

この新機能により、各ラインアイテムに適用されるディスカウントの種類を詳細に把握し、より適切にディスカウント管理することが可能になります。

実装手順とコード例

以下に、オーダークラスのディスカウントがチェックアウトに適用された際のラインアイテムで"discount_class": "ORDER"が存在する例を示します。


"line_items": [
    {
        "id": "a93dfd7540730e5d9812a92fac5a640e",
        "key": "a93dfd7540730e5d9812a92fac5a640e",
        "product_id": 6,
        "variant_id": 10,
        "sku": "jeans1",
        "vendor": "",
        "title": "Jeans",
        "variant_title": "Black",
        "image_url": "",
        "taxable": true,
        "requires_shipping": true,
        "gift_card": false,
        "price": "50.00",
        "compare_at_price": "30.00",
        "line_price": "50.00",
        "properties": {},
        "quantity": 1,
        "grams": 0,
        "fulfillment_service": "manual",
        "applied_discounts": [],
        "discount_allocations": [
            {
                "id": null,
                "amount": "20.00",
                "description": "ORDER$20",
                "created_at": null,
                "application_type": "discount_code",
                "discount_class": "ORDER"
            }
        ],
        "tax_lines": []
    }
]

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

この新機能により、ディスカウントの種類を明確に識別できるため、ディスカウント管理の効率が向上します。これにより開発者の作業負荷が軽減され、開発コストの削減にもつながります。

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

新APIを利用する際には、各ディスカウントクラスの特性を理解して適用することが重要です。また、ディスカウント管理の最適化のためにはAPIの定期的な更新を確認し、最新の機能を活用することが推奨されます。

次のステップ・発展案

今後はこの新機能を活用し、ディスカウント管理の効率化を図るとともに、更なるAPIの改善によるビジネスの最適化を図っていきましょう。

参考記事: Expose the discount class for applied_discounts and discount_allocations on a line item for the Checkout Admin REST API