複数の配送ラインを含む注文の払い戻しで正確なデータを返す
技術的課題の定義と現状分析
ShopifyのECサイトでは、商品の注文に複数の配送ラインが含まれることがよくあります。その場合、注文が払い戻しになったときには、それぞれの配送ラインに対応する払い戻しデータが必要になります。しかし、これまでのShopifyのAPIでは、注文に含まれる配送ラインの数に関わらず、一つの払い戻しデータだけが返されていました。これは、注文の詳細な払い戻し情報を取得する上で問題となり、分析や報告の精度を損なう可能性がありました。
具体的な技術的ソリューションの提案
この問題を解決するために、Shopifyでは2024年7月18日以降、Admin GraphQL APIとREST APIの両方で、複数の配送ラインを含む注文の払い戻しデータを正確に返すように改善しました。これにより、各配送ラインに対応する払い戻しデータを取得することが可能になり、より正確な分析と報告を行うことができるようになります。
実装手順とコード例
具体的には、GraphQLのrefundCreateやreturnRefund mutation、またはREST APIのRefundsを使用して払い戻しを行うとき、返されるデータに以下の情報が含まれるようになりました。
- 配送の払い戻しは、
refundShippingLinesの接続に含まれ、注文編集により削除された配送ラインとともに表示されます。 - 払い戻された各配送ラインには、
OrderAdjustmentのSHIPPING_REFUNDが存在します。これまでは、注文に含まれる配送ラインの数に関わらず、一つのOrderAdjustmentのSHIPPING_REFUNDしか存在しませんでした。 -
RefundAgreementには複数の配送ラインのsalesがあります。各ShippingLineSaleは、払い戻しされた一つの配送ラインに対応します。そして、RETURNアクションタイプのShippingLineSale.shippingLineは、すべてのAPIバージョンで表示されます。
パフォーマンス・コスト分析
この改善により、払い戻し処理の精度が向上し、注文の詳細な払い戻しデータを取得できるようになりました。これにより、データ分析の精度が向上し、より適切なビジネス判断を下すことが可能になります。また、APIの応答時間やコストには影響を与えず、既存のシステムに対する負荷も増えることはありません。
実装時の注意点・ベストプラクティス
注意点としては、Refund.refundShippingLinesとRefundAgreement.salesはAdmin GraphQL APIでのみ利用可能であり、Admin REST APIでは使用できないことを覚えておいてください。
次のステップ・発展案
今後は、この改善を活用して、各配送ラインに対する払い戻しデータを詳細に分析し、ビジネスの最適化に役立てることが期待されます。さらに、複数の配送ラインが含まれる注文の扱いが一般的になるにつれて、この改善はより重要なものになるでしょう。
参考記事: Refunding orders with multiple shipping lines returns accurate data






Share:
ストアフロントにおけるCAPTCHA実装の変更について
商品クエリに新たなクエリ属性が追加されました