能力说明
接入 SDK 通过安全 iframe 在商户页面中展示以下信息:- 卡号(PAN)
- 有效期(EXP)
- CVV
- 卡信息复制按钮
SDK 地址
请根据当前环境选择对应的 SDK 地址。开发和联调阶段请使用沙盒环境 SDK;正式上线时,请替换为生产环境 SDK。
获取 integrity 校验值
沙盒 SDK 的 integrity 哈希需要从以下地址获取:
https://paysdk.keysecure.io/Sbox/0.0.1/integrity.json
正式 SDK 的 integrity 哈希需要从以下地址获取:
https://paysdk.keysecure.io/SDK/prod/0.0.1/integrity.json
返回格式示例:
files["index.min.js"] 的完整值复制到 <script> 标签的 integrity 属性中。
引入 SDK
在 HTML 页面中加入以下<script> 标签,即可引入沙盒环境 SDK:
接入前准备
报备页面来源
在商户后台报备所有会嵌入 SDK 的页面 origin,例如:- 必须使用 HTTPS。
- 必须填写精确 origin,不支持
*.merchant.com通配符。 - 如果商户后台未显示报备入口,请联系 KeySecure 技术支持。
- 未报备的页面可能被 Content Security Policy(CSP)阻止加载。
后端获取 Client Access Token
Client Access Token 必须由商户后端获取。请勿在浏览器中暴露Api-Key、Access-Token 或其他服务端凭据。
data.client_access_token 透传给前端。详细参数见颁发 PCI Client Access Token。
前端接入
准备容器
初始化 SDK
销毁和重排
同一个 token 重复调用
bootstrap 时,SDK 会先执行对应的销毁操作再重建组件。由于 token 为一次性凭据,业务侧仍应避免重复初始化,并在需要重新加载时申请新 token。
API 配置参考
错误处理
初始化错误
callbackEvents.onFailure(error) 中可读取 error.code:
复制错误
onCopyFailure(error) 中可读取 error.code:
样式自定义
出于安全考虑,styles 仅支持以下 CSS 属性,其他属性会被忽略:
接入自检清单
- 页面 origin 已完成报备,并且与实际 HTTPS 页面完全一致
- SDK 地址与当前环境一致
-
integrity使用对应 SDK 文件的最新 SRI 哈希 - Client Access Token 由后端获取,前端不持有服务端凭据
- token 未被记录、持久化或重复使用
- 复制按钮容器设置了
position: relative和明确尺寸 - 敏感页面响应设置了
Cache-Control: no-store, no-cache - 页面卸载或退出敏感视图时调用了
widget.destroy() - 已处理初始化和复制失败回调
安全约束
- 不要尝试从 DOM、网络请求或 SDK 内部消息中读取明文卡数据。
- 不要将 Client Access Token 写入数据库、Cookie、日志或分析事件。
- 避免将卡信息页面放入多层 iframe,以免父来源校验失败。
- 不要在敏感页面运行录屏、会话回放或不必要的第三方分析脚本。
- 不要监听、构造或复用 SDK 内部通信通道。
浏览器兼容性
常见问题
页面提示违反frame-ancestors CSP 策略
确认当前页面 origin 已完成报备。报备后重新获取 Client Access Token,再重新初始化 SDK。
一直收到 TOKEN_INVALID
token 为一次性凭据。检查 React Strict Mode、SPA 路由切换或重复渲染是否触发了两次初始化,并在组件卸载时调用 widget.destroy()。
点击复制按钮没有反应
确认复制容器设置了 position: relative,并且宽高不为 0。Clipboard API 需要用户手势触发,不要通过定时器模拟点击。
iframe 显示空白
检查浏览器 Network 和 Console 面板,确认请求未返回 403、容器处于可见状态,并排查 CSP 或 Permissions Policy 拦截。
如仍无法解决,请将浏览器、SDK 地址、错误码及复现步骤提供给 KeySecure 技术支持。不要在工单或聊天中提供 Client Access Token、完整卡号或 CVV。