このドキュメントでは、サーバサイド 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-purchaseToken'
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