ノーコード決済 - サーバサイド IAP検証

このドキュメントでは、サーバサイド IAP 検証の構成手順について説明します。

now.ggノーコード決済では、購入の真正性を確認するためにサーバサイドの検証機能を実装しています。検証に成功すると、ゲーム内で購入した商品をユーザに割り当てたり、購入した商品を消費済みとして処理することができます。

アプリにノーコード決済を実装する方法:

  • このガイドに従って、nowStudioで ‘ノーコード決済’ を選択します。
  • 以下の手順で、‘ノーコード決済’のサーバ側設定を行います。

ワークフロー

以下はnow.ggノーコード決済に関連するワークフローです。:

  • ユーザーは購入するアプリ内製品を選択します。
  • now.gg決済が呼び出されます。
  • 決済が正常に処理されると、ゲーム内で購入トークンを取得します。
  • ゲームからゲームサーバに購入トークンが送信され、確認されます。
  • ゲームサーバは購入トークンをnow.ggサーバに確認します。
  • 確認に成功すると、ゲームは購入したアプリ内商品をユーザに割り当てます。

サーバサイド設定の実装

このセクションでは’ノーコード決済’のサーバサイド設定を実装する手順を説明します。
Contents

1. 購入検証

この手順を使用してnow.ggノーコード決済を使用したアプリ内課金を確認できます。

重要な情報

  • すでに他のプロバイダで購入を確認している場合は、すでに使用している同じURLハンドラでpurchase_tokenを受け取ります。
  • now.gg 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

nowgg確認コードのサンプル

以下のサンプルコードはverifyPurchase APIを使用した関連リクエストの例です。.

import requests

  url = "https://cloud-api.bluestacks.cn/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 – URLハンドラから受け取ったpurchaseTokenを使用します。
  • API KeyPayment API Key はnowStudioのクレデンシャルセクションで確認することができます。 詳細はこちら

期待されるレスポンス

以下はverifyPurchase APIからのレスポンスのサンプルです。

{
    "success": true,
    "code": 0,
    "reason": "success",
    "data": {
      "purchaseTimeMillis": "1630529397125",
      "purchaseState": 0,
      "consumptionState": 0,
      "developerPayload": "<developer_payload>",
      "orderId": "<orderId_here>",
      "kind": "nowgg#productPurchase",
      "regionCode": "JP"
    }
  }

レスポンスパラメータ

パラメータ 説明
success boolean 処理結果をtrueまたはfalseで返します。
code int 成功した場合は 0、失敗した場合は 0 以外のコードを返します。
reason string エラーコードに関連するメッセージを返します。 (ここを参照)
purchaseTimeMillis string (int 64) 商品が購入された時間(ミリ秒単位のエポック時間)です。
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)


2. 消費購入

購入を確認したら消費済みとして処理してください。

消費購入には以下が含まれます。:

  • 購入した製品をユーザに割り当てます。
  • 商品が消費されたことをnow.ggに通知します。

消費購入コードのサンプル

以下のサンプルコードはconsumePurchase API を使用した関連リクエストの例です。

import requests

  url = "https://cloud-api.bluestacks.cn/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 – URLハンドラから受け取ったpurchaseTokenを使用します。
  • API KeyPayment API Key はnowStudioのクレデンシャルセクションで確認することができます。 詳細はこちら

期待されるレスポンス

以下はconsumePurchase APIからのレスポンスのサンプルです。

 }  
   "success": true,
   "code": 0,
   "reason": "success",
   "data": {}
 }

レスポンスパラメータ

パラメータ 説明
success boolean 処理結果をtrueまたはfalseで返します。
code int 成功した場合は 0、失敗した場合は 0 以外のコードを返します。
reason string エラーコードに関連するメッセージを返します。 (ここを参照)
data object デコードされたデータがレスポンスとして返されます。

エラーコードマッピング

エラーコード メッセージ 説明
3800 ERROR_CONSUMING_PRODUCT 製品の消費処理中にエラーが発生しました。
3900 INVALID_AUTHORIZATION_KEY 認証のために渡されたAPI Keyが無効です。
3901 INVALID_PURCHASE_TOKEN 渡された購入トークンが無効です。

シーケンス図

×
テキストがクリップボードにコピーされました。
copyLinkText
ご不明な点がございましたら、お気軽にお問い合わせください。 dev-support@now.gg