Clink JavaScript SDK 用于在浏览器应用中拉起 Clink Checkout,支持整页跳转和嵌入式 checkout 两种模式,并通过 publishable key 初始化。Documentation Index
Fetch the complete documentation index at: https://docs.clinkbill.com/llms.txt
Use this file to discover all available pages before exploring further.
NPM Package
在 npmjs.com 查看该包
Create Checkout Session
先在你的后端创建 checkout session,再拉起 checkout。
Checkout Session Guide
了解 hosted checkout 的完整工作流程。
安装
使用你偏好的包管理器从 npm 安装:dist/index.umd.js,加载后通过 window 上的 Clink.loadClink(...) 使用。
初始化
使用 publishable key 初始化 SDK:pk_test_*、pk_uat_* 和 pk_prod_*。
如果你已经明确知道最终 checkout host,也可以直接传入 checkoutBaseUrl 跳过 bootstrap:
初始化参数
checkoutEnvironment:sandbox或production。未传checkoutBaseUrl时会使用它checkoutBaseUrl:直接指定 checkout host。传入后会跳过 bootstraplocale:会透传给 bootstrap 请求origin:覆盖当前站点 originfetchImpl:为非浏览器运行环境提供自定义fetch
checkoutBaseUrl 时,SDK 会按以下顺序确定 bootstrap 环境:
checkoutEnvironmentCLINK_ENV
CLINK_ENV=sandbox 会映射到 https://uat-api.clinkbill.com/api/sdk/bootstrap,CLINK_ENV=production 会映射到 https://api.clinkbill.com/api/sdk/bootstrap。
Redirect Checkout
如果你希望由 Clink 接管整页支付流程,可以使用 redirect 模式。redirectToCheckout 支持以下参数:
sessionParam:优先使用sessionId:只有 session ID 时可用replace:使用window.location.replace(...)而不是assign(...)
sessionParam 和 sessionId,会优先使用 sessionParam。
Embedded Checkout
如果你希望支付流程停留在当前页面中,可以使用嵌入式 checkout。fetchSession 必须在你的后端创建 checkout session,并返回最终的 checkout URL。对于嵌入式 checkout,创建 session 时需要传 uiMode: 'elements'。当 uiMode 为 elements 时,returnUrl 为必填,Clink 会在返回你的站点前将 {ELEMENTS_SESSION_ID} 替换为创建出的 session ID。SDK 会原样挂载返回的 URL,不会改写其中的 query 参数。
嵌入式参数
fetchSession:必填。必须返回{ sessionId, checkoutUrl, orderId? }onEvent:接收 checkout 生命周期事件autoResize:自动处理 iframe 高度变化。默认:trueautoDestroyOnComplete:支付成功后自动销毁实例。默认:truepollStatus:可选的轮询函数,用于判断终态pollIntervalMs:轮询间隔,单位毫秒。默认:2000
嵌入式实例 API
mount(container):挂载到 CSS selector 或HTMLElementunmount():移除 iframe,但保留实例可复用destroy():彻底销毁实例on(type, handler):订阅指定事件getState():返回{ mounted, destroyed }
事件与状态
嵌入式 checkout 会触发以下事件:| Event | Description |
|---|---|
ready | checkout iframe 已就绪或已完成加载 |
resize | iframe 请求更新高度 |
state_change | checkout 状态发生变化 |
complete | 到达终态 |
hosted_return | hosted checkout 将控制权返回父页面 |
error | SDK 或轮询过程出现错误 |
paymentpendingsuccesscancellederrorexpired
complete:支付已经进入终态,可能来自 checkout 页面本身,也可能来自pollStatus的兜底确认hosted_return:hosted success/cancel 页把控制权交还父页面,适合做 UI 收口或页面跳转error:SDK 或轮询过程报错,不一定表示支付进入失败终态
Bootstrap 环境控制
SDK 支持通过CLINK_ENV 固定远端 bootstrap 环境:
CLINK_ENV=sandbox→https://uat-api.clinkbill.com/api/sdk/bootstrapCLINK_ENV=production→https://api.clinkbill.com/api/sdk/bootstrap
checkoutEnvironment 与 CLINK_ENV 保持一致,直接使用 sandbox / production。
优先级如下:
loadClink(..., { checkoutBaseUrl })loadClink(..., { checkoutEnvironment })CLINK_ENV
错误处理
当参数校验、bootstrap 或嵌入式 checkout 初始化失败时,SDK 会抛出ClinkError。
INVALID_PUBLIC_KEYINVALID_CHECKOUT_ENVBOOTSTRAP_REQUEST_FAILEDINVALID_BOOTSTRAP_RESPONSEINVALID_REDIRECT_PARAMSINVALID_EMBEDDED_OPTIONSINVALID_SESSION_IDSESSION_ID_FETCH_FAILEDEMBEDDED_CHECKOUT_DISABLEDCONTAINER_NOT_FOUNDNOT_IN_BROWSER