はじめに
google play アプリのアプリ内課金(以下、IAB)を実装したので、まとめてみました。
私はバックエンド担当のため、バックエンドの、また、1回限りのアイテムではなく定期購入についてのまとめとなります。
いくつかのトピックごとに記事にしているので他の記事もどうぞ。
初回となる本記事では、定期購入のライフサイクルについて書きたいと思います。
まとめ記事一覧
- 定期購入のライフサイクル
- 購入と解約のシーケンス
- Subscriptions and In-App Purchases API
- RTDN
- テスト
ライフサイクルについて
定期購入の契約から解約までのライフサイクルを解説します。また、定期購入の一時停止やユーザが支払いに失敗した際の状態遷移についてもまとめました。
参考: https://developer.android.com/google/play/billing/subscriptions#lifecycle
一般的な購入フロー
定期購入は、ユーザが解約するまで、自動的に更新され、更新時にユーザに請求されます。
IAB では、請求サイクルが終了するまでサービス提供することが期待されており、解約後も期限が切れるまではサービス提供期間となります。
更新時の請求に失敗すると、設定した猶予期間ののち、アカウント保留となり、サービス適用は打ち切られます。
アカウント保留中は、google で自動的に請求の再試行が行われ復帰するか、ユーザが手動で決済方法を修正することでアクティブに復帰します。
また、自動更新を一時的に停止する一時停止機能があります。
状態遷移
- アクティブ
- サービスを利用中の状態
- 解約済
- ユーザが解約後、自動更新が止まった状態
- サービス提供は即時に停止されません
- 期限切れ
- サービス提供していない状態
- 猶予期間
- 自動更新が失敗したが、まだサービス提供している状態
- アカウント保留中
- 自動更新の支払い失敗によりサービス提供が停止している状態
- 支払いが復旧し次第アクティブに戻る
- 一定期間支払いが復旧ができないと期限切れとなる
- 一時停止予約
- 一時停止は、停止するとその場でサービス提供が停止するため、基本的には次回更新日から一時停止させることになり、その予約中の状態
- 一時停止
- ユーザは一時停止中はサービスを利用することができなくなります
- 手動で再開するか、一時停止時に指定した、1週間から3か月の停止期間終了後に自動で再開します
- 再開時にユーザに請求が行われます
定期購入の設定
定期購入の商品として設定できるものです
請求サイクル
- 週単位、1か月、3か月、6か月、1年が選択可能
- 週単位はキャリア決済だと利用不可
価格
- 期間単位の価格を設定する
- 99円 ~ 48,000円で設定しなければならない
- 消費税は含んだ形で設定する
- 内税設定
お試し価格
- 一定の期間の安価な初期価格、または、特定回数の定期購入額の減額を設定できる
- 定期価格より安くなければならない
- お試し価格が利用できる期間は、3日 ~ 1年
無料試用
- 一定期間無料で利用できる
- 請求期間への切り替えは自動で行われる
- 商品ごとに1回の無料期間を設定できる
- デフォルトでは、ユーザはアプリで1回(いづれかの定期購入商品で1度)しか利用できない
- 商品ごとに1回に設定変更可能
- 期間は3日以上
- 試用期間は変更可能ですが、適用されるのは設定後の購入者から
アップグレード・ダウングレード
購読中のプランをアップグレードないしはダウングレードする機能。基本的にアプリ側で実装する
変更時の配分プランをパラメータとして渡す必要がある
設定できる比例配分モードをは下記の通り
- 日割り調整(デフォルト
- 差額請求
- 次回更新時から
- 更新時のみ切り替え可能
挙動としては、定期購入を再購入する形となり、購入中の定期購入が期限切れになり、新しい定期購入と新しい購入トークンが作成される形となる
価格変更
購入済みの価格を変更する機能が提供されている
- 値上げの場合
- 新規ユーザは変更後価格
- 既存ユーザは価格変更通知が飛び、一定期間内の同意が必要
- 同意後の請求から自動で切り替えられる
- 同意しなかった場合、期限経過後の請求日で自動解約される
- 値下げの場合
- 変更されたことが通知されるが、変更後の請求から自動で切り替えられる