Skip to Content

Airwallex 支付

Zion 通过 Airwallex Drop-in 支持多币种单次支付、周期支付和退款。开始前,请先阅读支付功能概述,准备订单表并了解支付回调的处理方式。

配置 Airwallex

准备 Airwallex 账户

登录 Airwallex 的测试环境生产环境。在 Settings → Developers → API Keys 创建 API 密钥并保存 Client ID。API 密钥只在创建时显示;遗失后需要重新生成。

在 Airwallex 控制台创建 API 密钥

在 Airwallex 控制台查看 Client ID 和 API 密钥

如果账户使用法定实体或关联支付账户,还需要在 Settings → Entities 获取 Legal entity ID 和 Linked payment account ID。

在 Airwallex 控制台查看 Legal entity ID

在 Airwallex 控制台查看 Linked payment account ID

激活 Airwallex

打开 行为 → 支付 → Airwallex(Web),点击 激活。如果这是项目中第一个支付渠道,请选择订单表。

激活后,从 关联行为流 打开系统生成的 Airwallex 支付处理行为流,点击顶部的 Webhook 触发器并复制 Webhook 地址。

创建 Airwallex Webhook

在 Airwallex 控制台打开 Settings → Webhooks,创建 Webhook:

在 Airwallex 控制台创建 Webhook

  • API version:固定填写 2025-11-11
  • Account:选择 Linked payment account ID 对应的账户;未使用关联支付账户时选择当前收款账户。
  • Notification URL:填写 Airwallex 支付处理行为流的 Webhook 地址。
  • Events:勾选以下事件。
payment_intent.succeeded payment_intent.cancelled invoice.finalized subscription.in_trial subscription.active subscription.unpaid subscription.cancelled subscription.modified refund.accepted refund.failed

在 Airwallex 控制台配置 Webhook 版本、账户和事件

创建后复制 Webhook secret。

在 Airwallex 控制台复制 Webhook secret

填写支付配置

配置项必填说明
环境测试环境选择 DEMO,生产环境选择 PROD
Client IDAirwallex 账户的 Client ID
API keyAirwallex API 密钥
Webhook secret刚创建的 Webhook 密钥
Legal entity ID使用法定实体时填写
Linked payment account ID使用关联支付账户时填写

保存并发布支付配置、系统表、行为流和页面修改。测试配置只能配合 Airwallex 测试环境使用,不能与生产凭证混用。

Webhook 处理方式

支付、退款和订阅状态事件共用 Airwallex 支付处理行为流。该行为流解析事件类型、更新相应系统表,并将事件路由到支付、退款、订阅状态或订阅续费分支。

Airwallex 可能重复发送同一条 Webhook。仅当系统结果中的 alreadyProcessedfalse 时,才继续执行对应业务逻辑。

该结果只表示系统支付记录是否已处理,不能保证发货、发放权益或扣减库存等后续节点幂等。这些操作仍需使用订单状态条件、唯一约束或其他幂等措施。

单次支付

创建订单并添加行为

先在已绑定的订单表中创建订单,再从组件触发器的 支付 菜单添加 Airwallex → 单次支付

参数类型必填说明
订单表 id长整数已绑定订单表中的订单记录 id
币种文本Airwallex 支持的币种代码,如 USDHKD
金额小数使用主货币单位;例如 10 美元填写 10

建议用户点击后立即禁用支付按钮,直到支付行为返回或收银台关闭,避免重复拉起收银台。

支付行为的 成功时 表示前端调用已成功返回,不能配置修改数据的行为。最终结果由 Webhook 确认。

处理支付回调

Airwallex 支付处理行为流的同步支付状态节点提供:

结果类型说明
orderId长整数关联的订单 id
paymentId长整数支付记录 id
recurringPaymentId长整数周期扣款时关联的订阅记录 id;单次支付可能为空
paymentStatus文本SUCCESSFULCANCELLED
alreadyProcessed布尔值当前状态是否已处理过

仅当 paymentId 有值、paymentStatusSUCCESSFULalreadyProcessedfalse 时执行支付成功逻辑。发货或发放权益前,应核对订单金额、币种和支付记录。

退款

配置权限并添加行为

退款行为默认不向普通用户开放。在 设置 → 权限 → 支付 中,只为可信任的管理员角色开启 Airwallex 退款权限。

支付 菜单添加 Airwallex → 退款

参数类型必填说明
支付表 id长整数需要退款的支付记录 id,不是订单 id
退款金额小数使用原支付币种的主货币单位;累计退款不能超过支付金额

发起退款前,应查询成功退款记录并检查累计退款金额。

处理退款回调

同步退款状态节点提供:

结果类型说明
orderId长整数关联的订单 id
refundId长整数退款记录 id
paymentId长整数原支付记录 id
recurringPaymentId长整数周期扣款退款时关联的订阅记录 id
status文本REFUNDEDFAILED
alreadyProcessed布尔值当前退款状态是否已处理过

仅当 refundId 有值且 alreadyProcessedfalse 时,根据 status 处理订单、权益和通知。

周期支付

先在 Airwallex 控制台的 Billing → Products 创建产品和 Recurring Price,并复制 Price ID。

发起订阅

添加 Airwallex → 周期支付 → 发起

参数类型必填说明
订单表 id长整数首次订阅对应的订单记录 id
Price ID文本Airwallex Recurring Price 的 id

前端分支只表示订阅授权交互结果。订阅是否生效必须以 Webhook 同步后的周期性支付记录为准。

取消订阅

添加 Airwallex → 周期支付 → 取消,并绑定需要取消的 周期支付表 id

处理订阅状态

Airwallex 支付处理行为流会接收 subscription.in_trialsubscription.activesubscription.unpaidsubscription.cancelledsubscription.modified 等事件,并同步周期性支付表。

同步结果包括 recurringPaymentIdstatus。系统保存的状态包括 INCOMPLETETRIALINGACTIVEUNPAIDCANCELEDsubscription.modified 是 Webhook 事件,不是名为 MODIFIED 的订阅状态。

根据业务需要,在 ACTIVECANCELED 或其他状态分支中启用、暂停或收回订阅权益。

配置续费订单

invoice.finalized 会进入订阅续费处理。系统根据 Invoice ID 获取或创建当期支付记录,并打开 Airwallex 订阅续费处理行为流。

在该行为流预留的创建订单位置:

  1. 根据首次订阅订单创建本期业务订单,并填写金额、账户和其他业务字段。
  2. 将新增订单的 id 交给后续系统节点,使当期支付记录关联该订单。
  3. 在对应支付回调确认成功后,再发放本期权益。

模板会检查当期支付记录是否已有订单 id,以避免重复创建续费订单;用户添加的其他业务节点仍需自行保证幂等。

常见问题

  1. Webhook 校验失败:检查 Notification URL、Webhook secret、API version 和所选账户是否与 Zion 配置一致。
  2. 支付状态没有更新:确认所需事件已经勾选,并检查 Airwallex 支付处理行为流是否已发布。
  3. 支付被取消却进入其他分支:单次支付取消状态为 CANCELLED,不是 FAILED
  4. 订阅授权完成但权益未启用:以周期性支付表的 ACTIVE 状态为准,不要只使用前端成功分支。
  5. 续费产生支付记录但没有订单:配置 Airwallex 订阅续费处理行为流中的创建订单节点。
Last updated on