Краткое руководство

Начни работать с Chaindoc меньше чем за 10 минут. Это руководство рассказывает как про веб-интерфейс, так и про интеграцию API для разработчиков.

Для конечных пользователей

Пошаговая инструкция: твоя первая подпись

1ЗарегистрируйсяЗаведи бесплатный аккаунт на app.chaindoc.io. Подтверди свой адрес электронной почты.

2Загрузить документНажми «Новый документ» и загрузи свой файл. Поддерживаются PDF, документы Office, изображения (до 50 МБ).

3Добавь детали документаВведите название документа, описание и теги для упорядочивания. Выберите уровень доступа (личный, для команды или общедоступный).

4Создать запрос на подписьНажмите «Запросить подписи», добавьте адреса электронной почты получателей, установите срок и настройте сообщение.

5Настройте поток подписейВыберите порядок подписи (параллельный или последовательный), включите KYC, если нужно, выберите настройки уведомлений.

6Отправить запросПросмотрите и отправьте. Получатели получат электронное письмо с безопасной ссылкой для подписания.

7Отслеживайте прогрессСледи за статусом подписания в реальном времени. Получай уведомления, когда подписи будут собраны.

8Скачать подписанный документКогда всё готово, скачай подписанный документ с сертификатом блокчейна.

Для разработчиков

Добавьте Chaindoc в свое приложение с помощью нашего REST API и SDK.

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. Настройка веб-хуков (необязательно)

Получайте уведомления о событиях в реальном времени:

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).
  • Настройте веб-хуки для уведомлений о событиях в реальном времени
  • Просмотрите рекомендации по безопасности для развертывания в производственной среде.

Часто задаваемые вопросы

Сколько времени занимает проверка блокчейна?

Проверка блокчейна обычно занимает 1–5 минут, в зависимости от сети. Документы доступны сразу, проверка происходит асинхронно.

Можно ли протестировать без платного тарифа?

Да! Бесплатный план включает доступ к веб-интерфейсу. Для доступа к API нужен бизнес-план, но для тестирования можно использовать тестовую среду.

Подписи имеют юридическую силу?

Да, подписи Chaindoc соответствуют требованиям eIDAS, ESIGN Act и UETA. Проверка блокчейна дает дополнительные юридические доказательства.

Какие форматы файлов поддерживаются?

PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, TXT, JPG, PNG, GIF, WEBP, SVG, MP4, AVI, MOV, WMV. Максимальный размер файла: 50 МБ.