Amazon Appstore SDKの購入時の挙動確認
はじめに
Amazon Appstore SDKのアプリ内課金(定期購読)で以下のケースで購入時の挙動を確認する。
- アイテムの親SKUを直接指定して購入する時
- 定期購入型アイテムを購読中に同じ定期購読型アイテム(別の期間)を購入しようとした時
- 定期購入型アイテムを購読中に別の定期購読型アイテムを購入しようとした時
検証環境
SDKバージョン
- Amazon Appstore SDK 3.0.4
使用アプリ
アプリ内課金アイテム設定
アプリ内課金アイテムを以下の2つを用意した。それぞれの定期購読アイテムには毎週・毎月更新の期間を設定している。無料体験やプロモーションはどちらも未設定。
SKU(親) | 期間 | TermSKU(子) | 価格 |
---|---|---|---|
test.subscription.item6 | 毎週 | test.subscription.item6.weekly | 200円 |
毎月 | test.subscription.item6.monthly | 100円 | |
test.subscription.item7 | 毎週 | test.subscription.item7.weekly | 300円 |
毎月 | test.subscription.item7.monthly | 200円 |
図にすると以下のようなイメージ。
検証内容
検証内容ははじめにも書いたように以下の通り。それぞれをライブアプリテストに登録したアプリにて挙動を確認する。
1. アイテムのSKUを直接指定して購入する時の挙動
定期購入型アイテムに関する質問では以下のような説明がある。
Q1: 定期購入型SKUの購入を開始したときに、別のSKUが返されるのはなぜですか?
定期購入型SKUは、購入不可能な親SKUと、1つ以上の子SKUで構成されます。親SKUは商品を表し、子SKUは定期購入期間を表します。このような構成により、ユーザーが同じ商品の定期購入型アイテムを重複して購入する可能性を防いでいます。購入レスポンスで返されるSKUは親SKUです。購入プロセスは子SKUから開始されます。定期購入の期間と課金はAmazonによって処理されるため、アプリでは定期購入型アイテムが有効かどうかをチェックするだけで済みます。
つまり、親SKUを指定して購入処理を呼び出した場合は購入できないことが予想される。具体的には以下のようなコードを実装し、実行したときは購入が進まないことを期待値として確認する。
検証コード
// 引数に親SKUを指定する(本来は子SKUを指定)
PurchasingService.purchase("test.subscription.item6")
結果
上記のコードを実行すると親SKUに紐づいた子SKU(TermSKU)をどちらかを選択するUIが表示された。このことから親SKU自体は購入不可であることが確認できた。また、子SKUを選択することで指定した期間の定期購入ができた。
親SKUで購入時 | 子SKU選択UI |
---|---|
2. 定期購入型アイテムを購読中に同じ定期購読型アイテムを購入しようとした時の挙動
親SKUに紐づく子SKUを購読中に別の子のSKUを購入しようとした時にどのような挙動になるのかの確認。具体的には定期購入型アイテム6の毎月更新(100円/月)を購読中に更新期間が異なる同じ商品の定期購入型アイテム6の毎週更新(200円/週)を購入しようとするとどうなるかを確認する。予想は同じ商品を購入しようとすることになるため、購入不可になると思われる。
結果
予想通り、定期購入型アイテム6(毎月)を購読中に別の期間のもの(定期購入型アイテム6(毎週))を購入しようとすると以下のアラートが表示され、購入ができなかった。逆の定期購入型アイテム6(毎週)を購読中に定期購入型アイテム(毎月)を購入することも不可能だった。これは検証内容1にも関連するが、期間は異なるが同じ定期購入型アイテムと認識されているためAmazon側が重複購入を防いでいる。
3. 定期購入型アイテムを購読中に別の定期購読型アイテムを購入しようとした時の挙動
ある定期購入型アイテムを購読中に別の定期購読型アイテムを購入しようとした時にどのような挙動になるかの確認。具体的には定期購入型アイテム6の毎月更新(100円/月)を購読中に定期購読型アイテム7の毎月更新(200円/月)を購入しようとするとどうなるかを確認する。予想としては別の商品を購入しようとすることになるため、購入可能だと思われる。
結果
こちらも予想通り、定期購入型アイテム6(毎月)を購読中に別の定期購入型アイテム(定期購入型アイテム7(毎月))であれば購入できることを確認した。また定期購入型アイテム6(毎週)を購入中に別の定期購入型アイテムで期間が異なる定期購入型アイテム7(毎月)も購入できることを確認した。
またAmazonアカウントの定期購読履歴を確認したところ、二つの定期購読が購入できていることが確認できた。
まとめ
以下3つの挙動を検証したところ、次のことが確認できた。
- アイテムのSKUを直接指定して購入する時
- 定期購入型アイテムを購読中に同じ定期購読型アイテム(別の期間)を購入しようとした時
- 定期購入型アイテムを購読中に別の定期購読型アイテムを購入しようとした時
- 💡 定期購入型アイテムを購入する際は子SKUを指定する必要がある
- 親SKUを指定すると子SKUを選択するUIが表示される
- 💡 同じ親SKUで何らかの子SKUを定期購読中に同じ親SKUに紐づく別の子SKUの定期購読はできない
- 同じ定期購入型アイテムで毎月から毎週に期間変更はできない(逆も然り)
- 💡 定期購入型アイテムを定期購読中に別のSKUの定期購入型アイテムを購入できる
Discussion