Unity iOS アプリでサブスクリプション復元を実装している中で、Money2::TakeOverSubscriptionStatus の挙動について確認したく投稿しました。
現在、同一アプリ内にサブスクリプションプラン A / B の 2 つが存在しています。
この 2 つは異なるサブスクリプショングループとして設定されています。
この状態で Money2::TakeOverSubscriptionStatus を用いてサブスクリプション状態の引き継ぎを行ったところ、購入状況の組み合わせによって一部のみ復元できず、以下のエラーが発生しました。
BadRequestException: [{"component":"userId","message":"money2.subscription.transaction.userId.error.myself","code":"subscription.transaction.myself"}]
再現条件
以下の条件で確認しています。
サブスク A のみ購入し、TakeOverSubscriptionStatus 実行
サブスク B のみ購入し、TakeOverSubscriptionStatus 実行
サブスク A / B の両方を購入
TakeOverSubscriptionStatus を A → B の順で実行
A の復元は成功
続けて B の復元を行うと、上記エラーが発生
TakeOverSubscriptionStatus は、iOS の receipt に複数のサブスクリプション情報が含まれている場合、1 回の実行で関連する契約状態もまとめて現在ユーザーへ引き継ぐ仕様でしょうか
その結果、1 回目の引き継ぎ後に 2 回目対象のサブスクリプションもすでに同一 userId に紐づいた状態となり、subscription.transaction.myself が返っている、という理解で正しいでしょうか
もしこの挙動が仕様であれば、異なるサブスクリプショングループの複数サブスクリプションを安全に復元するための推奨フローをご教示いただけますでしょうか
お手数ですが、ご確認いただけますと助かります。
よろしくお願いいたします。
ご対応のご連絡ありがとうございます。
対応いただいたとのことでしたので、こちらで改めて動作確認を行いました。
しかしながら、こちらの環境では 以前と同じ事象が引き続き再現しており、現時点では解消を確認できておりません。
以下の条件で再検証を行いました。
Unity iOS アプリ
異なるサブスクリプショングループのサブスクリプション A / B を使用
Money2::TakeOverSubscriptionStatus による復元を実施
サブスク A のみ購入 → 復元成功
サブスク B のみ購入 → 復元成功
サブスク A / B の両方を購入し、A → B の順で TakeOverSubscriptionStatus を実行
A の復元は成功
B の復元時に以下のエラーが発生(BadRequestException: [{"component":"userId","message":"money2.subscription.transaction.userId.error.myself","code":"subscription.transaction.myself"}])