エクソラソリューションに基づいてインベントリにアイテムを追加する

エクソラは、ゲーム内ストア製品(プレイヤーインベントリ)をベースに、プレイヤーのインベントリを実装するためのソリューションを提供します。このソリューションにより、すべての購入品とユーザーのプレミアムリワードをプラットフォーム間で同期することができます。

サードパーティの決済UI(Google Playアプリ内購入など)を使って購入したアイテムを、プレーヤーのインベントリに追加することができます。

Grant items to users APIのサーバークエリが呼び出されると、アイテムがインベントリに追加されます。アプリケーションのバックエンドにFirebaseを使用している場合は、既製のクラウド機能を使用します:

  1. Firebaseプロジェクトにクラウド機能を追加します
  2. この機能を呼び出すためのロジックを実装します

Firebaseプロジェクトにクラウド機能を追加する

  1. Firebaseプロジェクトを初期化します
  2. 以下のところでインベントリにアイテムを追加する機能をインポートして設定します:
    • <MerchantID>マーチャントIDプロジェクト設定> ウェブフックセクションでのパブリッシャーアカウントで見つかります。
    • <ProjectID>プロジェクトIDプロジェクト設定> プロジェクトIDセクションでのパブリッシャーアカウントで見つかります。
    • <ApiKey>APIキー会社設定 > API キーセクションでのパブリッシャーアカウントで見つかります。

インベントリにアイテムを追加するための機能コード:

Copy
Full screen
Small screen
const merchantId = "<MerchantID>";
const projectId = "<ProjectID>";
const apiKey = "<ApiKey>";

exports.redeem = functions.https.onRequest((request, response) => {
  const sku = request.body.sku;
  const quantity = request.body.quantity;
  const userId = request.body.user_id;

  const authHeader = Buffer.from(`${merchantId}:${apiKey}`).toString("base64");

  const postData = JSON.stringify(
      [{
        "comment": "Purchased by Google Pay",
        "platform": "xsolla",
        "user": {
          "id": userId,
        },
        "items": [{
          "sku": sku,
          "quantity": quantity,
        }],
      }]
  );

  const options = {
    hostname: "store.xsolla.com",
    port: 443,
    path: `/api/v2/project/${projectId}/inventory/reward`,
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "Content-Length": postData.length,
      "Authorization": `Basic ${authHeader}`,
    },
  };

  const req = https.request(options, (res) => {
    if (res.statusCode == 200) {
      response.status(200).send();
      return;
    }
    if (res.statusCode == 404) {
      response.status(404).send();
      return;
    }
    if (res.statusCode == 401) {
      response.status(401).send();
      return;
    }
    response.status(400).send();

    res.on("data", (d) => {
      process.stdout.write(d);
    });
  });
  req.on("error", (e) => {
    response.status(500).send(e.message);
  });

  req.write(postData);
  req.end();
});

  1. この例のように、機能を実際の使用環境に展開します。

アプリケーションから機能を呼び出す

インベントリにアイテムを追加するには、アプリケーションから機能を呼び出すロジックを追加し、機能名にredeemを指定して、skuquantityuser_idのパラメータを渡します。

一部の課金インターフェース(Google Playのアプリ内購入など)では、アイテムをインベントリに追加するためのロジックをクライアント側で開始する必要があります。このような場合は、redeem機能を呼び出すクライアントサイドのメソッドを実装します。

Android向けの実装例として、Google Playのアプリ内購入からの購入をインベントリに追加することができるxsolla-googleplay-sdkモジュールを使用できます。

この例をプロジェクトに適用するには:

  1. Android Studioを起動します。
  2. xsolla-googleplay-sdkモジュールをあなたのプロジェクトに追加します。
  3. ライブラリを初期化します。そのためには、Androidプロジェクトのソースコードに以下の行を追加してください。<your-deployment-host>は、クラウド機能のURLのホスト(例:https://us-central1-xsolla-sdk-demo.cloudfunctions.net):

Copy
Full screen
Small screen
InventoryAdmin.init("<your-deployment-host>")

クラウド機能のURLは、本番環境で機能を実行した後、Firebaseのコマンドラインに表示されます。また、機能のURLはFunctions > DashboardセクションにあるFirebaseコンソールに表示されます。

  1. アプリケーションロジックに応じてInventoryAdmin.grantItemToUser (sku, userId, quantity, callback)メソッドのコールを実装します。コールバックは、インベントリにアイテムが追加された成功のデータを返します。

この記事は役に立ちましたか?
ありがとうございます!
改善できることはありますか? メッセージ
申し訳ありません
この記事が参考にならなかった理由を説明してください。 メッセージ
ご意見ありがとうございました!
あなたのメッセージを確認し、体験を向上させるために利用させていただきます。
このページを評価する
このページを評価する
改善できることはありますか?

答えたくない

ご意見ありがとうございました!
最終更新日: 2021年10月18日

誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。

問題を報告する
当社は常にコンテンツを見直しています。お客様のご意見は改善に役立ちます。
フォローアップ用のメールをご提供してください
ご意見ありがとうございました!