68880
※サーバーサイドの話になります。  
この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]**_  
これは保護者などによる購入の保留状態のことでしょうか？  
このステータスが返るとき、有償サービスの提供を行わないのが正しいと思っています。
CC BY-SA 4.0
2020-06-29T15:18:30.900
68117
2020-07-24T05:39:28.700
2020-06-29T15:26:01.180
10346
10346
question
android
Android　サーバーでのレシート検証について
こんにちは、サブスクリプションに関するご質問のようなので、

**Purchases.Subscriptions** の値についてということでよろしいでしょうか?

<https://developers.google.com/android-publisher/api-
ref/purchases/subscriptions#resource-representations>

ご質問いただいているパラメーターは **Purchases.Products** のもののようです。

<https://developers.google.com/android-publisher/api-ref/purchases/products>

これはIABによる通常のアイテムの購入に関するレシートを取得するものでサブスクリプションに適用はできません。
**Purchases.Subscriptions** の値をとるときは以下のAPIを利用します。

<https://developers.google.com/android-publisher/api-
ref/purchases/subscriptions/get>

この点一旦ご確認いただき、手順も含めご説明願えれば回答しやすいかと思います。

**Purchases.Products** に関する説明となりますが、

**2=Pending**
は購入が、決済などなんらかの利用で一時保留されていることを表します。たとえばクレジットカードの審査に時間がかかっているとか。銀行振込での決済を行っていて、振込確認を待っているなどの状態です。決済形式(国や地域によって異なります)によっては一週間程度かかるケースもあるようです。
CC BY-SA 4.0
2020-07-24T05:26:31.530
68880
2020-07-24T05:39:28.700
2020-07-24T05:39:28.700
37777
37777
68117
answer