Skip to main content
Waffo 收银台支持多种定制化能力,商户可以通过三种方式配置外观和行为。

定制化能力概览

优先级:API 传参 > 商户后台 > SDK 传入 同一能力通过多种方式配置时,高优先级的生效。

支付方式过滤

通过 payMethodTypepayMethodName 控制收银台展示的支付方式。 支付方式特例以及 App WebView / iframe 相关限制,参见 支付方式集成注意事项

推荐传参方式

示例

payMethodCountry 什么时候需要传

当商户希望收银台只展示指定国家的支付方式时传入。
  • 不传:收银台展示商户合约下所有国家的可用支付方式
  • 传入:收银台仅展示该国家的支付方式
全球卡(CREDITCARD/DEBITCARD)不要传 payMethodCountry,全球卡不属于任何国家。

多币种支持

当商户定价币种与用户支付币种不同时(跨币种下单):
userCurrency 可不传,Waffo 自动处理汇率换算。用户在收银台看到的是当地货币金额。

语言设置

通过 paymentInfo.cashierLanguage 设置收银台显示语言(IETF BCP 47 格式):
常用的语言标签包括: cashierLanguage 与订单币种、用户国家或地区相互独立。Waffo 会将有效的语言标签规范为标准 BCP 47 大小写格式,例如将 en-us 规范为 en-US

自动选择逻辑

不指定 cashierLanguage 时,Waffo 按以下优先级自动选择语言:
  1. 使用浏览器 Accept-Language 请求头中优先级最高且受支持的语言
  2. 如果用户选择了非 GLB 的国家或地区标签页,使用该国家或地区对应的语言
  3. 否则,使用用户 IP 所在国家或地区对应的语言
  4. 无法匹配时,回退到 en
Waffo 只检查 Accept-Languageq 权重最高的语言项。如果该语言不受支持,Waffo 会继续按国家或地区选择语言。 浏览器语言匹配按主语言子标签处理:enesidjakomsplptthtrvi 直接匹配;任意 zh-* 匹配为 zh。其他主语言不会通过浏览器语言锁定,即使该语言可通过 cashierLanguage 显式指定。 通过 cashierLanguage 指定的语言,以及通过 Accept-Language 匹配的语言,都会在收银台会话中保持不变。通过国家或地区匹配的语言会随用户切换标签页而变化。GLB 没有对应语言,Waffo 会改用剩余条件判断语言。 国家或地区回退使用以下映射:

注意事项

  • 订单币种和用户支付币种不参与收银台语言选择
  • cashierLanguage 会校验语言前缀和书写体系是否受支持;地区只校验是否为合法 ISO 3166-1 alpha-2 国家或地区码
  • 不支持的语言或书写体系会返回错误码 A0026
  • 不符合 IETF BCP 47 格式的语言标签会返回错误码 A0047
如果你希望收银台始终使用固定语言,请显式传入 paymentInfo.cashierLanguage

主题定制

自定义收银台的颜色、字体和样式,匹配商户品牌形象。

三种配置方式

优先级:API 传参 > 商户后台 > SDK 传入。API 传了 cashierAppearance 会覆盖所有其他设置。

主题变量

这些变量会注入到收银台 UI 渲染层,覆盖默认主题。影响范围包括:支付方式选择页、卡片表单页、过渡页、支付结果页。

API 传参方式

支持的接口:
  • POST /api/v1/order/create
  • POST /api/v1/subscription/create
cashierAppearance 字段必须是 JSON 字符串(不是 JSON 对象),结构为 {"variables": { ... }},需要对内部的引号做转义。

商户后台配置

登录 Merchant Portal → Checkout → Cashier Customization,在收银台客制化页面设置全局默认样式。适合所有交易使用统一品牌样式的场景。 Portal 支持配置商户 Logo、预设主题、主题颜色、字体大小和圆角,并可在页面右侧实时预览效果。点击 Save & Publish 后,配置会应用到后续新创建的订单。
Merchant Portal 收银台客制化页面总览
如果你的账户下有子商户(SubMID),可以选择让所有子商户继承主商户配置,也可以为单个子商户设置独立样式。 完整操作步骤见 Merchant Portal 收银台客制化配置

SDK 传入

初始化前端 SDK(@waffo/payment-sdk)时传入主题配置。优先级最低,当 API 和后台都未配置时生效。
通过 brandInfo.cashierLogoUrl 传递商户 Logo,在收银台页面展示品牌标识。 两种传递方式:

API 传参示例

使用 Portal 上传的 Logo:

订单过期时间

通过 orderExpiredAt 设置订单过期时间(ISO 8601,UTC+0)。
该字段控制的是用户在收银台提交订单的时间窗口。一旦订单提交到支付渠道后,过期时间由支付方式自身控制,极少数支付方式支持商户传入渠道侧过期时间。具体可登录 Portal,到 Payin 页面查看各支付方式的过期时间说明。

重定向 URL

支持 HTTPS 链接和 deeplink 链接(如 App 场景)。
重定向仅控制用户体验,不代表支付结果。始终以 Webhook 或查询接口为准。