定制化能力概览
优先级:API 传参 > 商户后台 > SDK 传入
同一能力通过多种方式配置时,高优先级的生效。
支付方式过滤
通过payMethodType 和 payMethodName 控制收银台展示的支付方式。
支付方式特例以及 App WebView / iframe 相关限制,参见 支付方式集成注意事项。
推荐传参方式
示例
payMethodCountry 什么时候需要传
当商户希望收银台只展示指定国家的支付方式时传入。- 不传:收银台展示商户合约下所有国家的可用支付方式
- 传入:收银台仅展示该国家的支付方式
多币种支持
当商户定价币种与用户支付币种不同时(跨币种下单):userCurrency 可不传,Waffo 自动处理汇率换算。用户在收银台看到的是当地货币金额。
语言设置
通过paymentInfo.cashierLanguage 设置收银台显示语言(IETF BCP 47 格式):
cashierLanguage 与订单币种、用户国家或地区相互独立。Waffo 会将有效的语言标签规范为标准 BCP 47 大小写格式,例如将 en-us 规范为 en-US。
自动选择逻辑
不指定cashierLanguage 时,Waffo 按以下优先级自动选择语言:
- 使用浏览器
Accept-Language请求头中优先级最高且受支持的语言 - 如果用户选择了非
GLB的国家或地区标签页,使用该国家或地区对应的语言 - 否则,使用用户 IP 所在国家或地区对应的语言
- 无法匹配时,回退到
en
Accept-Language 中 q 权重最高的语言项。如果该语言不受支持,Waffo 会继续按国家或地区选择语言。
浏览器语言匹配按主语言子标签处理:en、es、id、ja、ko、ms、pl、pt、th、tr、vi 直接匹配;任意 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/createPOST /api/v1/subscription/create
cashierAppearance 字段必须是 JSON 字符串(不是 JSON 对象),结构为 {"variables": { ... }},需要对内部的引号做转义。商户后台配置
登录 Merchant Portal → Checkout → Cashier Customization,在收银台客制化页面设置全局默认样式。适合所有交易使用统一品牌样式的场景。 Portal 支持配置商户 Logo、预设主题、主题颜色、字体大小和圆角,并可在页面右侧实时预览效果。点击 Save & Publish 后,配置会应用到后续新创建的订单。
SDK 传入
初始化前端 SDK(@waffo/payment-sdk)时传入主题配置。优先级最低,当 API 和后台都未配置时生效。
商户 Logo
通过brandInfo.cashierLogoUrl 传递商户 Logo,在收银台页面展示品牌标识。
两种传递方式:
API 传参示例
订单过期时间
通过orderExpiredAt 设置订单过期时间(ISO 8601,UTC+0)。
重定向 URL
支持 HTTPS 链接和 deeplink 链接(如 App 场景)。