向基于艾克索拉解决方案的物品库中添加商品

艾克索拉提供基于游戏内商店产品的玩家物品库实现解决方案(“玩家物品库”)。该解决方案可让您跨平台同步所有购买项和用户付费奖励。

您可以使用第三方支付UI(如Google Play应用内购买)来向玩家物品库中添加购买的商品。

商品在调用向用户发放商品API服务器查询时添加至物品库。如果您应用程序后端使用的是Firebase,请使用现成的云函数:

  1. 向Firebase项目添加云函数
  2. 实现该函数的调用逻辑

向Firebase项目添加云函数

  1. 初始化您的Firebase项目
  2. 导入并配置向物品库添加商品的函数,其中:
    • <MerchantID> — 在发布商帐户项目设置 > Webhooks部分找到的商户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实现的示例,您可以使用xsolla-googleplay-sdk模块,该模块可让您从Google Play应用内购买界面向物品库添加购买项。

要在您的项目中应用该示例:

  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。

报告问题
我们非常重视内容质量。您的反馈将帮助我们做得更好。
请留下邮箱以便我们后续跟进
感谢您的反馈!