App利用料金上限設定に関する新WebHooksとAppイベント、そして`balance_used`への変更

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

2022年7月31日以降、Shopify管理画面から課金サイクルごとの利用料金上限設定をする機能が導入されることになりました。これにより、開発者は「一律の利用料金上限」を設定する必要がなくなり、さまざまなマーチャントのニーズに対応することが可能になります。しかし、この変更には対応が必要で、具体的には、マーチャントが上限金額を更新した際に通知を受け取るための`app_subscription/update` webhookへの登録が必要となります。

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

GraphQL Admin APIの2022-07バージョンから、利用料金に基づく課金を提供するアプリ開発者は、App利用料金上限設定の導入に先駆けて新たなWebhookの更新にサブスクライブするべきです。これにより、マーチャントがApp利用料金上限を更新したときに通知を受け取ることができます。

実装手順とコード例

まず、Admin Graphql APIを通じてWebhookサブスクリプションを作成します。対象となるのは`app_subscriptions/update topic`です。次に、マーチャントがApp利用料金上限を更新した場合、追加の利用料金を発生させるようにアプリを更新する必要があります。

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

この実装により、マーチャントが自分のビジネスに適した料金上限を設定できるようになるため、アプリの利用体験が向上し、結果としてアプリの利用率や満足度が向上する可能性があります。一方、アプリ開発者は新たなWebhookへの対応やアプリの更新による開発コストを考慮する必要があります。

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

`balance_used`エンドポイントでは、課金サイクル全体の利用料金の合計が表示されます。これまでに存在した問題である、新たな定期課金がマーチャントに受け入れられた際に`balance_used`フィールドの利用料金合計がリセットされる問題は、これからは発生しないようになります。

次のステップ・発展案

今後、`balance_used`エンドポイントは常に課金サイクル全体の利用料金合計を表示します。これは、Shopify管理画面でマーチャントが現在のApp利用料金上限を確認する際の反映となります。なお、マーチャントが`capped_amount`を超える利用料金を発生させることはできません。

参考記事: New WebHooks and App Events for App Usage Spending Limits and Changes to `balanced_used`