技術系TIPS
PR

【Google】BillingLibrary5で大きく変わるサブスクの定期購入アイテム

saratogax
記事内に商品プロモーションを含む場合があります

2022 年 5 月に Google Play Billing Library のバージョン 5 が登場しました。

個人的には、2021 年の Google I/O で発表された新機能がどうなったのかずっと疑問だったのですよね。

Billing Library バージョン 4 で対応されると思っていたのですが、大きな変更は消費型アイテムの複数購入のみでした。

今回はサブスク周りに大きな変更が入る、Billing Library バージョン 5 の定期購入アイテム管理について紹介します。

Android のアプリ内課金については、以下も参考にしてください。

あわせて読みたい
【Google】purchases.subscriptionsv2のAPIとv1の互換性
【Google】purchases.subscriptionsv2のAPIとv1の互換性
あわせて読みたい
【Google】アプリ内課金の導入と運用方法
【Google】アプリ内課金の導入と運用方法

定期購入商品の構成が変更

2022 年の 5 月に、サブスクの定期購入商品の構成が強制的に変更になっています。

2023 年 5 月に「Google Play Billing Library 4 または 5 から 6 への移行ガイド」にページが変更になっています。2022 年 5 月の時の詳細な内容は、「Google Play Console での定期購入に関する最近の変更」で紹介されています。

Google Play Console で定期購入の画面に行くとわかりますが、注目すべきところはこんなところでしょうか。

・基本プラン(base plan)
・プリペイドプラン
・特典(offer)
・商品管理 API の変更

プランについては、冒頭でも書いた通り 2021 年の Google I/O で発表されていたので驚きはありません。

マルチなプランってどんな感じになるのかなって思っていたのですが、強制的に商品構成を変更してくるとは・・・。

定期購入アイテムを編集可能にする場合の注意点

既存の定期購入アイテムを編集しようとすると、以下の警告が表示されます。

以前の定期購入から移行された定期購入で、読み取り専用です。

この定期購入を編集可能にすることができます。InAppProducts API からはこの定期購入を設定、更新できなくなります。

コンソール画面で編集することはできるけど、InAppProducts API で参照や更新ができなくなるよってことを伝えているようです。

【Google】BillingLibrary5で大きく変わるサブスクの定期購入アイテム

実際に、この時点では 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 に移行済みであることをご確認ください。

InAppProducts API が使用できなくなるのはわかるのですが、Subscription Publishing API って何を指しているのでしょうか。

こんな API 知らないです・・・。

【Google】BillingLibrary5で大きく変わるサブスクの定期購入アイテム

どちらかと言うと、InAppProducts API の代わりに monetization.subscriptions を使うのではないかと思うのですよね。

以下のヘルプの「Subscription Publishing API」のリンク先は purchases.subscriptions の API のリファレンスになってるし謎です。

【Google】BillingLibrary5で大きく変わるサブスクの定期購入アイテム

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 の変更点もまとめていきます。

あわせて読みたい
【Google】purchases.subscriptionsv2のAPIとv1の互換性
【Google】purchases.subscriptionsv2のAPIとv1の互換性
ABOUT ME
saratoga
saratoga
フリーランスエンジニア
仕事にも趣味にも IT を駆使するフリーランスエンジニア。技術的な TIPS や日々の生活の中で深堀りしてみたくなったことを備忘録として残していきます。
記事URLをコピーしました