我该选 Waffo 托管收银台,还是自己做支付页?
Waffo 支持两种收银台集成模式:
两种模式在下单请求上的区别:
- 托管收银台:不需要传
payMethodType或payMethodName,收银台自动展示全部可用支付方式。 - 自建收银台:用户已在你的页面选好,需要告诉 Waffo 走哪个通道。卡支付只传
payMethodType(Waffo 通过卡 BIN 自动识别发卡品牌,不要传payMethodName);虚拟账户(VA)只传payMethodType: "VA",具体银行由用户在 Waffo 侧选;电子钱包传payMethodName指定钱包,用户会跳过收银台直接进入该钱包的支付流程。
收到 orderAction 之后,有哪几种方式让用户打开收银台?
没有特别需要留在页面内的理由时,优先选整页跳转:它对页面容器和前端的依赖最少。
用 window.open 打开收银台有什么坑?
- 在点击事件处理函数里同步调用
window.open(),没有问题。 - 在
await之后再调用,会被浏览器拦截。做法:先同步打开一个空白窗口,等拿到地址后再给它赋 URL;或者弹一个确认框,让用户自己点击打开。 - 苹果设备的移动端对用户手势判定很严,异步打开几乎都会被拦截。
把收银台放进 iframe,必须满足什么条件?
如果你的页面无法安全地支持 iframe 里的 3DS 验证,请改用整页跳转或
window.open。
遇到 3DS 页面空白时,先到浏览器控制台和网络面板记录被拦截的 CSP 指令、被拦截的网址、下发该策略的文档、集成方式、订单号和时间,再联系技术支持。可以先用 Content-Security-Policy-Report-Only 验证策略,再正式启用。
哪些支付方式不能放进 iframe 或要特别处理?
更多按支付方式区分的限制,见官网支付方式集成注意事项。可用的支付方式始终取决于你的合同、Portal 的 Payin 配置和支付方式配置查询结果。
Waffo 前端 SDK 能帮我做什么?
Waffo 的前端 SDK 是 npm 包@waffo/payment-sdk,在浏览器里运行,和服务端 SDK 是两回事。初始化时传入你的 client API key,并指定环境(prod、testing 或 sandbox)。它提供两项能力:
使用
tokenizationSubmit 之前,你的后端要先调用 Tokenization 的 Generate 接口,拿到 tokenSessionId。完整流程见Tokenization 与卡支付 FAQ和官网前端组件 - 组件使用。
收银台的主题、语言、支付方式筛选,是在下单请求的 paymentInfo 里配置的,见客制化收银台页面(品牌、颜色、Logo)和收银台语言。
我把收银台放在 iframe 里,高度怎么自适应?
默认情况下,iframe 里的收银台不会通知外层页面它有多高,于是容易出现双滚动条或底部大片空白。做法是在收银台地址上带embed=adaptive,收银台就会把自己内容的自然高度报告给外层页面。
报告的消息格式(iframe 向它的直接父窗口发送):
- 只有
embed=adaptive的 iframe 才会发这个消息。没带的 iframe、以及独立打开的收银台页面,保持原来的最小高度,也不发任何消息。原有的embed=true行为不变。 - 消息里只有高度,不包含订单或支付数据。
- 高度变化会被合并后再发送,不会每一次布局抖动都发一条。
- 外层页面必须自己监听这个消息并设置 iframe 高度,收银台只负责发送这一侧。
- 一定要同时校验
event.origin和event.source。收银台发消息时目标来源写的是*(为了支持任意商户域名和没有 referrer 的嵌入),所以安全校验要由你这边做。 - 外层容器的高度保持自动,去掉会阻止收缩的固定高度或最小高度;加载期间可以先给一个初始高度。同步生效之前,不要用
height: 100% !important覆盖结果,也不要先把滚动关掉。 - 如果监听器注册得晚,或者容器被隐藏后重新显示,可以主动要求重新测量(即使高度没变也会重发一次):
- 只有来自直接父窗口的请求会被响应。
- 收银台销毁时,记得移除你页面上的监听器。
收银台嵌在我的站点 iframe 里,国家或时区识别不到,怎么办?
收银台会用浏览器里的country(订单所属国家)和 tz(时区)两个 cookie。当收银台处在与你的站点不同源(跨站)的 iframe 里时,普通的 cookie 既写不进去也不会被带上;收银台因此在 HTTPS 下把它们写成 SameSite=None; Secure; Partitioned 的分区 cookie,让它们在嵌入场景下仍然可以工作。
对你的含义:
这套 cookie 行为是收银台自动处理的,你不需要在自己的页面里写任何 cookie。
相关入口
- 官网收银台集成步骤:https://waffo.com/docs/zh/developer-docs/integration/checkout/steps.md
- 官网集成方式对比:https://waffo.com/docs/zh/developer-docs/use-cases/checkout-solution.md
- 官网前端组件使用:https://waffo.com/docs/zh/developer-docs/integration/elements/usage.md
- 官网支付方式集成注意事项:https://waffo.com/docs/zh/developer-docs/tools-and-references/references/payment-method-integration-notes.md