POS(店舗販売)の支払い処理動作に関する変更

ShopifyのPOS(Point of Sales)における支払い処理の動作に変更が生じることにより、POSでの注文キャンセルが可能になるという新たな機能が導入されます。これらの変更は、2023年10月31日からPOS Pro、2024年1月22日からShopify Plusで適用される予定です。

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

現状では、支払いが承認された後、即座にキャプチャ(決済確定)されます。そのため、注文キャンセルを行うことができません。これは、店舗での販売や、返品・交換などの対応において制約となる可能性があります。

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

新たな機能では、支払いが承認されてから最大15分間、自動的にキャプチャされるか、店舗スタッフによって取消されるまで、支払いは承認状態に留まります。この結果、Admin APIとStorefront APIにいくつかの変更が生じます。

実装手順とコード例

Admin APIでは、以下の変更がみられます。

  • 支払いが承認されてから15分間、OrderDisplayFinancialStatusAUTHORIZEDと表示され、その後PAIDに遷移します。もし15分以内に注文がキャンセルされた場合、ステータスはVOIDEDに遷移します。
  • 支払いが承認され、キャプチャされた場合、OrderTransactionオブジェクトがAUTHORIZATIONCAPTUREOrderTransactionKindとして分割されます。従来はSALEの種類で一つのトランザクションとして扱われていました。
  • 支払いが承認され、取消された場合、OrderTransactionオブジェクトがAUTHORIZATIONVOIDOrderTransactionKindとして分割されます。
  • 注文内の支払いがキャプチャされるまで、SuggestedRefund.suggestedTransactionsは空の配列となります。

また、Storefront APIでは、OrderFinancialStatusがAdmin APIのOrderDisplayFinancialStatusと同様の挙動を示します。

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

これらの新たな変更は、注文キャンセル機能の導入に伴い、支払い処理の挙動に影響を与えますが、システムのパフォーマンスやコストに大きな影響はないと予想されます。

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

新たな挙動を適切に反映させるためには、既存のコードに変更を加える可能性があります。特に、OrderTransactionの取り扱いや、支払いのステータス変更のタイミングについては、新たな挙動を理解した上で適切に対応することが重要です。

次のステップ・発展案

今後、更なる機能改善やAPIのアップデートが予定されており、それに伴い新たな変更が発生する可能性があります。そのため、Shopifyの公式ドキュメンテーションや開発者向けのリソースを定期的にチェックし、最新の情報を得ることをお勧めします。

参考記事: Changes to Point of Sales (POS) payment processing behavior