快速入门指南
10分钟快速上手Chaindoc。本指南同时涵盖网页界面操作与开发者API集成。
面向最终用户
先决条件
Chaindoc账户(免费注册请访问chaindoc.io) 一份可签名的文件(PDF、DOC或图像格式) 签署人的电子邮件地址
分步指南:创建首个签名
1注册请访问app.chaindoc.io创建免费账户。请完成邮箱验证。
2上传文档点击"新建文档"并上传文件。支持PDF、Office文档、图片(单个文件不超过50MB)。
3添加文档详情输入文档名称、描述及标签以便分类管理。选择访问权限级别(私有、团队或公开)。
4创建签名请求点击"请求签名",添加收件人邮箱,设置截止日期,并自定义消息。
5配置签名流程选择签名顺序(并行或顺序),根据需要启用KYC,选择通知偏好设置。
6发送请求审核并发送。收件人将收到含安全签名链接的邮件。
7跟踪进度实时监控签名状态。当收集到签名时接收通知。
8下载已签名文件完成后,下载带有区块链证书的签名文件。
成功!
本文件经区块链验证确保真实性 所有相关方均持有签署文件的副本 不可变的审计轨迹已创建 具有法律约束力的合规签名
开发者须知
通过我们的REST API和SDK将Chaindoc集成到你的应用程序中。
1. 获取 API 密钥
需提交商业计划书
访问API需订阅商业版套餐 在控制面板中导航至 设置 → API 访问 为前端创建公钥(pk_),为后端创建私钥(sk_)
2. 安装 SDK
根据使用场景选择SDK:
# Node.js 18+ required
npm install @chaindoc_io/server-sdk3. 通过API创建您的首个文档
server.ts
import { Chaindoc } from '@chaindoc_io/server-sdk';
import { readFile } from 'fs/promises';
// Initialize SDK
const chaindoc = new Chaindoc({
secretKey: process.env.CHAINDOC_SECRET_KEY!,
});
// 1. Upload document
const buffer = await readFile('./contract.pdf');
const file = new Blob([buffer], { type: 'application/pdf' });
const { media } = await chaindoc.media.upload([file]);
// 2. Create document record
const doc = await chaindoc.documents.create({
name: 'Service Agreement',
description: 'Q4 2024 Contract',
media: media[0],
status: 'published', // Triggers blockchain verification
hashtags: ['#contract', '#2024'],
meta: [{ key: 'client', value: 'Acme Corp' }],
});
console.log('Document created:', doc.documentId);4. 创建签名请求
server.ts
// Create signature request for multiple signers
const sigRequest = await chaindoc.signatures.createRequest({
versionId: doc.document.versions[0].uuid,
recipients: [
{ email: 'signer1@example.com' },
{ email: 'signer2@example.com' },
],
deadline: new Date('2024-12-31'),
message: 'Please review and sign this agreement',
embeddedFlow: true, // Enable for frontend integration
});
console.log('Signature request created:', sigRequest.signatureRequest.uuid);5. 集成签名界面(前端)
在您的网络应用中进行嵌入式签名时:
// Create embedded session for signer
const session = await chaindoc.embedded.createSession({
email: 'signer1@example.com',
metadata: {
documentId: doc.documentId,
signatureRequestId: sigRequest.signatureRequest.uuid,
},
});
// Return sessionId to frontend
res.json({ sessionId: session.sessionId });6. 状态追踪与事件处理
terminal
// Check signature request status
const status = await chaindoc.signatures.getRequestStatus(
sigRequest.signatureRequest.uuid
);
if (status.signatureRequest.status === 'completed') {
console.log('All signatures collected!');
// Download signed document
// Send notifications
// Update your database
}7. 设置 Webhook(可选)
接收事件实时通知:
webhooks.ts
// Configure webhook endpoint
app.post('/webhooks/chaindoc', (req, res) => {
const event = req.headers['x-webhook-event'];
const payload = req.body;
switch (event) {
case 'document.verified':
console.log('Document verified on blockchain:', payload.txHash);
break;
case 'signature.request.completed':
console.log('All signatures collected!');
// Send notifications, update status, etc.
break;
}
res.status(200).send('OK');
});完整工作流示例
以下是一个整合所有步骤的完整端到端示例:
complete-workflow.ts
import { Chaindoc } from '@chaindoc_io/server-sdk';
import { readFile } from 'fs/promises';
async function createSigningWorkflow() {
const chaindoc = new Chaindoc({
secretKey: process.env.CHAINDOC_SECRET_KEY!,
});
// Step 1: Upload document
const buffer = await readFile('./contract.pdf');
const file = new Blob([buffer], { type: 'application/pdf' });
const { media } = await chaindoc.media.upload([file]);
// Step 2: Create document
const doc = await chaindoc.documents.create({
name: 'Service Agreement',
description: 'Contract for consulting services',
media: media[0],
status: 'published',
hashtags: ['#contract'],
meta: [],
});
// Step 3: Create signature request
const sigRequest = await chaindoc.signatures.createRequest({
versionId: doc.document.versions[0].uuid,
recipients: [{ email: 'signer@example.com' }],
deadline: new Date('2024-12-31'),
embeddedFlow: true,
});
// Step 4: Create session for frontend
const session = await chaindoc.embedded.createSession({
email: 'signer@example.com',
metadata: {
documentId: doc.documentId,
signatureRequestId: sigRequest.signatureRequest.uuid,
},
});
return {
documentId: doc.documentId,
sessionId: session.sessionId,
};
}
// Usage
const { documentId, sessionId } = await createSigningWorkflow();
console.log('Ready for signing:', { documentId, sessionId });后续步骤
- 请阅读安装指南以获取详细的SDK配置说明
- 探索 API 文档以获取完整的端点参考
- 查阅SDK文档获取框架特有的示例(React、Vue、Angular)
- 设置Webhooks以获取实时事件通知
- 审查生产环境部署的安全最佳实践
专业技巧
开发时请使用沙盒环境(pk_test_/sk_test_) 将API密钥存储在环境变量中,切勿写入代码 开发期间启用调试模式以获取详细日志 先用小文件测试以熟悉工作流程 加入我们的GitHub社区获取代码示例和技术支持
常见问题
区块链验证需要多长时间?
区块链验证通常在1-5分钟内完成,具体取决于网络状况。文件可立即获取,验证过程异步进行。
是否可以在不订阅付费方案的情况下进行测试?
是的!免费套餐包含网页界面访问权限。API访问需订阅商业套餐,但您可使用沙盒环境进行测试。
签名是否具有法律约束力?
是的,Chaindoc签名符合eIDAS、ESIGN法案及UETA法规要求。区块链验证可提供额外的法律证据。
支持哪些文件格式?
PDF、DOC、DOCX、XLS、XLSX、PPT、PPTX、TXT、JPG、PNG、GIF、WEBP、SVG、MP4、AVI、MOV、WMV。最大文件大小:50MB。