iframe 嵌入方式,将 StablePay Checkout 集成到第三方网站中。
在该模式下,嵌入的 checkout 页面负责展示付款流程并处理用户在 iframe 内的操作;支付结果同步仍应由服务端业务流程和 Webhook 驱动,而不是依赖父子页面前端通信。
适用场景
适合以下场景:- 希望将 StablePay Checkout 直接嵌入页面、弹窗或抽屉中
- 用户在嵌入页内完成完整付款流程
- 商户通过后端状态流转、订单系统和 Webhook 处理付款结果
- 父页面需要实时感知付款成功或失败
- 父页面需要自动关闭弹窗、刷新订单状态或触发额外前端联动
- 需要父子页面之间通过
postMessage进行通信
接入原则
- 接入方负责渲染
iframe iframe src应使用创建交易时返回的完整 checkout URL- 不要在前端自行拼接、推导或改写 checkout 路由参数
- 当前 checkout 页面使用 Hash 路由,正式接入时必须保留
#/ - 付款结果确认请使用服务端状态与 Webhook,不要只依赖前端展示结果
推荐接入地址
推荐将创建交易时返回的完整 checkout 地址直接作为iframe src 使用。
- 接收到完整 checkout URL 后,直接原样放入
iframe src - 地址中的
#/、语言参数和其他业务参数都必须原样保留 - 不建议接入方自行改写、裁剪或重新拼接路由
嵌入示例
标准示例:接入方开发要求
- 建议为
iframe设置border: 0 - 宿主页面中的布局、尺寸和滚动行为由接入方自行控制
- 建议预留足够空间,避免在关键付款步骤中出现裁切或双层滚动
安全与网关要求
如果宿主页面启用了 CSP,需要允许 checkout 域名被嵌入,例如:X-Frame-Options: DENY- 会拦截 iframe 嵌入的严格
frame-ancestors策略
sandbox,建议至少放开以下能力:
兼容性说明
- 桌面浏览器在纯嵌入展示场景下通常兼容性良好
- 在移动端,部分钱包内置浏览器可能限制 deep link 拉起行为
- 如果某些移动钱包无法在 iframe 内正常打开,建议改为新窗口或全页打开 checkout
- 本页不展开 iframe 之外的钱包专项兼容处理
联调验收项
建议在联调阶段至少验证以下内容:- checkout 页面可以在 iframe 内正常加载
- 二维码、金额和地址信息展示正常
- 复制类操作可以正常执行
- PC 端付款流程表现正常
- 手机端付款流程表现正常
- 结果页可以在 iframe 内正常展示
- 宿主页面浏览器控制台中未出现 iframe 拦截相关报错
方案边界
- 本方案是纯嵌入展示方案
- 不包含父子页面回调能力
- 不包含支付状态实时前端通知能力
- 不包含自动关闭弹窗或自动跳转商户页能力
