设置Webhook

Webhook是系统中发生的事件的通知。发生特定事件时,艾克索拉会向您的应用程序发送一个传送事件数据的HTTP请求,通常是JSON格式的POST请求。

事件示例

  • 用户与商品目录进行了交互
  • 支付或取消了订单

Webhook列表

对于游戏密钥销售,无需进行用户验证和帐户中物品添加。如果您想接收付款或订单取消等事件的相关信息,可以连接Webhook。

如果连接了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中的数据移除购买的商品。

下图显示了使用合并Webhook购买商品和退款的过程。

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

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

注:
要接收真实付款,只需签署许可协议并实现以下Webhook的处理:
注:
您可以使用PlayFab集成来接收付款和订单取消信息,而不必使用Webhook。

在发布商帐户中设置Webhook

要启用Webhook接收功能:

  1. 在发布商帐户的项目中前往设置 > Webhook部分。
  2. Webhook服务器字段中,按https://example.com格式指定接收Webhook的服务器URL。您也可以使用Webhook测试工具中提供的URL。
注意
请使用HTTPS协议传输数据,不支持HTTP协议。
  1. 默认会生成一个用于项目Webhook签名的密钥。如要生成新密钥,请点击刷新图标。
  2. 单击启用Webhook

Webhook服务器字段中保存URL时,可看到高级设置部分,其中可以授予在Webhook中接收详细信息的权限。方法是将所需开关设置为打开。在每个权限所在行,您可以看到受该设置影响的Webhook列表。

注:
如果是在2025年1月22日或之前注册的发布商帐户,可在设置 > Webhooks > 测试 > 付款 > 高级设置部分找到这些开关。
注:
要测试Webhook,您可以选择任意专门网站(如webhook.site)或平台(如ngrok)。
注意
不能同时向不同URL发送Webhook。您可以先在发布商帐户中指定一个用于测试的URL,后续再替换为真实的URL。
要禁用Webhook接收:
  1. 在发布商帐户中打开您的项目,前往设置 > Webhooks部分。
  2. 单击禁用Webhook

在发布商帐户中测试Webhook

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

您可以测试以下Webhook:

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

要测试Webhook:

  1. 在Webhook测试部分,前往付款和商店选项卡。
  2. 在下拉菜单中选择游戏密钥。如果游戏密钥套餐未在项目中配置,您将看到一个前往设置的按钮。
  3. 填写必要字段:
    • 艾克索拉订单ID — 艾克索拉侧的订单ID。测试时可使用任意数字值。
    • 艾克索拉发票ID — 艾克索拉侧的交易ID。测试时可使用任意数字值。
    • 商品 — 您希望在Webhook中接收其信息的商品。从下拉列表选择商品SKU并指定数量。可通过单击+并在新行添加来选择同类型的多个商品。
    • 用户ID — 测试时可使用任意字母和数字组合。
    • 发票ID — 游戏侧的交易ID。测试时可使用任意字母和数字组合。这不是成功支付的必需参数,但可用于关联己侧与艾克索拉侧的交易ID。
    • 金额 — 支付金额。测试时可使用任意数字值。
    • 货币 — 从下拉列表中选择货币。
  4. 单击测试Webhook

包含指定数据的订单成功支付订单取消用户验证Webhook会发送到您提供的URL。每种Webhook类型的测试结果将显示在测试Webhook按钮下方。您需要为每个Webhook配置两种处理场景:成功场景和错误场景。

注:
如测试区块中显示一条测试未通过的错误消息,请检查Webhook监听器中的Webhook响应设置。测试结果中会提供相关错误信息。

Webhook监听器

Webhook监听器是一个程序代码,可以在指定的URL地址接收传入的Webhook、生成签名及向艾克索拉Webhook服务器发送响应

生成签名

接收Webhook时,应确保数据传输的安全性。为此,必须从Webhook数据生成一个签名并确保它与HTTP请求头中发送的签名匹配。

要生成签名:

  1. 将请求正文中的JSON与项目密钥串联起来。
  2. 对第一步中得到的字符串应用SHA-1加密散列函数。

向Webhook发送响应

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

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

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

如果艾克索拉服务器未收到对订单成功支付订单取消Webhook的响应,或收到了包含5xx代码的响应,将根据以下规则重新发送Webhook:

  • 间隔5分钟尝试2次
  • 间隔15分钟尝试7次
  • 间隔60分钟尝试10次

自首次尝试起,12小时内最多尝试发送Webhook20次。

支付退款Webhook的重试逻辑在各自的Webhook页面中有详细说明。

如果艾克索拉服务器未收到用户验证Webhook的响应,或收到4005xx代码的响应,将不会重新发送用户验证Webhook。

该情况下会向用户显示一个错误,且不会发送支付订单成功支付Webhook。

注:
Webhook的完整列表和机制以及详细的处理示例见Webhook文档
本文对您的有帮助吗?
谢谢!
我们还有其他可改进之处吗? 留言
非常抱歉
请说明为何本文没有帮助到您。 留言
感谢您的反馈!
我们会查看您的留言并运用它改进用户体验。
上次更新时间: 2025年12月31日

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

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