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

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

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

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

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

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

  1. Firebaseプロジェクトを初期化します
  2. インベントリにアイテムを追加する機能をインポートし、構成します:

    • <MerchantID> — 以下の場所でアドミンページマーチャントIDを見つかります:
      • 会社設定 > 会社セクション。
      • アドミンページの任意のページで、ブラウザのアドレスバーにあるURL。URLは以下の形式があります:https:​//publisher.xsolla.com/<merchant ID>/<Publisher Account section>

    • <ProjectID> — 以下の場所でアドミンページプロジェクトIDを見つかります:
      • プロジェクト名の横。
      • プロジェクト設定 > プロジェクトIDセクション。

    • <ApiKey> — 以下の場所でアドミンページAPIキーを見つかります:会社設定 > APIキーまたはプロジェクト設定 > APIキーセクション。
注意

APIキーの操作については、APIリファレンスを参照してください。

キーに関する推奨事項:

  • 生成されたAPIキーは、お客様側で保存してください。APIキーは、アドミンページで作成時に一度だけ表示することができます。
  • APIキーは秘密にしておいてください。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)メソッドのコールを実装します。コールバックは、インベントリにアイテムが追加された成功のデータを返します。
この記事は役に立ちましたか?
ありがとうございます!
改善できることはありますか? メッセージ
申し訳ありません
この記事が参考にならなかった理由を説明してください。 メッセージ
ご意見ありがとうございました!
あなたのメッセージを確認し、体験を向上させるために利用させていただきます。
このページを評価する
このページを評価する
改善できることはありますか?

答えたくない

ご意見ありがとうございました!
最終更新日: 2024年1月22日

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

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