記事
サブスクリプションの更新とアプリ内購入の失敗をテストする
課金の再試行または課金の猶予期間の状態にある、失敗したサブスクリプションの更新、および失敗したアプリ内購入をあなたのアプリが処理できることを確認します。
概観
支払いカードの有効期限切れなど、請求サイクルのどの段階でも、予期せず支払いが失敗する可能性があります。あなたのアプリのユーザ体験をテストして、これらの予期しないイベントが処理され、請求の問題が発生した場合に適切なレベルのサービスが提供されることを確認します。
サンドボックステストでは、アプリ内購入が失敗したり、自動更新サブスクリプションが更新されなかったりする課金の問題をシミュレートできます。サンドボックス環境で課金猶予期間を有効にすることもできます。これらのサンドボックス機能を使用して、課金の問題が回復するか回復しないかにかかわらず、あなたのアプリが自動更新サブスクリプションを処理する方法をテストします。
サンドボックス環境は、テストを実行すると App Store サーバ通知 (App Store Server Notifications) を送信します。詳細については、App Store サーバ通知の有効化 (Enabling App Store Server Notifications) を参照してください。
サンドボックス環境では、自動更新サブスクリプションは最大 12 回更新されます。サンドボックス環境での更新率の詳細については、サブスクリプションの更新率を編集する を参照してください。
請求の問題が発生した場合のサブスクリプション状態の変更の詳細については、不本意なサブスクライバーの解約の削減 (Reducing Involuntary Subscriber Churn) を参照してください。アプリがサブスクリプションコンテンツへのアクセスを決定する方法については、サブスクリプションの請求の処理 (Handling Subscriptions Billing) を参照してください。
サンドボックス環境を構成して請求問題をシミュレート
iOS 16 または iPadOS 16 以降を実行しているテストデバイスで、以下の手順に従います。
- Sandbox Apple アカウントを使用して App Store にサインインします。
- [Setting (設定)] > [Developer (開発者)] > [Sandbox アカウント] > [Manage (管理)] > [アカウント設定] を選択します。
- [購入と更新を許可する] 設定を無効にします。
この設定を無効にすると、アプリ内購入が失敗し、自動更新サブスクリプションがサンドボックス環境で更新されなくなります。
注意
この設定は、サンドボックス Apple アカウントがサインインするすべてのデバイスと、そのアカウントに属するすべてのアクティブな自動更新サブスクリプションに適用されます。
この設定は、あなたが再度有効にするまで無効のままです。再度有効にすると、顧客が請求の問題を解決する様子をシミュレートできます。
サンドボックス環境で課金猶予期間を有効にする
サンドボックス環境で請求猶予期間を有効にするには、App Store Connect にログインし、以下の操作を行います。
- マイアプリからあなたのアプリを選択します。
- サイドバーの [Features (機能)] で [サブスクリプション] をクリックします。
- [Billing Grace Period (請求猶予期間)] セクションで、[Set Up Billing Grace Period (請求猶予期間の設定)] をクリックします。
- ドロップダウンメニューから期間を選択します。
- 猶予期間をすべての更新に適用するか、有料から有料への更新のみに適用するかを選択します。構成可能な設定の詳細については、自動更新サブスクリプションに対する請求の猶予期間の有効化 を参照してください。
- テストのみの請求猶予期間を有効にするには、[Only Sandbox Environment (サンドボックス環境のみ)] を選択します。
- [Next (次へ)] をクリックします。
- [Confirm (確認)] をクリックします。
請求猶予期間のあるサブスクリプションの請求の問題をテストするには、まず自動更新サブスクリプションを購入し、請求の問題をシミュレートするように設定を構成します (上記の サンドボックス環境を構成して請求問題をシミュレート で説明されているように)。
課金再試行状態になるサブスクリプションをテスト
自動更新サブスクリプションは、サブスクリプションが自動更新に失敗すると、期限切れとなり、課金の再試行状態になります。
このテストケースでは、サンドボックス環境の課金猶予期間が無効になっていることを前提としています。課金の再試行状態に入るサブスクリプションをテストするには、以下の手順を実行します。
- あなたのアプリで自動更新サブスクリプションを正常に購入します。
- 課金の問題をシミュレートするように環境を設定します (上記の サンドボックス環境を構成して請求問題をシミュレート で説明しているように)。
- サブスクリプション期間が更新されるまで待ちます。更新は失敗し、課金の再試行状態になります。
- あなたのアプリが状態を認識していることを確認します。課金猶予期間外の課金再試行状態のサブスクリプションは、サービスを受けることができません。StoreKit は、Product.SubscriptionInfo.RenewalState オブジェクトで isInBillingRetry 値を提供します。
課金猶予期間になるサブスクリプションをテスト
自動更新サブスクリプションは、以下の両方の条件が満たされると、課金猶予期間に入ります:
あなたのアプリで請求猶予期間が有効になっている
サブスクリプションの自動更新が失敗する
課金猶予期間に入るサブスクリプションをテストするには:
- 上記で説明した 自動更新サブスクリプションに対する請求の猶予期間の有効化 の手順に従います。
- あなたのアプリで自動更新サブスクリプションを正常に購入します。
- 上記の サンドボックス環境を構成して請求問題をシミュレート で説明したように、請求の問題をシミュレートするように環境を設定します。
- サブスクリプション期間が更新されるまで待ちます。サブスクリプションは課金猶予期間に入ります。
- あなたのアプリが状態を認識し、課金猶予期間中にサブスクリプションのサービスを提供していることを確認します。StoreKit は、Product.SubscriptionInfo.RenewalInfo オブジェクトの gracePeriodExpirationDate プロパティで猶予期間の有効期限を提供します。
- 課金猶予期間が終了するまで待ちます。サブスクリプションは請求再試行状態のままです。
- あなたのアプリが請求再試行状態を認識していることを確認してください。課金猶予期間が終了すると、サブスクリプションはサービスを受ける資格がなくなります。
注意
課金猶予期間の状態にある自動更新サブスクリプションは、サービスを受ける資格があります。
サブスクリプションが請求再試行状態になった後に課金問題メッセージをテスト
自動更新サブスクリプションは期限切れとなり、サブスクリプションの自動更新に失敗すると課金の再試行状態になります。あなたのアプリが billingIssue メッセージを遅延することを選択しない限り、アプリの起動時に課金の問題メッセージが システムにより表示されます。これらの手順を使用してメッセージをトリガーし、さまざまなビューであなたのアプリがメッセージにどのように応答するかをテストします。これらのシステムメッセージの管理の詳細については、Message を参照してください。
サブスクリプションが課金再試行状態になった後にシステムが課金問題シートを表示するタイミングをテストするには:
- あなたのアプリで自動更新サブスクリプションを正常に購入します。
- 上記の サンドボックス環境を構成して請求問題をシミュレート で説明したように、課金問題をシミュレートするように環境を設定します。
- サブスクリプション期間が更新されるまで待ちます。更新は失敗し、課金の再試行状態になります。
- App Store は billingIssue メッセージを送信します。アプリを起動するか、前面に出します。
- あなたのアプリが message を実装していない場合、システムは課金問題シートを表示します。
- あなたのアプリが message を実装し、メッセージを遅延する場合は、あなたのアプリが display(in:) を呼び出すために必要な手順を実行します。課金問題がまだアクティブである限り、システムは課金問題シートを表示します。アプリが display(in:) を呼び出す前に課金問題を解決した場合、システムはシートを表示しません。
このテストは、課金猶予期間を有効にするかどうかに関係なく実行できます。
課金問題から回復するサブスクリプションをテスト
課金再試行が成功すると、サブスクリプションは 回復 します。課金再試行または課金猶予期間の状態が終了し、再びアクティブになります。
回復した自動更新サブスクリプションをテストするには、以下の手順に従います。
- 課金再試行状態にあるサブスクリプションから開始します (課金再試行状態になるサブスクリプションをテスト で前述したとおり)。
- [Setting (設定)] > [Developer (開発者)] > [サンドボックスアカウント] > [Manage (管理)] > [Account Setting (アカウント設定)] を選択し、[Allow Purchase & Renewals (購入と更新を許可する)] 設定を有効にします。これにより、次回のサブスクリプション更新の試行が成功します。
- あなたのアプリが、サービスを受ける資格のあるアクティブなサブスクリプション状態を認識していることを確認します。
上記の 課金猶予期間になるサブスクリプションをテスト で説明したように、課金猶予期間内のサブスクリプションからテストを始めて繰り返します。
課金再試行状態から回復したサブスクリプションの課金サイクルは、回復した日に開始します。課金猶予期間中に回復したサブスクリプションの課金サイクルは変更されません。
課金問題から回復しないサブスクリプションをテスト
以下のいずれかが発生すると、サブスクリプションは課金再試行状態を終了します:
- 課金再試行期間がサブスクリプションを回復せずに終了する。
- 顧客がサブスクリプションをキャンセルする。
- 課金が成功したため、サブスクリプションは回復しました。
期限切れで回復しないサブスクリプションをテストするには、以下の手順に従います。
- 課金再試行状態にあるサブスクリプションから始めます (上記 課金再試行状態になるサブスクリプションをテスト で説明)。
- 課金再試行期間が終了するまで待ちます。[購入と更新を許可する] 設定を有効にしないでください。
- あなたのアプリがサブスクリプション状態を認識していることを確認します。サブスクリプションはアクティブでなく、サービスを受ける資格はありません。
顧客がキャンセルしたサブスクリプションをテストするには、以下の手順に従います。
- 上記の 課金猶予期間になるサブスクリプションをテスト で説明したように、課金猶予期間内のサブスクリプションから開始します。
- [Setting (設定)] でサブスクリプションを管理するか、あなたのアプリの showManageSubscriptions(in:) の実装を使用して、サブスクリプションをキャンセルします。設定でのサブスクリプションの管理の詳細については、Apple からのサブスクリプションをキャンセルする場合 (If you want to cancel a subscription from Apple) を参照してください。
- システムはすぐにサブスクリプションをキャンセルします。
- あなたのアプリがサブスクリプションの状態を認識していることを確認します。サブスクリプションはアクティブでなく、サービスを受ける資格がありません。
上記の 課金再試行状態になるサブスクリプションをテスト で説明したように、課金再試行状態のサブスクリプションからテストを繰り返します。
失敗したアプリ内購入をテスト
失敗した購入試行をテストするには、以下の手順に従います。
- 環境を設定して課金問題をシミュレートするようにします (上記の サンドボックス環境を構成して請求問題をシミュレート を参照)。
- あなたのアプリで、アプリ内購入製品の購入を試みます。購入が失敗したことを示すサンドボックス環境のエラーメッセージがシステムに表示されます。
- 請求問題のテストを続行するには、[OK] を選択します。または、ユーザが請求の問題を解決する様子をシミュレートするには、[設定] を選択してアカウント設定に戻り、[購入と更新の許可] を有効にします。
以下も見よ
支払い取引
アプリ外での購入をテストする
サブスクリプションの購入、更新、オファーや販売促進コードの引き換えなど、アプリ外で発生する取引をあなたのアプリが受信して処理していることを確認します。
サンドボックス環境での再獲得提供のテスト
あなたのアプリ外で行われたものも含め、あなたのアプリが再獲得提供取引を受信して処理していることを確認します。
中断された購入のテスト
支払い取引を検査して呼び出すことで、あなたのアプリが中断された購入を処理することを確認します。
支払い要求のテスト
支払い取引監視者への呼び出しを検査して、サンドボックス環境での支払い要求が適切に機能することを確認します。
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ