エクソーラソリューションに基づいてインベントリにアイテムを追加する
エクソーラは、インゲームストア製品(プレイヤーインベントリ)をベースに、プレイヤーのインベントリを実装するためのソリューションを提供します。このソリューションにより、すべての購入品とユーザーのプレミアムリワードをプラットフォーム間で同期することができます。
サードパーティの決済UI(Google Playアプリ内購入など)を使って購入したアイテムを、プレーヤーのインベントリに追加することができます。
アイテムをユーザーに付与する APIのサーバークエリが呼び出されると、アイテムがインベントリに追加されます。アプリケーションのバックエンドにFirebaseを使用している場合は、既製のクラウド機能を使用します:
Firebaseプロジェクトにクラウド機能を追加する
- Firebaseプロジェクトを初期化します。
- インベントリにアイテムを追加する機能をインポートし、構成します:
<MerchantID>
— 以下の場所でアドミンページでマーチャントIDを見つかります:- プロジェクト設定 > ウェブフックセクション。
- 会社設定 > 会社セクション。
- アドミンページの任意のページで、ブラウザのアドレスバーにあるURL。URLは以下の形式があります:
https://publisher.xsolla.com/マーチャントID/アドミンページセクション
。
<ProjectID>
— 以下の場所でアドミンページでプロジェクトIDを見つかります:- プロジェクト名の横。
- プロジェクト設定 > プロジェクトIDセクション。
<ApiKey>
— 以下の場所でアドミンページでAPIキーを見つかります:会社設定 > APIキーまたはプロジェクト設定 > APIキーセクション。
APIキーの操作については、APIリファレンスを参照してください。
キーに関する推奨事項:
- 生成されたAPIキーは、お客様側で保存してください。APIキーは、アドミンページで作成時に一度だけ表示することができます。
- APIキーは秘密にしておいてください。APIキーは、お客様の個人アカウントとアドミンページのプロジェクトへのアクセスを提供します。
- APIキーはサーバーに保存する必要があり、決してバイナリやフロントエンドに保存してはいけません。
インベントリにアイテムを追加するための機能コード:
- js
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();
});
- この例のように、機能を実際の使用環境に展開します。
アプリケーションから機能を呼び出す
インベントリにアイテムを追加するには、アプリケーションから機能を呼び出すロジックを追加し、機能名にredeem
を指定して、sku
、quantity
、user_id
のパラメータを渡します。
一部の課金インターフェース(Google Playのアプリ内購入など)では、アイテムをインベントリに追加するためのロジックをクライアント側で開始する必要があります。このような場合は、redeem
機能を呼び出すクライアントサイドのメソッドを実装します。
Android向けの実装例として、Google Playのアプリ内購入からの購入をインベントリに追加することができるxsolla-googleplay-sdkモジュールを使用できます。
この例をプロジェクトに適用するには:
- Android Studioを起動します。
- xsolla-googleplay-sdkモジュールをあなたのプロジェクトに追加します。
- ライブラリを初期化します。そのためには、Androidプロジェクトのソースコードに以下の行を追加してください。
<your-deployment-host>
は、クラウド機能のURLのホスト(例:https://us-central1-xsolla-sdk-demo.cloudfunctions.net
):
- kotlin
InventoryAdmin.init("<your-deployment-host>")
クラウド機能のURLは、本番環境で機能を実行した後、Firebaseのコマンドラインに表示されます。また、機能のURLは
- アプリケーションロジックに応じて
InventoryAdmin.grantItemToUser (sku, userId, quantity, callback)
メソッドのコールを実装します。コールバックは、インベントリにアイテムが追加された成功のデータを返します。
この記事は役に立ちましたか?
このページを評価する
答えたくない
ご意見ありがとうございました!
誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。