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)