从零开始完成闪链签企业集成,包含环境准备、快速开始、集成流程和最佳实践
欢迎使用闪链签开放平台!本指南面向企业开发者,帮助您在最短时间内将电子签章能力集成至自有业务系统。
闪链签提供 RESTful API、多语言 SDK 及 Webhook 回调通知,覆盖以下核心能力:
建议在沙箱环境(api-test.flashsign.cn)完成所有开发和测试,验证通过后再切换至生产环境。沙箱环境完全免费,接口与生产环境一致。
访问闪链签官网(www.flashsign.cn)注册账号,并完成企业实名认证。认证通过后,您将获得「开发者中心」的访问权限。
登录控制台,进入「开发者中心」→「应用管理」,点击「创建应用」:
每个企业最多创建 3 个应用。建议为测试环境和生产环境分别创建独立应用。AppSecret 仅在创建时展示一次,请务必立即保存。
请勿将 AppSecret 硬编码在客户端代码中或提交至版本控制系统。建议通过环境变量、Vault 等密钥管理服务安全存储。
闪链签提供两种集成方式:
| 方式 | 适用场景 | 开发成本 |
|---|---|---|
| 使用 SDK(推荐) | 标准业务场景,快速集成 | 低 — SDK 封装了签名、请求、错误处理 |
| 直接调用 API | 定制化需求,非标准语言环境 | 中 — 需自行实现签名和请求逻辑 |
支持的 SDK 语言及安装方式:
| 语言 | 安装方式 | 最低版本 |
|---|---|---|
| Java | Maven: cn.flashsign:flashsign-sdk | JDK 8+ |
| Python | pip install flashsign-sdk | Python 3.8+ |
| Node.js | npm install flashsign-sdk | Node.js 16+ |
| Go | go get github.com/flashsign/flashsign-sdk-go | Go 1.19+ |
| PHP | composer require flashsign/sdk | PHP 8.0+ |
以 Node.js SDK 为例,演示在 5 分钟内完成首次 API 调用。完整示例代码可在 GitHub(github.com/flashsign/examples)获取。
npm install flashsign-sdkconst FlashSignClient = require('flashsign-sdk');
const client = new FlashSignClient({
appKey: process.env.FLASHSIGN_APP_KEY,
appSecret: process.env.FLASHSIGN_APP_SECRET,
env: 'sandbox', // 沙箱环境;上线时改为 'production'
});const fs = require('fs');
const contract = await client.createContract({
contractName: '技术服务协议',
contractFile: fs.readFileSync('./contract.pdf').toString('base64'),
contractFileName: 'contract.pdf',
signers: [
{
name: '张三',
phone: '13800138000',
role: 'signer', // 'signer' | 'approver' | 'cc'
signType: 'seal', // 'seal' | 'signature'
},
],
signOrder: 1, // 1=顺序签署 2=并行签署
expireAt: '2025-02-15', // 签署截止日期
});
console.log('合同创建成功,编号:', contract.data.contractId);const status = await client.getContractStatus({
contractId: 'CT202501150001',
});
console.log('签署状态:', status.data.status);
// draft(草稿) | pending(待签署) | signed(已完成) | expired(已过期) | cancelled(已取消)const file = await client.downloadContract({
contractId: 'CT202501150001',
format: 'pdf', // 'pdf' | 'ofd'
});
fs.writeFileSync('./signed-contract.pdf', Buffer.from(file.data.content, 'base64'));
console.log('合同下载完成');企业集成闪链签的典型流程分为四个阶段,总周期约为 7-17 天:
切换生产环境前请务必:① 所有测试用例通过 ② 回调 URL 可公网访问 ③ 错误监控和告警已配置 ④ 密钥已安全存储。
为保证 API 调用安全,每次请求都需携带签名。闪链签使用 HMAC-SM3 算法计算请求签名,服务端以同样方式计算并比对,防止请求被篡改或伪造。
| Header | 必填 | 说明 |
|---|---|---|
| Content-Type | 是 | 固定值 application/json |
| X-FlashSign-AppId | 是 | 应用 ID |
| X-FlashSign-Timestamp | 是 | 请求时间戳(毫秒) |
| X-FlashSign-Nonce | 是 | 随机字符串(防重放) |
| X-FlashSign-Signature | 是 | 请求签名值 |
// 签名计算实现
const crypto = require('crypto');
function calculateSign(params, secret) {
// 1. 按 key 排序
const keys = Object.keys(params).sort();
// 2. 拼接参数字符串
const queryStr = keys
.map(k => `${k}=${params[k]}`)
.join('&');
// 3. 追加 secret
const signStr = queryStr + '&secret=' + secret;
// 4. SM3 哈希
const hash = crypto.createHash('sm3');
hash.update(signStr);
return hash.digest('hex');
}SDK 已内置签名计算和自动续签逻辑。仅在自行实现 HTTP 调用时才需关注上述细节。
闪链签通过 Webhook 机制向您的服务端推送事件通知,包括签署完成、签署状态变更、认证结果等。
在「开发者中心」→「回调配置」中设置回调 URL。回调地址必须是公网可访问的 HTTPS URL,建议为不同环境配置不同的回调地址。
| 事件 | 触发时机 | 说明 |
|---|---|---|
| contract.signed | 合同签署完成 | 所有签署方均完成签署 |
| contract.status-changed | 合同状态变更 | 草稿→待签署→已完成→已过期等 |
| signer.signed | 单个签署方完成 | 某个签署方完成签署操作 |
| signer.refused | 签署方拒签 | 签署方拒绝签署合同 |
| identity.verified | 实名认证通过 | 个人/企业实名认证审核通过 |
每次回调请求都会携带签名(算法与 API 请求签名一致),请在接收回调时验证签名,确保请求来自闪链签服务端。
回调地址需在 5 秒内返回 HTTP 200 确认接收。如超时或返回非 200,闪链签将按指数退避策略重试(最多 3 次)。请确保回调处理逻辑实现了幂等性。
/** 带指数退避的 API 调用包装器 */
async function callWithRetry(fn, options = {}) {
const { maxRetries = 3, baseDelay = 1000 } = options;
for (let attempt = 0; attempt <= maxRetries; attempt++) {
try {
return await fn();
} catch (error) {
// 不可重试的错误直接抛出
if (!error.isRetryable || attempt === maxRetries) {
throw error;
}
// 指数退避:1s, 2s, 4s
const delay = baseDelay * Math.pow(2, attempt);
console.warn(`API call failed, retrying in ${delay}ms...`);
await new Promise(r => setTimeout(r, delay));
}
}
}沙箱环境和生产环境的 API 接口完全一致,区别在于:① 域名不同(api-test vs api)② 密钥独立管理 ③ 沙箱签署的合同不具备法律效力,仅供测试使用。开发完成后,只需修改域名和密钥即可切换至生产环境。
默认限制为 100 次/秒/应用。如需更高并发,请联系商务团队申请提额。建议在业务侧做好本地调用控制和缓存,避免因瞬时高峰触发限流。
支持 PDF、Word (.doc/.docx)、OFD 格式。单个文件不超过 50MB。大于 5MB 的文件建议使用分片上传接口以提高上传稳定性。
先创建合同模板并标记变量占位符,再调用批量创建接口传入数据列表(Excel 导入或 JSON 数组),系统自动生成多份合同并发起签署。单次批量上限为 500 份。
支持。闪链签为金融、政务等对数据安全有特殊要求的企业提供私有化部署方案。详情请联系商务团队或拨打 400-6690-636。
可通过以下渠道获取技术支持:① 查看 API 文档和错误码文档 ② 在开发者社区(developers.flashsign.cn)搜索或提问 ③ 提交工单(控制台 → 工单中心) ④ 拨打技术支持热线 400-6690-636(工作日 9:00-18:00)。