Skip to main content
在 Waffo 收银台中完成一次持卡人发起交易(CIT),并将本次使用的银行卡转换为 Token,供后续商户发起交易(MIT)使用。商户页面和后端不接触明文卡信息。

适用场景

当你已经集成 Waffo 收银台,并希望在首次支付后继续发起以下扣款时,使用 Waffo 收银台绑卡:
  • 按固定计划发起的 scheduled MIT
  • 用户离线时发起的 unscheduled MIT
  • 商户自行管理周期计划,并通过 ONE_TIME_PAYMENT 完成后续扣款
如果你需要在没有本次支付的情况下独立绑卡,或需要在自己的页面中设计绑卡界面,请使用商户侧绑卡

完整时序

与商户侧绑卡的区别

前置条件

  • 你已完成收银台集成
  • 订单使用 ONE_TIME_PAYMENT
  • 商户已开通支持 MIT 的银行卡支付方式。设置 setupFutureUsage: true 后,Waffo 只提供支持 MIT 的支付方式。
  • 商户已通过 Waffo 的 MIT 白名单准入。未完成准入时不可发起 MIT。
  • userInfo.userId 对同一用户保持稳定。后续使用 Token 时仍需传入同一个用户 ID。

集成步骤

1

创建支付并声明后续使用

调用创建支付,在 paymentInfo 中设置 setupFutureUsage: true
不要同时传入 paymentInfo.setupFutureUsagepaymentInfo.userPaymentAccessToken。前者表示创建新 Token,后者表示使用已有 Token。
2

将用户带到收银台

按照普通收银台支付流程解析响应中的 orderAction,并将用户重定向到 Waffo 收银台。用户输入新卡并完成支付。如果用户选择已有的已存卡,Waffo 会复用该卡,不会重复绑定同一张卡。
3

从支付通知获取 Token

Waffo 收银台绑卡不会发送 TOKENIZATION_NOTIFICATION。支付成功后,Waffo 向创建订单时的 notifyUrl 发送 PAYMENT_NOTIFICATION。从 result.paymentInfo.userPaymentAccessToken 获取本次支付生成的 Token。支付通知关键字段节选:
请在支付成功后保存 result.paymentInfo.userPaymentAccessToken。如果支付通知未送达,可调用 POST /api/v1/order/inquiry,传入 paymentRequestIdacquiringOrderId,并从响应中的相同字段获取 Token。例如:
不要等待 TOKENIZATION_NOTIFICATION
4

使用 Token 发起 MIT

只有已通过 Waffo MIT 白名单准入的商户才能发起 MIT。未完成准入时不可发起 scheduled 或 unscheduled MIT。
后续扣款时,将支付通知中的 Token 作为 paymentInfo.userPaymentAccessToken,并设置 merchantInitiatedMode
merchantInitiatedMode 支持:
  • scheduled:按预先约定的固定计划扣款
  • unscheduled:没有固定周期的商户发起扣款

常见问题

没有可用支付方式

设置 setupFutureUsage: true 后,Waffo 会过滤不支持 MIT 的支付方式。确认商户已开通支持 MIT 的银行卡合约;仍无可用方式时,请联系 Waffo 技术支持。

支付成功但暂未收到 Token

先确认是否已收到 PAYMENT_NOTIFICATION,并读取 result.paymentInfo.userPaymentAccessToken。如果支付通知未送达,调用订单查询获取同一字段。Waffo 收银台绑卡不会发送 TOKENIZATION_NOTIFICATION

无法发起 MIT

确认商户已通过 Waffo MIT 白名单准入。未完成准入时,即使已经获得 Token,也不可发起 scheduled 或 unscheduled MIT。