向用户发放购买物

使用从艾克索拉收到的Webhook中的交易详情和所购商品信息在您的应用程序中实现向用户发放购买物。

注:

在艾克索拉侧,针对商品购买和退款场景,有两种Webhook接收方式:支付和交易数据相关信息与已购买商品信息可以分别通过独立Webhook接收,也可以合并到一个Webhook中接收。默认情况下,所有新项目都会接收合并Webhook。

如需切换到接收合并Webhook的新方式,请联系您的客户成功经理或发送邮件至csm@xsolla.com

有关Webhook接收方式的更多信息

通过合并Webhook接收信息:

如果您在2025年1月22日之后注册了发布商帐户,您将通过订单成功支付order_paid)和订单取消order_canceled)Webhook接收所有信息。在这种情况下,您无需处理支付payment)和退款refund)Webhook。

通过独立Webhook接收信息:

如果您在2025年1月22日或之前注册了发布商帐户,您将接收以下Webhook:

您需要处理所有接收到的Webhook。

为确保游戏内购商店和支付管理完整运行,需要实现主要Webhook的处理:

Webhook名称描述
用户验证 > 用户验证 (user_validation)在支付流程的不同阶段发送,用于确保用户已在游戏中注册。
游戏服务 > 合并Webhook > 订单成功支付 (order_paid)包含支付数据、交易详细信息和已购买商品的信息。使用Webhook中的数据向用户发放商品。
游戏服务 > 合并Webhook > 订单取消 (order_canceled)包含已取消支付的数据、交易详细信息和已购买商品的信息。使用Webhook中的数据移除已购买的商品。

下图显示了使用合并webhooks进行商品购买和退货的过程。

注:
退款和拒付不仅可以由用户发起,也可以由艾克索拉或支付服务提供商发起。

如果在您的应用程序侧实现了商品目录个性化,请设置合作伙伴侧目录个性化的处理。

注:

要接收真实付款,您只需签署许可协议并实现Webhook处理:

在发布商帐户中设置Webhook

要启用接收Webhook:

  1. 在发布商帐户中打开项目,前往Project settings > Webhooks部分。
  2. Webhook server字段中,指定用于接收Webhook的服务器URL,格式为https://example.com。您也可以指定Webhook测试工具中提供的URL。
注意
传输数据时必须使用HTTPS协议;不支持HTTP协议。
注:
要测试Webhook,您可以选择任意专用网站,例如webhook.site,也可以选择平台,例如ngrok
  1. 生成密钥:
    1. Secret keys部分,点击Add key
    2. 在弹出的窗口中,输入便于在常规列表中识别的密钥名称。
    3. 点击Create key
    4. 点击Copy secret,并在己侧保存创建的密钥。
    5. 点击Done
    6. 确认您已保存密钥,然后点击Ok, close
注意

密钥建议:

  • 在己侧保存生成的Secret key。密钥只能在创建时在发布商帐户中看到一次。
  • 不要与任何人分享您的密钥。
  • 密钥必须存储在您的服务器上,绝不能存储在二进制文件或前端。
  1. 点击Enable webhooks
密钥轮换

您最多可以在项目中创建5个密钥,以便进行轮换

每个项目只能有一个活动密钥。如需更改,请在另一个密钥所在行点击Set as active并确认操作。成功迁移到新密钥后,建议删除已停用的密钥。

在发布商帐户中测试Webhook

当您在项目中启用Webhook后,发布商帐户的高级设置下方会显示Webhook测试区域。

您可以测试以下Webhook:

Webhook测试的选项卡名称Webhook名称和类型
付款和商店用户验证 > 用户验证(user_validation)
游戏服务 > 合并Webhook > 订单成功支付(order_paid)
游戏服务 > 合并Webhook > 订单取消(order_canceled)
订阅用户验证 > 用户验证(user_validation)
付款 > 支付(payment)
争议反欺诈 > 争议(dispute)
注:
以下是测试合并Webhook场景的操作说明。

在缺少真实值的情况下,可输入任意值。

您还可以测试在沙盒实时模式下进行购买时的Webhook。退款测试只支持实时模式。

向Webhook发送响应

要确认收到Webhook,您的服务器必须返回:

  • 200201204 HTTP代码(成功响应时)。
  • 问题描述400 HTTP代码(如未找到指定用户或传入的签名无效)。

如您的服务器发生临时问题,您的Webhook处理程序也可以返回5xx代码。

注:
Webhook的完整列表和机制以及详细的处理示例见Webhook文档

下一步

  1. 设置订阅销售 (可选)。
  2. 设置用户身份认证

配置Webhook中的商品信息

您可以通过items数组配置在订单成功支付订单取消Webhook中包含的商品数据。

启用附加参数包含

启用以下附加参数的包含功能以标识:

  • 商品是否免费(is_free)
  • 商品是否为奖励(is_bonus)
  • 商品是否为捆绑包内容(is_bundle_content)

要接收这些参数,您需要使用更新Webhook设置信息API调用将Webhook切换到版本2。在版本1(默认版本)中,这些参数不可用。

包含附加参数的items数组示例:

Copy
Full screen
Small screen
 1"items": [
 2      {
 3        "sku": "com.xsolla.item_new_1",
 4        "type": "bundle",
 5        "is_pre_order": false,
 6        "is_free": false,
 7        "is_bonus": false,
 8        "is_bundle_content": false,
 9        "quantity": 1,
10        "amount": "1000",
11        "promotions": []
12      },
13      {
14        "sku": "com.xsolla.gold_1",
15        "type": "virtual_currency",
16        "is_pre_order": false,
17        "is_free": false,
18        "is_bonus": false,
19        "is_bundle_content": true,
20        "quantity": 1500,
21        "amount": "[null]",
22        "promotions": []
23      }
24 ]

禁用捆绑包内容包含

默认情况下,Webhook会将捆绑包中的所有商品作为单独商品列表包含在内。您可以将Webhook配置为仅包含捆绑包本身,而不列出其内容。

在这种情况下,捆绑包中包含的商品不会出现在items数组中。在上面的数组中,SKU为com.xsolla.gold_1的商品(作为捆绑包的一部分)未被包含。

禁用捆绑包内容时的items数组示例:

Copy
Full screen
Small screen
 1
 2"items": [
 3      {
 4        "sku": "com.xsolla.item_new_1",
 5        "type": "bundle",
 6        "is_pre_order": false,
 7        "is_free": false,
 8        "is_bonus": false,
 9        "is_bundle_content": false,
10        "quantity": 1,
11        "amount": "1000",
12        "promotions": []
13      }
14 ]

如需禁用捆绑包内容包含功能,请联系您的客户成功经理或发送邮件至csm@xsolla.com

本文对您的有帮助吗?
谢谢!
我们还有其他可改进之处吗? 留言
非常抱歉
请说明为何本文没有帮助到您。 留言
感谢您的反馈!
我们会查看您的留言并运用它改进用户体验。

有用链接

上次更新时间: 2026年6月5日

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

报告问题
我们非常重视内容质量。您的反馈将帮助我们做得更好。
请留下邮箱以便我们后续跟进
感谢您的反馈!
无法发送您的反馈
请稍后重试或发送邮件至doc_feedback@xsolla.com与我们联系。