向基于艾克索拉解决方案的物品库中添加商品
艾克索拉提供基于游戏内商店产品的玩家物品库实现解决方案(“玩家物品库”)。该解决方案可让您跨平台同步所有购买项和用户付费奖励。
您可以使用第三方支付UI(如Google Play应用内购买)来向玩家物品库中添加购买的商品。
商品在调用向用户发放商品API服务器查询时添加至物品库。如果您应用程序后端使用的是Firebase,请使用现成的云函数:
向Firebase项目添加云函数
- 初始化您的Firebase项目。
- 导入并配置将商品加入物品库的功能,其中:
<MerchantID>
— 可在发布商帐户中找到的商户ID:- 在项目设置 > Webhooks部分中。
- 在公司设置 > 公司部分中。
- 在发布商帐户任意页面的浏览器地址栏的URL中。URL的格式如下:
https://publisher.xsolla.com/商户ID/发布商帐户部分
。
<ProjectID>
— 可在发布商帐户中找到的项目ID:- 在项目名称旁边。
- 在项目设置 > 项目ID部分。
<ApiKey>
— 可在发布商帐户的公司设置 > API密钥或项目设置 > API密钥部分找到的API密钥。
注意
关于使用API密钥的详细信息,请参阅API参考。
关于密钥的建议:
- 请在己侧保存生成的API密钥。您仅会在创建API密钥时在发布商帐户中看见它一次。
- 请妥善保管API不被泄露。它提供对您的个人帐户及您在发布商帐户中项目的访问权限。
- API密钥必须存储在您的服务器上,切勿保存在代码或前端中。
向物品库添加商品的函数代码:
Copy
- 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实现的示例,您可以使用xsolla-googleplay-sdk模块,该模块可让您从Google Play应用内购买界面向物品库添加购买项。
要在您的项目中应用该示例:
- 启动Android Studio。
- 将xsolla-googleplay-sdk模块添加至项目。
- 初始化库。方法是在Android项目源代码中添加以下代码行,其中
<your-deployment-host>
是云函数主机的URL(例如https://us-central1-xsolla-sdk-demo.cloudfunctions.net
):
Copy
- kotlin
InventoryAdmin.init("<your-deployment-host>")
在生产环境中运行该函数后,云函数URL在Firebase代码行中显示。此外该函数URL也在
- 根据应用程序逻辑实现
InventoryAdmin.grantItemToUser (sku, userId, quantity, callback)
的调用。回调将返回是否将商品成功添加至物品库的数据。
本文对您的有帮助吗?
感谢您的反馈!
我们会查看您的留言并运用它改进用户体验。为此页面评分
为此页面评分
不想回答
感谢您的反馈!
发现了错别字或其他内容错误? 请选择文本,然后按Ctrl+Enter。