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

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

您可以使用第三方支付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密钥必须存储在您的服务器上,切勿保存在代码或前端中。

向物品库添加商品的函数代码:
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)的调用。回调将返回是否将商品成功添加至物品库的数据。
本文对您的有帮助吗?
谢谢!
我们还有其他可改进之处吗? 留言
非常抱歉
请说明为何本文没有帮助到您。 留言
感谢您的反馈!
我们会查看您的留言并运用它改进用户体验。
为此页面评分
为此页面评分
我们还有其他可改进之处吗?

不想回答

感谢您的反馈!
上次更新时间: 2024年1月22日

发现了错别字或其他内容错误? 请选择文本,然后按Ctrl+Enter。

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