リソース: ProductPurchase
ProductPurchase リソースは、ユーザーのアプリ内でのアイテム購入の状態を示します。
| JSON 表現 |
|---|
{ "kind": string, "purchaseTimeMillis": string, "purchaseState": integer, "consumptionState": integer, "developerPayload": string, "orderId": string, "purchaseType": integer, "acknowledgementState": integer, "purchaseToken": string, "productId": string, "quantity": integer, "obfuscatedExternalAccountId": string, "obfuscatedExternalProfileId": string, "regionCode": string, "refundableQuantity": integer } |
| フィールド | |
|---|---|
kind |
この kind は、androidpublisher サービスの inappPurchase オブジェクトを表します。 |
purchaseTimeMillis |
アイテムが購入された時刻を、エポック(1970 年 1 月 1 日)からのミリ秒で示します。 |
purchaseState |
オーダーの購入状態。値は次のいずれかです。0. 購入済み 1. キャンセル済み 2. 保留 |
consumptionState |
アプリ内アイテムの消費状態。値は次のいずれかです。0. 未消費 1. 消費しました |
developerPayload |
注文に関する補足情報が含まれる文字列。デベロッパーが指定します。 |
orderId |
アプリ内アイテムの購入に関連付けられているオーダー ID。 |
purchaseType |
アプリ内アイテムの購入の種類。このフィールドは、標準のアプリ内課金フローを使用して処理された購入ではない場合にのみ設定します。値は次のいずれかです。0. テスト(ライセンス テスト用アカウントでの購入)1. プロモーション(プロモーション コードを使用した購入)。Play ポイントによる購入は含まれません。2. リワード(支払いではなく、動画広告の視聴によるもの) |
acknowledgementState |
アプリ内アイテムの承認状態。値は次のいずれかです。0. 未承認、1. 確認済み |
purchaseToken |
この購入を識別するために生成された購入トークン。存在しない場合があります。 |
productId |
アプリ内アイテムの SKU。存在しない場合があります。 |
quantity |
アプリ内アイテムの購入に関連付けられている数量。存在しない場合、数量は 1 です。 |
obfuscatedExternalAccountId |
アプリのユーザー アカウントに一意に関連付けられている難読化されたバージョンの ID。購入時に https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedaccountid を使用して指定された場合にのみ存在します。 |
obfuscatedExternalProfileId |
アプリのユーザー プロファイルに一意に関連付けられている難読化されたバージョンの ID。購入時に https://developer.android.com/reference/com/android/billingclient/api/BillingFlowParams.Builder#setobfuscatedprofileid を使用して指定された場合にのみ存在します。 |
regionCode |
アイテムが承認された時点でのユーザーの請求先住所の地域コード(ISO 3166-1 alpha-2 形式)。 |
refundableQuantity |
払い戻しの対象となる数量(払い戻しが行われていない数量)。値には、数量ベースの一部払い戻しと全額払い戻しが反映されます。 |
メソッド |
|
|---|---|
|
アプリ内アイテムの購入を承認します。 |
|
アプリ内アイテムの購入を消費します。 |
|
アプリ内アイテムの購入と消費のステータスを確認します。 |
エラーコード
このリソースのオペレーションは、次の HTTP エラーコードを返します。
| エラーコード | 理由 | 説明 | 解決策 |
|---|---|---|---|
400 |
invalidPurchaseState |
購入が、リクエストされたオペレーションを実行できる有効な状態ではありません。たとえば、すでに使用済みの購入を承認しようとしている場合や、有効でない定期購入をキャンセルしようとしている場合などです。 | オペレーションを試行する前に、対応する Get API を使用してリソースの現在の状態を確認します。リソースがアクションに適した状態であることを確認します。 |
400 |
invalidValue |
リクエストで無効な値が指定されました。多くの場合、これは形式が正しくないか無効な購入トークンに対して返されます。 | API リファレンスに基づいて、リクエスト本文またはパラメータの無効なフィールド値を修正します。 |
400 |
productNotOwnedByUser |
提供された購入トークンは有効ですが、ユーザーは現在このアイテムを所有していません。これは、購入が払い戻し、取り消し、または期限切れになった後に確認が行われた場合に発生することがあります。 | オペレーションを試行する前に、対応する Get API を使用してリソースの現在の状態を確認します。リソースがアクションに適した状態であることを確認します。 |
400 |
purchaseTokenMismatch |
指定された購入トークンが、購入、パッケージ名、定期購入 ID、商品 ID と一致しません。 | リクエスト内のすべての詳細情報が正しく、相互に対応していることを確認します。 |
400 |
required |
リクエストに必須のフィールドまたはパラメータがありません。 | API のドキュメントを参照して、すべての必須フィールドとパラメータが含まれていることを確認します。 |
400 |
unsupportedIabType |
指定されたアプリ内課金タイプでは、このオペレーションはサポートされていません。 | API メソッドが管理対象のアイテムタイプと互換性があることを確認します。 |
403 |
userInsufficientPermission |
リクエストされたオペレーションを実行する権限がユーザーにありません。 | 認証済みユーザーが Google Play Console で必要な権限を持っていることを確認します。詳細については、 サービス アカウントの使用をご覧ください。 |
404 |
notFound |
リクエストされたリソースが見つかりませんでした。 | ID(購入トークン、パッケージ名、商品 ID、定期購入 ID など)が正しいことを確認します。 |
409 |
concurrentUpdate |
同時に更新されているオブジェクトを更新しようとしました。 | 指数バックオフを使用してリクエストを再試行します。同じリソースへの同時変更は避けてください。 |
5xx |
Generic error |
Google Play サーバーの一般的なエラー。 | リクエストを再試行してください。 問題が解決しない場合は、Google Play アカウント マネージャーにお問い合わせいただくか、サポート リクエストを送信してください。Google Play ステータス ダッシュボードで既知のサービス停止がないか確認してください。 |