快速入门指南

10分钟快速上手Chaindoc。本指南同时涵盖网页界面操作与开发者API集成。

面向最终用户

分步指南:创建首个签名

1注册请访问app.chaindoc.io创建免费账户。请完成邮箱验证。

2上传文档点击"新建文档"并上传文件。支持PDF、Office文档、图片(单个文件不超过50MB)。

3添加文档详情输入文档名称、描述及标签以便分类管理。选择访问权限级别(私有、团队或公开)。

4创建签名请求点击"请求签名",添加收件人邮箱,设置截止日期,并自定义消息。

5配置签名流程选择签名顺序(并行或顺序),根据需要启用KYC,选择通知偏好设置。

6发送请求审核并发送。收件人将收到含安全签名链接的邮件。

7跟踪进度实时监控签名状态。当收集到签名时接收通知。

8下载已签名文件完成后,下载带有区块链证书的签名文件。

开发者须知

通过我们的REST API和SDK将Chaindoc集成到你的应用程序中。

1. 获取 API 密钥

2. 安装 SDK

根据使用场景选择SDK:

# Node.js 18+ required
npm install @chaindoc_io/server-sdk

3. 通过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以获取实时事件通知
  • 审查生产环境部署的安全最佳实践

常见问题

区块链验证需要多长时间?

区块链验证通常在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。