コンテンツにスキップ

IAP v4 購入の確定

商品消費処理APIは、消耗性商品の購入件を消費処理するAPIです。

Google Play

Google Play消耗性商品消費APIは、Google Playで決済した消耗性商品の購入件を消費処理するAPIで、Google Play Developer APIのconsume機能を代行します。Google Playは、アプリ内決済後一定期間(例:3日)以内に消費処理が完了しない場合、決済件を自動的に返金します。そのため、アプリサーバーはユーザーへのアイテム付与を完了した後、直ちにこのAPIを呼び出して消費処理を行う必要があります。

Googleマーケットアカウント設定の事前案内

Google Play消耗性商品消費APIを使用するには、Google Market Accountの設定が完了している必要があります。

重複呼び出しに注意

本APIは、レシート1件につき1回だけ呼び出す必要があります。すでに消費処理が完了したレシートで再呼び出しした場合、resultレスポンスコードとして1000535(Market API response was answered as failed.)が返されます。

Request URL

項目 内容
本番URL https://hiveiap.qpyou.cn/v2/external/api/finalize_purchase
Sandbox URL https://sandbox-hiveiap.qpyou.cn/v2/external/api/finalize_purchase
HTTP Method POST
HTTP Header アプリサーバー認証用の OAuth 2.0 Access Token
(OAuth Token 発行を参照)
Data Format JSON

Request body

フィールド名 タイプ 必須 説明
purchase_bypass_info String Y Hive SDKから抽出した購入ユーザー、端末、およびレシート情報です。

IAP v4アプリ内購入時、Hive SDK v4 IAPV4クラスのPurchase()またはRestore()メソッドのコールバックで受け取ったIAPV4ReceiptオブジェクトのbypassInfo(Base64でエンコードされたJSON文字列)を、「Hive SDK v4 → アプリクライアント → アプリサーバー → IAP v4 Google消耗性商品消費APIサーバー」の順に渡します。

※ この値は原本のまま使用する必要があり、アプリクライアントやアプリサーバーで直接パースまたは変更してはいけません。

Response body

フィールド名 タイプ 必須 説明
result Integer Y レスポンスコード(0:成功、その他:失敗。詳細コードは下記のResult codesを参照)
result_msg String Y レスポンスメッセージ
finalize_result Array N 消費処理結果の一覧です。(参考用情報であり、アプリサーバーのアイテム付与成功/失敗判定ロジックに使用してはいけません。)
└ market_transaction_id String N 消費処理を試行したマーケットトランザクション(注文)ID
└ result_code Integer N Google Play Developer APIから返された消費処理結果コード
└ result_message String N Google Play Developer APIから返された消費処理結果メッセージ

Result codes

Code Message 説明
0 Success 消費処理成功
1000006 The required parameter info is missing. 必須パラメーターが不足している場合
1000504 The Google public key hasn't been registered. Googleサービスアカウントキー情報が登録されていない場合
1000520 Failed to authenticate the API Key. App Centerで発行されたBearerトークンの認証失敗
1000535 Market API response was answered as failed. Google Play Developer APIのレスポンス結果が失敗の場合
(※ finalize_result配下のresult_codeおよびresult_messageで詳細理由を確認可能)

Request example

curl -L -v \
-d '{"purchase_bypass_info":"eyJ1aWQiOiIiLCJhbmFseXRpY3NfaWQiOiJqbXRsZkcwb1FZQzdlM3dVVDQ2cHJ3PT0i...(省略)..."}' \
-H "Content-Type: application/json" \
-H "X-Access-Token: eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImEwYWZlYjZlLTllYWItY2ZiMC03ZTMxLTNhNzMyZTQ5In0.eyJwcm9qZWN0X2lkIjoiY29tLmNvbTJ1cy5oaXZlc2RrIiwidG9rZW5fdHlwZSI6ImFjY2Vzc190b2tlbiIsImdyYW50X3R5cGUiOiJ1c2VyIiwiaWF0IjoxNzg5NDA2NzI5LCJleHAiOjE3ODk0MTAzMjksImF1dGhfdmVyIjoidjQiLCJ1c2VyX2lkIjoyMDAwMDAzMTM0MSwiaXNfd2hpdGVsaXN0IjpmYWxzZX0.MgPO-e-Gm_dErRcfjVPKFdrh9M1ywqpU5aBmrFDZihzA5kKCw_QjPZv-Sb94LmbrzIqYuGQu29tIbX9DhJg_SpschZ4dihLx75pt5fSqYkzXMNHsbDjP-A7Yn0yjqP8f9w0DD0B_20Vbw6WfUUImNLQK0UpKu9Pd6cOILImDOn9YSkc1ozuzGQ04jgihwSxtP8cRTNGn53aB89CbSzYZbUqdUtyCOY9q1BXeIlrq_4zd_YWoPPQjPd3uD3wt3cVNg4nfNfQ55PDXPTn-QCm_HsfnL12wrNFnD-UW9SlCvM6TouoErNFrLaQ3sYvgsek-n47-bylvzTGa7GAvakwuog" \
[https://sandbox-hiveiap.qpyou.cn/v2/external/api/finalize_purchase](https://sandbox-hiveiap.qpyou.cn/v2/external/api/finalize_purchase)

Response example

{
  "result": 1000535,
  "result_msg": "Market API response was answered as failed.",
  "finalize_result": [
    {
      "market_transaction_id": "GPA.3373-7176-8955-08026",
      "result_code": 400,
      "result_message": "The product purchase is not owned by the user."
    }
  ]
}