在游戏中集成商店

在发布商帐户中创建并配置商品(虚拟物品、虚拟货币、捆绑包、密钥)后,在您的游戏中添加一个游戏内商店:

  1. 实现显示商品目录
  2. 实现商品销售逻辑

显示商品目录

注:
要调用艾克索拉API,您可以使用针对各游戏引擎和平台的现成SDK:

通过游戏内商店和Buy Button API调用实现商品目录的显示:

任务API
显示添加至商店的虚拟物品完整列表Get virtual items list
在客户端侧显示可供购买的虚拟物品组列表Get item groups list
在客户端侧获取商店中可供销售的虚拟货币列表Get virtual currency list
在客户端侧显示添加至商店的虚拟货币套餐完整列表Get virtual currency package list
显示添加至商店的虚拟货币捆绑包完整列表Get list of bundles

销售商品

您可以通过以下方式销售商品:

  1. 快速购买单项商品。可以通过此方式销售任意数量的单个SKU,例如100瓶相同的魔法药水。
  2. 购物车下单。通过此方式,用户可以先将商品加入购物车,并可以添加和删除不同商品以及更改商品数量。

快速购买

  1. 调用Create order with specified item API。响应中将传入用于打开支付UI的令牌。
  2. 用收到的支付令牌打开支付UI。

注:
折扣信息(个体折扣或与购买关联的折扣)只在支付UI中对用户提供。不支持使用促销码。
注:
要调用艾克索拉API,您可以使用针对各游戏引擎和平台的现成SDK:

购物车下单

实现以下逻辑:

  1. 设置购物车并获取令牌:
  2. 打开支付UI

在客户端上设置购物车和购物车下单

自行实现添加和删除商品的逻辑。另外还需要考虑一个情况,即在调用设置购物车的API之前,您没有订单会应用哪些促销活动的信息,也就是说,总价和添加的奖励品的详情不可知。

  1. 玩家添加商品到购物车后,请调用Fill cart with items API。所选商品的当前信息(折扣前后的价格、奖励品)将传入响应中。
  2. 调用Create order with all items from current cart API。订单ID和支付令牌将传入响应中。创建的订单将获得New的订单状态。
  3. 打开支付UI

注:
要调用艾克索拉API,您可以使用针对各游戏引擎和平台的现成SDK:

在服务器上设置购物车和购物车下单

此方式下设置购物车的时间可能较长,因为每个购物车更改必须伴随API调用。

完成以下步骤:

  1. 更改购物车:

注:
如要获取购物车的当前状态,请调用Get current user’s cart API。

  1. 调用Create order with all items from the current cart API。订单ID和支付令牌将传入响应中。创建的订单将获得New的订单状态。
  2. 打开支付UI

打开支付界面

要进行商品支付,请打开支付UI。用于打开支付UI的令牌将传入Create order with all items from current cart API响应中。

通过以下方式之一实现支付UI的打开:

  • 在新窗口中打开。要在新浏览器窗口中打开支付UI,请使用此链接:https://secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN,其中ACCESS_TOKEN是创建订单时收到的令牌。
  • 通过小组件打开。请使用Xsolla PayStation Widget脚本(README文件中有说明信息)。

测试支付流程

您可以在沙盒模式下测试支付流程,可使用测试银行卡和任意帐户进行。

注:
首次完成真实付款后,严格沙盒付款政策即生效。沙盒模式支付只对发布商帐户 > 公司设置 >中指定的用户可用。

要启用/禁用沙盒模式,需更改快速购买购物车下单请求中sandbox参数的值。默认禁用沙盒模式。

获取订单状态

您可以使用以下方法获取用户订单状态:

  1. 在服务器侧通过Webhook
  2. 在客户端侧通过WebSocket API或IGS&BB API

在服务器侧通过Webhook获取用户订单状态

在服务器侧配置Webhook后,可使用它们来获取订单详情和状态。

在客户端侧通过WebSocket API或IGS&BB API获取用户订单状态

如没有服务器或您是在客户端侧实现购买处理逻辑,可使用以下方式:

  1. WebSocket API
  2. Short-polling

WebSocket API

此方法涉及使用Web socket来获取订单状态而不接收订单本身的详细信息。更推荐使用此方法,因为艾克索拉客户端和服务器之间只需建立一个连接,因此对客户端或服务器不会有额外负载。

请完成以下步骤:

  1. 为了让WebSocket服务器和客户端识别包含订单状态的消息,请创建一个通道标识符(请注意参数顺序,不要弄错):Channel_id: order_id=$orderId&project_id=$projectId
  2. 要订阅该通道,通过WebSocket协议连接URL:wss://store-ws.xsolla.com/sub/order/status?order_id=$orderId&project_id=$projectId。消息正文包含订单ID和订单状态:

Copy
Full screen
Small screen
{
"order_id": int,
"status": string
}

有以下订单状态可用:

  • New — 已创建订单但未支付
  • Paid — 订单已支付
  • Done — 订单已交付(已发送所有支付凭证,交付在艾克索拉侧、外部平台等进行)
  • Canceled — 订单已取消,付款已退给用户

通过Web socket响应所需的时间是5分钟。如超时或websocket存在问题,建议使用短轮询。

短轮询

要在状态切换后获取订单中商品的详细信息,请调用获取订单API。

注:
将使用周期性订单状态轮询,即一个接收订单状态和订单信息的简单HTTP请求。建议的请求间隔时间为3秒。
您的进度
感谢您的反馈!
上次更新时间: 2022年11月30日

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

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