【Google】BillingLibrary5で大きく変わるサブスクの定期購入アイテム
2022 年 5 月に Google Play Billing Library のバージョン 5 が登場しました。
個人的には、2021 年の Google I/O で発表された新機能がどうなったのかずっと疑問だったのですよね。
Billing Library バージョン 4 で対応されると思っていたのですが、大きな変更は消費型アイテムの複数購入のみでした。
今回はサブスク周りに大きな変更が入る、Billing Library バージョン 5 の定期購入アイテム管理について紹介します。
Android のアプリ内課金については、以下も参考にしてください。
定期購入商品の構成が変更
2022 年の 5 月に、サブスクの定期購入商品の構成が強制的に変更になっています。
Google Play Console で定期購入の画面に行くとわかりますが、注目すべきところはこんなところでしょうか。
・基本プラン(base plan)
・プリペイドプラン
・特典(offer)
・商品管理 API の変更
プランについては、冒頭でも書いた通り 2021 年の Google I/O で発表されていたので驚きはありません。
マルチなプランってどんな感じになるのかなって思っていたのですが、強制的に商品構成を変更してくるとは・・・。
定期購入アイテムを編集可能にする場合の注意点
既存の定期購入アイテムを編集しようとすると、以下の警告が表示されます。
コンソール画面で編集することはできるけど、InAppProducts API で参照や更新ができなくなるよってことを伝えているようです。
実際に、この時点では InAppProducts API で定期購入商品の情報取得が可能です。
参考までに取得した情報を残しておきましょう。
これから参照するアイテムは以下の条件となっています。
・1 ヶ月単位のサブスク
・トライアル期間は 2 週間
・猶予期間(GracePeriod)は 4 週間
・商品 ID は subscription_hoge
{
"packageName": "hoge",
"sku": "subscription_hoge",
"status": "active",
"purchaseType": "subscription",
"defaultPrice": {
"priceMicros": "999999",
"currency": "JPY"
},
"prices": {
"JP": {
"priceMicros": "999999",
"currency": "JPY"
},
"FM": {
"priceMicros": "999999",
"currency": "USD"
}
},
"listings": {
"ja-JP": {
"title": "fuga",
"description": "hogefuga"
}
},
"defaultLanguage": "ja-JP",
"subscriptionPeriod": "P1M",
"trialPeriod": "P2W",
"gracePeriod": "P4W2D",
"subscriptionTaxesAndComplianceSettings": {
"eeaWithdrawalRightType": "WITHDRAWAL_RIGHT_SERVICE"
}
}
では、定期購入アイテムを編集可能な状態にしてみましょう。
「定期購入を編集可能にする」リンクをクリックすると、念押しのダイアログが表示されます。
InAppProducts API が使用できなくなるのはわかるのですが、Subscription Publishing API って何を指しているのでしょうか。
こんな API 知らないです・・・。
どちらかと言うと、InAppProducts API の代わりに monetization.subscriptions を使うのではないかと思うのですよね。
以下のヘルプの「Subscription Publishing API」のリンク先は purchases.subscriptions の API のリファレンスになってるし謎です。
purchases.subscriptions の API は大半の人が使っているだろうし、purchases.subscriptionsv2 に移行しろという話なら別ですが。
Google のドキュメントによくあるミスですかね・・・。
(人のことは言えませんが)
定期購入商品を編集可能にしたらどうなるか
さて、定期購入商品を編集可能にしたら、本当に InAppProducts API が利用できなくなるのか試してみます。
先ほどと同じように定期購入商品の情報を参照してみましょう。
{
"error": {
"code": 400,
"message": "Non-existent in-app product: hoge/ProductId{productId=subscription_hoge}",
"status": "INVALID_ARGUMENT"
}
}
おぉ、本当に利用不可になっているようですね。
では、monetization.subscriptions の API で確認してみましょうか。
以下の通り、問題なく情報が取得できますね。
{
"packageName": "hoge",
"productId": "subscription_hoge",
"basePlans": [
{
"basePlanId": "p1m",
"regionalConfigs": [
{
"regionCode": "JP",
"newSubscriberAvailability": true,
"price": {
"currencyCode": "JPY",
"units": "999"
}
},
{
"regionCode": "FM",
"newSubscriberAvailability": true,
"price": {
"currencyCode": "USD",
"units": "8",
"nanos": 999999
}
}
],
"state": "ACTIVE",
"autoRenewingBasePlanType": {
"billingPeriodDuration": "P1M",
"gracePeriodDuration": "P30D",
"resubscribeState": "RESUBSCRIBE_STATE_ACTIVE",
"prorationMode": "SUBSCRIPTION_PRORATION_MODE_CHARGE_ON_NEXT_BILLING_DATE",
"legacyCompatible": true
},
"otherRegionsConfig": {
"usdPrice": {
"currencyCode": "USD",
"units": "7",
"nanos": 999999
},
"eurPrice": {
"currencyCode": "EUR",
"units": "7",
"nanos": 999999
},
"newSubscriberAvailability": true
}
}
],
"listings": [
{
"title": "fuga",
"languageCode": "ja-JP",
"description": "hogefuga"
}
],
"taxAndComplianceSettings": {
"eeaWithdrawalRightType": "WITHDRAWAL_RIGHT_SERVICE"
}
}
GracePeriod の表記が「P4W2D」から「P30D」に変わってる。
確かに 30 日に設定しているから、こちらの方がわかりやすいですね。
なお定期購入商品を編集可能な状態にしていなくても、既に monetization.subscriptions で情報取得できるようになっています。
まだ編集可能にしていない場合でも、ぜひ試してみてください。
まとめ
Google Play Billing Library 5.0.0 の登場に合わせて変更となった、定期購入商品について紹介してきました。
商品管理に API を利用している場合は、API の変更が必要になってきます。
サブスクリプションのサービスとして新機能をすぐに導入するかどうかプロダクト側の判断も重要ですが、開発コストも掛かることなので慎重に判断したいところですね。
今回は定期購入商品の管理についてまとめましたが、Billing Library の変更点はサブスクの管理がメインとなります。
次回はサブスクの状態取得 API の変更点もまとめていきます。