Google Play課金状態とサービス提供状態の状態遷移図

# はじめに
サブスクの流れに乗ってアプリ継続課金に取り組むとき、一番大事なのはサービスでしょうが、その次に大事なのは課金そのものです。
ユーザーにサービスを提供できていても、対価が正しく受け取れていなかったり、その逆に課金だけしてサービスを提供できないとなったら、大変なことです。

Google Playの定期購入システムは日本語ドキュメントが比較的多く、じっくり読めばどうにか理解できる一方、細かい変更点も多く、なかなかメンテナンスが大変です。
そこで、自分の理解のために状態遷移図を作りました。

※この図は、2020/11/1のGoogle Play仕様変更前に作成されたものです。

![](http://www.plantuml.com/plantuml/png/ZLPjRnf74Fw-lsAbV6XI2Raltv25uiB5Hd81dUksKX9PJg29LG8HfOegDrAuCpPWNDCcnY96JUpwfS5nuiOniGt5FsRPFVYKlv31oy6oTvoCaE1sPfvvvfdPlRt-It8saVprGHJ1dsG4ZyVZzwAHK7JsDoDNPUdbTkg3iLURHnOpllBe_Xoik37HjeY-JlGAtIwsZkeqlSET1SDYckXbefqJ_GXzXgUclvdoglxGT_vWO2OqhNedngOKNpU8lddEoY-wEEZcvxUno-MnXpAj0Yit_l8hekspSgPPsm7VMp6QAhE3BHIB0tOqybEomxToWPNfW6gxy8Uklctf_oFR99q4WwJwsQmskJhuJWGdVO8Wslv5pYD8spnvmaeQ9uYlF9oB_Snf9kCFGLPwdcw_pCY0oeyXlzeJopZMccUBoABfsBIze8CPxoOYimzuoiJSlVj9xA2D3PYni4bpfwXNsp7HwqH_IhHJjbfeDZQQ9mTulcjbnKEIMYUf1H50fgqg0UK7nVUxlEeDVgz0pLTRbNVjfJzfunKzEOGohfaYL4j6zJatof3UiO1NcPoK1AEDD4bjMbHJ_Lvb1eOnC0u_mS0Dl_gjuiFTo6PZaxsiq-qistXF2tcsi2h7-vGRYghs8xfqQrKeMFRr1sR6rJ585r9KVx0NOkIhpRCC-BUBJssREZFbdL1yqvCcJuXqxZ8lLUWrtmLEhSP818CHjsyUXa-NTVQKlSbnWUOlrlisaigrNkr2E3VBrWw10w9lTKP7-q3qlSxEq8uwZtfMSePvOyKIe1dF_krArFEG65yILugo9XZcEQmgQTtYwCOilmHOTEDljdP8CujyTllnZhmTMm4V6uMS8wo4dVmV8riRn8Wxq8rvPkCutqxzWP1eSzqCnvF9IFYsosEpdQnBWhy8CmYANJqtZztvP5qQ6c6-pFHE7xH3eh_cmXEzHlGd_DoMrkdYYb6gjVFla5IgBChhJMWwVnfq14_XK7BZrju_nli56Kqy6TpcqRBz7rjRHw99Jij_MQP0Sozao87pINoGrNPiZ4WUz1DzsV9VjB2B7YCqoD4C0dTndI_UYdsi3xmPUSy-rhDIeGulqqlXidAMuqhjS7cSpr8t7htZ6RqRZyOJxaGax6ajLOpIcUWtEd9XzOoEtF4WPp0iN21aZw6XqewJ2S58jelB8-8sl1GZbxEcjbd0BCxYG1u7C7C2-jFkxEnGhJZXOdhi2Dadm9wzPTcrviaAovwtAYkqaV_w2xQ-Wv3jXQOVHrUBh9f1I9p_8ISXzyYkaDG-g4RFThdsJg6Ird3bIUjN-OtmcbYbX66IuxFTILygqCmIqV8cKLSu_YZcyi3D6I7OcTSZiJ1S_Zy1)

「サービス提供中」の枠は、ユーザーにサービスを提供していい状態を示しています。
一方その外側は、サービスを提供してはいけない状態です。

## サービス提供中
表内|リアルタイムデベロッパー通知|詳細|参考URL
---|---|---|---
新しい定期購入|SUBSCRIPTION_PURCHASED |ユーザーの一回目の課金が発生した状態
継続課金|SUBSCRIPTION_RENEWED|定期購入が更新された状態
課金延期|SUBSCRIPTION_DEFERRED |次回課金が延期になった状態|https://developer.android.com/google/play/billing/subscriptions?hl=ja#defer
価格変更同意|SUBSCRIPTION_PRICE_CHANGE_CONFIRMED|アプリの価格変更をユーザーが承認した状態|https://developer.android.com/google/play/billing/subscriptions?hl=ja#price-change
猶予期間|SUBSCRIPTION_IN_GRACE_PERIOD |請求に失敗し、支払方法変更待ち|https://developer.android.com/google/play/billing/subscriptions?hl=ja#grace
終了待ち|SUBSCRIPTION_REVOKED|ユーザーが定期購入を停止したが、最後の課金は有効期限内
定期購入一時停止待ち|SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED |ユーザーが定期購入を一時停止したが、最後の課金は有効期間内|https://developer.android.com/google/play/billing/subscriptions?hl=ja#pause

## サービス提供外

表内|リアルタイムデベロッパー通知|詳細|参考URL
---|---|---|---
アプリ内ボタン||アプリ内から定期購入を購読する|
Google Play||解約後12カ月以内であれば「再度定期購入」できる|https://developer.android.com/google/play/billing/subscriptions#after-in-store



表内|リアルタイムデベロッパー通知|詳細|参考URL
---|---|---|---
定期購入一時停止|SUBSCRIPTION_PAUSED|ユーザーが定期購入を一時停止し、最後の課金も有効期間を過ぎた|https://developer.android.com/google/play/billing/subscriptions#pause
アカウント一時停止|SUBSCRIPTION_ON_HOLD |猶予期間過ぎても請求失敗 or 定期購入一時停止後、再開失敗|https://developer.android.com/google/play/billing/subscriptions#account-hold
定期購入無効|-|アップグレード・ダウングレード・再登録により、前の定期購入が無効になった|https://developer.android.com/google/play/billing/subscriptions#upgrade-downgrade
終了|SUBSCRIPTION_EXPIRED|定期購入が期限切れになった|https://developer.android.com/google/play/billing/subscriptions?hl=ja#cancel

# 参考URL
[定期購入を販売する](https://developer.android.com/google/play/billing/subscriptions)
[リアルタイム デベロッパー通知のリファレンス ガイド
](https://developer.android.com/google/play/billing/rtdn-reference?hl=ja)
[【Googleサブスク】購入レシートをステータス別にハンドリングする](https://itneko.com/google-subscription-receipt/)