前回のクロスグレードについての続編のアップグレード/ダウングレードの仕様についてです。
アップグレード/ダウングレードとは
iTunes Connectにて登録する課金アイテムのうち、同グループかつレベルが低いものから高いもの変更する ときに適用されるのが アップグレード、同グループかつレベルが高いものから低いもの変更する ときに適用されるのが ダウングレードです。
ある定期購読アイテムから別のアイテムに変更する場合にスムーズに行えるためのものです。
仕様
以下は課金アイテムが同グループ内であることを前提としています。
レベルは1から順に高いものとします。
アイテムの購読期間が同じ場合も異なる場合も仕様は同じです
レベル | アイテム | 期間 |
---|---|---|
1 | アイテムA | 1ヶ月 |
2 | アイテムB | 1ヶ月 |
レベル | アイテム | 期間 |
---|---|---|
1 | アイテムA | 1ヶ月 |
2 | アイテムB | 12ヶ月 |
アイテムA→Bがダウングレード、B→Aがアップグレードです。
アップグレード
即日課金され、乗り換え前の課金は登録日から乗り換え日までの金額をApple側で計算されて返金されます。
レシート検証するとAもBも有効期限内のレシートとなると思われます。(サンドボックスで検証するとそうなりました)
Bは有効期限後更新されず、Aのレシートは更新されていきます。
ダウングレード
乗り換え時にレシートを検証しても乗り換え前のレシートのみが有効という情報しかとれず、ダウングレードしたかどうかはわかりません。
バッチ処理等で乗り換え前のレシートの有効期限時にレシートを再取得すると、乗り換え前のアイテムは更新されず、乗り換えしたアイテムのレシートが新たに追加されています。
まとめ
クロスグレード同様にユーザがスムーズに乗り換えることができますね。またユーザへの課金時の表記もStoreKitが「アップグレードしますよ」「ダウングレードしますよ」と出してくれるためアプリ側では特に実装を変更する必要もないようです。
サーバサイドのレシート検証と検証タイミングが重要かなと思います。