質問: ※サーバーサイドの話になります。 このAPIでサーバーサイドでサブスクリプションの検証を行っています。 `https://www.googleapis.com/androidpublisher/v3/applications/` このAPIで`purchaseState`という値が返ってくるのですがこの値の示す意味がわかりません。 ドキュメントを読んでも一言しか書いておらず、検索しても情報が見つかりませんでした。 Googleのドキュメントでは↓のように説明されています。 ``` purchaseState integer The purchase state of the order. Possible values are: - 0 Purchased - 1 Canceled - 2 Pending ``` 私の疑問点は以下のとおりです。 間違っている点はありますか? ***0[Purchased]*** このステータスが返るとき、有効期限である`expiryTimeMillis`に従って 有効期限なら有償サービスを提供すべきと思っています。 ***1[Canceled]*** このステータスは払い戻しを行ったときに返されると勝手に思っています。 ユーザーによる月額課金更新のキャンセルのことではなく。 そして私はこのステータスが返されるとき、自動的に`expiryTimeMillis`が過去の日付になるのではないかと思っています。 このステータスが返るとき、有償サービスの提供を取りやめるべきと思っています。 ***2[Pending]*** これは保護者などによる購入の保留状態のことでしょうか? このステータスが返るとき、有償サービスの提供を行わないのが正しいと思っています。
回答: こんにちは、サブスクリプションに関するご質問のようなので、 **Purchases.Subscriptions** の値についてということでよろしいでしょうか? ご質問いただいているパラメーターは **Purchases.Products** のもののようです。 これはIABによる通常のアイテムの購入に関するレシートを取得するものでサブスクリプションに適用はできません。**Purchases.Subscriptions** の値をとるときは以下のAPIを利用します。 この点一旦ご確認いただき、手順も含めご説明願えれば回答しやすいかと思います。 **Purchases.Products** に関する説明となりますが、 **2=Pending** は購入が、決済などなんらかの利用で一時保留されていることを表します。たとえばクレジットカードの審査に時間がかかっているとか。銀行振込での決済を行っていて、振込確認を待っているなどの状態です。決済形式(国や地域によって異なります)によっては一週間程度かかるケースもあるようです。