復元機能¶
サブスクリプションの復元機能について説明します。
復元機能とは¶
復元機能とは、ゲームを再インストールした際や、新しいデバイスへ切り替えた際に、購入済みのサブスクリプションを再度利用できるようにする機能です。
ストアごとの復元対応要否¶
ストア |
復元対応 |
備考 |
|---|---|---|
App Store |
必要 |
App Storeの審査ガイドラインにより、復元可能なアプリ内課金に対する復元機能をアプリケーションに実装する必要があります。
復元ボタンを実装しない場合、App Storeの審査でリジェクトされる可能性があります。
復元する際には、購入時と同じApple IDでログインしている必要があります。
|
Google Play |
必要 |
再インストール時や新しいデバイスへ切り替えた際に自動的に復元処理が行われます。
復元する際には、購入時と同じGoogleアカウントでログインしている必要があります。
|
DMM GAMES |
不要 |
復元機能は提供されていません |
XGでの制限¶
復元¶
XGでは、復元する場合、ゲームアカウントのデータ連携やID連携などによる引き継ぎが必須です。
再インストール時に、購入時とは異なるゲームユーザー(XGユーザー)でゲームを開始した場合、新規にXGユーザーIDが発行されます。 購入時とは異なるXGユーザーIDとなるため、引き継ぎを行わない場合、過去に購入したサブスクリプションを復元できません。
再購入¶
サブスクリプションを解約して有効期限が切れた後の場合は復元ではなく再購入となります。 再購入の場合は、新規のゲームユーザー(XGユーザー)で再購入できます。
他社事例の確認¶
同様の制御仕様は他社事例で少なくとも4例確認されています。
復元時の処理¶
サブスクリプション購入検証APIの詳細は APIリファレンス を参照してください。
App Store¶
status と event で処理を判定します。
注釈
シーケンス図中の「購入済みサブスクリプションの取得」では、App Storeに対してトランザクションの復元を要求します。復元のたびに、購入時とは異なる新規のTransactionIDが発行されます。
Unity IAP v5では RestoreTransactions がこの処理に該当します。詳細は Apple platforms を参照してください。
status |
processedReason |
event |
ゲームサーバーの処理 |
|---|---|---|---|
|
|
|
サブスクリプションの購入ユーザーです。 復元時に発行されたTransactionIDに紐づくWebOrderLineItemIdで購入または継続の処理が完了しているため、引き続きサブスクリプションを利用可能です。
ただし有効期限が切れている場合があります。実際のサブスクリプションのステータスはゲームサーバーで管理しているサブスクリプションのステータスを元に判断してください。
ゲーム端末に結果を返却します。
|
|
|
|
サブスクリプションの購入ユーザーです。 購入時・継続時に発行されたTransactionIDによる購入または継続の処理が完了しているため、引き続きサブスクリプションを利用可能です。
ただし有効期限が切れている場合があります。実際のサブスクリプションのステータスはゲームサーバーで管理しているサブスクリプションのステータスを元に判断してください。
ゲーム端末に結果を返却します。
|
|
- |
|
サブスクリプションの購入がXGで未処理の状態です。サブスクリプション購入APIを呼び出して購入処理を行います。
購入処理の詳細は サブスクリプション購入シーケンス を参照してください。
|
|
- |
|
サブスクリプションの継続がXGで未処理の状態です。サブスクリプション継続APIを呼び出して継続処理を行います。
継続処理の詳細は サブスクリプション更新処理シーケンス を参照してください。
|
HTTPステータス |
エラーコード |
説明 |
|---|---|---|
|
|
購入時と異なるXGユーザーで処理済みのTransactionIDを指定した場合に発生します。復元を中止し、ゲーム端末にエラーを通知します。 |
|
|
サブスクリプション購入検証APIで、指定したTransactionIDに紐づくWebOrderLineItemIdが別のユーザーですでに利用されている場合に発生します。復元を中止し、ゲーム端末にエラーを通知します。 |
|
|
継続時のTransactionIDについて、購入時と異なるXGユーザーでサブスクリプション購入検証APIまたはサブスクリプション継続APIを呼び出した場合に発生します(復元では購入検証APIのレスポンスとして返ることがあります)。ゲームアカウントのデータ連携・ID連携などによる引き継ぎにより、購入時のXGユーザーへ切り替えたうえで再試行してください。復元を中止し、ゲーム端末にエラーを通知します。 |
|
|
サブスクリプションの購入が確認できない状態で、継続時のTransactionIDを指定してサブスクリプション購入検証APIまたはサブスクリプション継続APIを呼び出した場合に発生します(復元では購入検証APIのレスポンスとして返ることがあります)。購入処理を完了させたうえで再試行してください。購入処理の詳細は サブスクリプション購入シーケンス を参照してください。復元を中止し、ゲーム端末にエラーを通知します。 |
Google Play¶
status で処理を判定します。
注釈
シーケンス図中の「サブスクリプションの購入情報の問い合わせ」では、Google Playから加入中のサブスクリプション情報を取得します。PurchaseTokenは購入時に発行された値がそのまま返されます。
Unity IAP v5では FetchPurchases がこの処理に該当します。詳細は Google Play を参照してください。
status |
ゲームサーバーの処理 |
|---|---|
|
サブスクリプションの購入ユーザーです。サブスクリプションの購入または継続の処理が完了しているため、引き続きサブスクリプションを利用可能です。
実際のサブスクリプションの利用の可否はゲームサーバーで管理しているサブスクリプションのステータスを元に判断してください。
|
|
サブスクリプションの購入が未処理の状態です。サブスクリプション購入APIを呼び出して購入処理を行います。
購入処理の詳細は サブスクリプション購入シーケンス を参照してください。
|
HTTPステータス |
エラーコード |
説明 |
|---|---|---|
|
|
別のユーザーで処理済みのPurchaseTokenを指定した場合に発生します。 |
DMM GAMES¶
DMM GAMESには復元機能は提供されていません。 ログインしたユーザーのサブスクリプションの利用の可否はゲームサーバーで管理しているサブスクリプションのステータスを元に判断してください。