इंस्टॉलेशन
Chaindoc SDKs को अपने प्रोजेक्ट में लाएं। दो पैकेज हैं: Server SDK बैकएंड काम के लिए (दस्तावेज़, हस्ताक्षर, वेरिफिकेशन) और Embed SDK आपके फ्रंटएंड में साइनिंग UI डालने के लिए।
शुरू करने से पहले
अगर अभी तक आपके पास अकाउंट नहीं है, तो quick start guide से शुरू करें ताकि एक सेट अप हो सके।
Server SDK
Server SDK बैकएंड पर सब कुछ संभालता है: दस्तावेज़ बनाना, signature requests भेजना, टीमों का प्रबंधन, और blockchain verification ट्रिगर करना। यह REST API के चारों ओर एक पतला wrapper है, इसलिए अगर आपने API docs पढ़े हैं, तो method names परिचित लगेंगे।
पैकेज इंस्टॉल करें
npm install @chaindoc_io/server-sdkएनवायरनमेंट वेरिएबल्स सेट अप करें
अपने प्रोजेक्ट root में `.env` फाइल बनाएं। यहाँ आपको अपनी secret key चाहिए होगी।
# Production keys
CHAINDOC_SECRET_KEY=sk_live_xxxxxxxxxxxxx
# Staging/Testing keys
# CHAINDOC_SECRET_KEY=sk_test_xxxxxxxxxxxxx
# Optional: Custom API endpoint
# CHAINDOC_API_URL=https://api.chaindoc.ioSDK इनिशियलाइज़ करें
import { Chaindoc } from '@chaindoc_io/server-sdk';
// Basic initialization
export const chaindoc = new Chaindoc({
secretKey: process.env.CHAINDOC_SECRET_KEY!,
});
// Advanced configuration
export const chaindocAdvanced = new Chaindoc({
secretKey: process.env.CHAINDOC_SECRET_KEY!,
baseUrl: process.env.CHAINDOC_API_URL, // Optional
timeout: 60000, // 60 seconds
retry: {
maxRetries: 5,
baseDelayMs: 1000,
maxDelayMs: 10000,
},
headers: {
'X-Custom-Header': 'value',
},
});Basic config अधिकांश प्रोजेक्ट्स के लिए काफी है। Retry settings को ट्यून करना सार्थक है अगर आप बैच में बहुत सारे दस्तावेज़ प्रोसेस कर रहे हैं, क्योंकि API में rate limits हैं।
अपने कनेक्शन को वेरिफाई करें
// Test API connection
const health = await chaindoc.healthCheck();
if (health.status === 'ok' && health.apiKeyValid) {
console.log('Connected to Chaindoc API');
console.log('User ID:', health.userId);
} else {
console.error('Connection failed');
}अगर यह fail होता है, तो यह सुनिश्चित करें कि आपकी secret key `sk_live_` (production) या `sk_test_` (sandbox) से शुरू होती है। सबसे आम समस्या गलती से public key का उपयोग करना है।
Embed SDK
Embed SDK आपको अपने web app के अंदर Chaindoc signing interface दिखाने देता है। आपके users आपकी साइट छोड़े बिना दस्तावेज़ साइन करते हैं। यह React, Vue, Angular, या plain JavaScript के साथ काम करता है।
पैकेज इंस्टॉल करें
npm install @chaindoc_io/embed-sdkCDN विकल्प quick prototypes या बिना build step वाली साइट्स के लिए handy है। Production के लिए, npm package का उपयोग करें ताकि आपको tree-shaking और proper version control मिले।
एनवायरनमेंट वेरिएबल्स सेट अप करें
Embed SDK आपकी public key (`pk_`) का उपयोग करता है, जो client-side code में शामिल करने के लिए सुरक्षित है।
# .env.local
REACT_APP_CHAINDOC_PUBLIC_KEY=pk_live_xxxxx
# or for Next.js
NEXT_PUBLIC_CHAINDOC_PUBLIC_KEY=pk_live_xxxxxअपने ऐप में इनिशियलाइज़ करें
// hooks/useChaindoc.ts
import { useRef, useEffect } from 'react';
import { ChaindocEmbed } from '@chaindoc_io/embed-sdk';
export function useChaindoc() {
const sdkRef = useRef<ChaindocEmbed | null>(null);
useEffect(() => {
sdkRef.current = new ChaindocEmbed({
publicKey: process.env.REACT_APP_CHAINDOC_PUBLIC_KEY!,
environment: 'production',
});
return () => {
sdkRef.current?.destroy();
};
}, []);
return sdkRef.current;
}फ्रेमवर्क-विशिष्ट सेटअप
ये उदाहरण दिखाते हैं कि प्रत्येक फ्रेमवर्क में Embed SDK को provider या service के रूप में कैसे wire up करें। अगर आप backend पर Server SDK का उपयोग कर रहे हैं, तो आपको provider की आवश्यकता नहीं है; बस इसे जहाँ आवश्यक हो वहाँ import करें।
Next.js (App Router)
'use client';
import { createContext, useContext, useEffect, useRef } from 'react';
import { ChaindocEmbed } from '@chaindoc_io/embed-sdk';
const ChaindocContext = createContext<ChaindocEmbed | null>(null);
export function ChaindocProvider({ children }: { children: React.ReactNode }) {
const sdkRef = useRef<ChaindocEmbed | null>(null);
useEffect(() => {
if (!sdkRef.current) {
sdkRef.current = new ChaindocEmbed({
publicKey: process.env.NEXT_PUBLIC_CHAINDOC_PUBLIC_KEY!,
});
}
return () => {
sdkRef.current?.destroy();
};
}, []);
return (
<ChaindocContext.Provider value={sdkRef.current}>
{children}
</ChaindocContext.Provider>
);
}
export const useChaindoc = () => useContext(ChaindocContext);Next.js (Pages Router)
import type { AppProps } from 'next/app';
import { useEffect, useRef } from 'react';
import { ChaindocEmbed } from '@chaindoc_io/embed-sdk';
export default function App({ Component, pageProps }: AppProps) {
const sdkRef = useRef<ChaindocEmbed | null>(null);
useEffect(() => {
sdkRef.current = new ChaindocEmbed({
publicKey: process.env.NEXT_PUBLIC_CHAINDOC_PUBLIC_KEY!,
});
return () => {
sdkRef.current?.destroy();
};
}, []);
return <Component {...pageProps} />;
}Nuxt 3
import { ChaindocEmbed } from '@chaindoc_io/embed-sdk';
export default defineNuxtPlugin(() => {
const config = useRuntimeConfig();
const chaindoc = new ChaindocEmbed({
publicKey: config.public.chaindocPublicKey,
});
return {
provide: {
chaindoc,
},
};
});Angular
import { Injectable, OnDestroy } from '@angular/core';
import { ChaindocEmbed } from '@chaindoc_io/embed-sdk';
import { environment } from '../environments/environment';
@Injectable({
providedIn: 'root'
})
export class ChaindocService implements OnDestroy {
private sdk: ChaindocEmbed;
constructor() {
this.sdk = new ChaindocEmbed({
publicKey: environment.chaindocPublicKey,
});
}
getSdk(): ChaindocEmbed {
return this.sdk;
}
ngOnDestroy(): void {
this.sdk.destroy();
}
}TypeScript कॉन्फ़िगरेशन
दोनों SDKs पूर्ण TypeScript definitions के साथ आते हैं। आपको कोई extra `@types` पैकेज की आवश्यकता नहीं है।
{
"compilerOptions": {
"target": "ES2020",
"module": "ESNext",
"moduleResolution": "bundler",
"lib": ["ES2020", "DOM", "DOM.Iterable"],
"types": ["node"],
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true
}
}अगर आप पुराने TypeScript सेटअप (< 5.0) पर हैं, तो `"bundler"` के बजाय `"moduleResolution": "node"` का उपयोग करें।
डेवलपमेंट बनाम प्रोडक्शन
डेवलपमेंट के दौरान test keys का उपयोग करें ताकि आप गलती से real documents न बनाएं या actual recipients को signature emails न भेजें।
डेवलपमेंट सेटअप
// Use test keys for development
const chaindoc = new Chaindoc({
secretKey: 'sk_test_xxxxx',
baseUrl: 'https://api.chaindoc.io',
});
const embed = new ChaindocEmbed({
publicKey: 'pk_test_xxxxx',
environment: 'staging',
debug: true, // Enable detailed logs
});`debug: true` flag console में request/response details प्रिंट करता है। यह noisy है, लेकिन उपयोगी है जब आप पता लगा रहे हैं कि कुछ क्यों काम नहीं कर रहा है।
प्रोडक्शन सेटअप
// Use live keys for production
const chaindoc = new Chaindoc({
secretKey: process.env.CHAINDOC_SECRET_KEY!, // sk_live_xxxxx
});
const embed = new ChaindocEmbed({
publicKey: process.env.NEXT_PUBLIC_CHAINDOC_PUBLIC_KEY!, // pk_live_xxxxx
environment: 'production',
});अपने इंस्टॉलेशन को वेरिफाई करें
ये checks चलाएं ताकि यह सुनिश्चित हो सके कि सब कुछ सही तरह से wired up है:
1SDK version चेक करेंअपने ऐप में `console.log(ChaindocEmbed.version)` चलाएं। अगर यह एक version number प्रिंट करता है, तो पैकेज सही तरह से इंस्टॉल हुआ है।
2API connection टेस्ट करेंअपने backend से `chaindoc.healthCheck()` कॉल करें। एक successful response का अर्थ है कि आपकी secret key valid है और API reachable है।
3एक file upload आज़माएं`chaindoc.media.upload()` का उपयोग करके एक छोटी test PDF अपलोड करें। यह पुष्टि करता है कि auth, networking और file handling सब काम करते हैं।
4Signing UI खोलेंEmbed SDK को इनिशियलाइज़ करें और test session के साथ `openSignatureFlow()` कॉल करें। अगर modal दिखाई देता है, तो आप तैयार हैं।
समस्या निवारण
"Module not found" एरर
इसका अर्थ आमतौर पर है कि पैकेज सही तरह से इंस्टॉल नहीं हुआ है या cached version conflict है। सब कुछ clear करें और reinstall करें:
# npm
rm -rf node_modules package-lock.json
npm install
# yarn
rm -rf node_modules yarn.lock
yarn installTypeScript type errors
सुनिश्चित करें कि आपके पास Node.js types इंस्टॉल हैं और आपकी `tsconfig.json` सही module resolution का उपयोग करती है। अधिकांश issues mismatched `moduleResolution` settings से आते हैं।
npm install --save-dev @types/nodeAPI key errors
अगर आपको 401 या 403 responses मिल रहे हैं, तो यहाँ जांचने योग्य चीजें हैं:
- 401 Unauthorized का अर्थ है कि key invalid या expired है। इसे अपने dashboard में regenerate करें।
- 403 Forbidden का अर्थ है कि आपके plan में API access शामिल नहीं है। आपको Business plan की आवश्यकता है।
- सुनिश्चित करें कि आप सही key type का उपयोग कर रहे हैं: `pk_` keys Embed SDK (frontend) के लिए हैं, `sk_` keys Server SDK (backend) के लिए हैं। इन्हें मिलाना सबसे आम गलती है।
- Test keys (`_test_`) केवल sandbox के विरुद्ध काम करती हैं। Live keys (`_live_`) production पर hit करती हैं।
आगे क्या करें
अब जब SDKs इंस्टॉल हो गए हैं, तो अपना अगला कदम चुनें:
- Quick start — 10 मिनट में अपना पहला signature request भेजें
- API documentation — उदाहरणों के साथ पूर्ण endpoint reference
- SDKs — उन्नत SDK features और प्रति-फ्रेमवर्क guides
- Webhooks — real-time event notifications सेट अप करें
- Security best practices — live जाने से पहले क्या configure करें