このドキュメントでは、サーバサイド IAP 検証の構成手順について説明します。
now.ggノーコード決済では、購入の真正性を確認するためにサーバサイドの検証機能を実装しています。検証に成功すると、ゲーム内で購入した商品をユーザに割り当てたり、購入した商品を消費済みとして処理することができます。
アプリにノーコード決済を実装する方法:
以下はnow.ggノーコード決済に関連するワークフローです。:
この手順を使用してnow.ggノーコード決済を使用したアプリ内課金を確認できます。
purchase_token
を受け取ります。purchase_token
は‘-nowgg-
’で始まります。これを使って、now.ggからのアプリ内課金を識別することができます。以下はアプリ内課金を確認する実装のサンプルです。:
def verify_purchase(package_name, product_id, purchase_token): # game-specific validation code if purchase_token.startswith("-nowgg-"): response = verify_purchase_with_nowgg( package_name, product_id, purchase_token) else: # continue verification with other providers # game-specific response handling code
以下のサンプルコードはverifyPurchase
APIを使用した関連リクエストの例です。.
import requests url = "https://payments-api.now.gg/v2/seller/order/verifyPurchase" payload = 'purchaseToken=<nowgg_purchase_token>' headers = { 'Authorization': '<payment_api_key_here>', 'Content-Type': 'application/x-www-form-urlencoded' } response = requests.request("POST", url, headers=headers, data=payload) print(response.text)
purchaseToken
を使用します。Payments API Key
はnowStudioのクレデンシャルセクションで確認することができます。 詳細はこちら以下はverifyPurchase
APIからのレスポンスのサンプルです。
{ "success": true, "code": 0, "codeMsg": "success", "data": { "purchaseTimeMillis": "1630529397125", // このフィールドは廃止されました。代わりに "purchaseTime": "1630529397125", "purchaseState": 0, "consumptionState": 0, "developerPayload": "<developer_payload>", "orderId": "<orderId_here>", "kind": "nowgg#productPurchase", "regionCode": "US", "currency": "USD", "packageName": "<package_name>", "payStatusTxt": "Paid", "orderAmount": "25.15", "isTestOrder": false, "payTimeTxt": "2024 - 10 - 3006: 08: 01", "sellerGoodsId": "11223343" } }
パラメータ | タイプ | 説明 |
---|---|---|
success | boolean | 成功の場合はtrue、失敗の場合はfalseを返します。 |
code | int | 成功の場合は0、失敗の場合は0以外を返します。 |
codeMsg | string | エラーコードに関連するメッセージを返します。 (こちらで提供) |
purchaseTimeMillis (廃止) | string | エポック時間からのミリ秒単位で、製品が購入された時間を返します。このフィールドは廃止されました。代わりに purchaseTime を使用してください。 |
purchaseTime | string | 製品が購入された時間(エポックからの秒数)。 |
purchaseState | int | 注文の購入状態を返します。可能な値は次の通りです: 0: 未払い, 1: 支払済み, 2: 失敗 |
consumptionState | int | アプリ内製品の消費状態を返します。可能な値は次の通りです: 0: 未消費, 1: 消費済み |
developerPayload | string | 注文に関する補足情報を含む開発者指定の文字列です。 |
orderId | string | 各アプリ内購入製品に関連付けられている注文ID(ユニークな取引識別子)です。 |
kind | string | ハードコーディングされたnowgg#productPurchase というタイプで購入されたアプリ内製品の種類です。 |
regionCode | string | 製品が付与された時点でのユーザーのISO 3166-1 alpha-2請求地域コードです。 |
currency | string | 購入の通貨。例:USD、INRなど |
packageName | string | アプリに関連付けられたpackageName |
payStatusTxt | string | 決済状況(「決済済み」または「未決済」) |
orderAmount | string | 自身の購入のorderAmount |
isTestOrder | boolean | テスト中にオーダーが生成された場合、結果をtrueまたはfalseで返します。 |
payTimeTxt | string | 購入に関連付けられた決済日時 |
sellerGoodsId | string | 購入したプロダクトに関連付けられているプロダクトID |
購入を確認したら消費済みとして処理してください。
消費購入には以下が含まれます。:
以下のサンプルコードはconsumePurchase
API を使用した関連リクエストの例です。
import requests url = "https://payments-api.now.ggn/v2/order/consumePurchase" payload = 'purchaseToken=nowgg-_purchase_token' headers = { 'Authorization': 'payment_api_key_here', 'Content-Type': 'application/x-www-form-urlencoded' } response = requests.request("POST", url, headers=headers, data=payload) print(response.text)
purchaseToken
を使用します。Payments API Key
はnowStudioのクレデンシャルセクションで確認することができます。 詳細はこちら以下はconsumePurchase
APIからのレスポンスのサンプルです。
} "success": true, "code": 0, "codeMsg": "success", "data": {} }
パラメータ | 型 | 説明 |
---|---|---|
success | boolean | 処理結果をtrueまたはfalseで返します。 |
code | int | 成功した場合は 0、失敗した場合は 0 以外のコードを返します。 |
codeMsg | string | エラーコードに関連するメッセージを返します。 (ここを参照) |
data | object | デコードされたデータがレスポンスとして返されます。 |
エラーコード | メッセージ | 説明 |
---|---|---|
3800 | ERROR_CONSUMING_PRODUCT | 製品の消費処理中にエラーが発生しました。 |
3900 | INVALID_AUTHORIZATION_KEY | 認証のために渡されたAPI Keyが無効です。 |
3901 | INVALID_PURCHASE_TOKEN | 渡された購入トークンが無効です。 |
目次
目次
ドキュメント改訂版 1.0