Implémentation Node.js du SDK API Ignisign
Cette documentation vous guide à travers l'implémentation Node.js du SDK API Ignisign, simplifiant l'intégration de l'API Ignisign avec votre backend.
Pré-requis
Avant de commencer, assurez-vous d'avoir une clé API et des points de terminaison webhook définis. Des instructions détaillées pour les configurer sont disponibles dans la section Intégrer Ignisign avec votre Backend.
Installation
Installez la bibliothèque via npm :
npm install @ignisign/sdk
En outre, envisagez d'installer le package @ignisign/public
, qui inclut tous les types utilisés par la bibliothèque. Bien qu'il s'agisse d'une dépendance transitive de @ignisign/sdk
et non obligatoire, l'installer directement peut améliorer votre expérience de développement, notamment pour les mécanismes d'importation IDE.
npm install @ignisign/public
Exemple d'Intégration
Trouvez un exemple d'intégration dans ce répertoire GitHub.
Initier la Classe IgnisignSdk
Commencez par initier la classe IgnisignSdk
:
import { IgnisignSdk } from "@ignisign/sdk"
const ignisignSdkInstance = new IgnisignSdk({
appId: IGNISIGN_APP_ID,
appEnv: (<IGNISIGN_APPLICATION_ENV>IGNISIGN_APP_ENV),
appSecret: IGNISIGN_APP_SECRET,
displayWarning: true,
});
Trouvez votre appId
, appEnv
, et appSecret
dans la section "API Keys" de la Console Ignisign.
L'environnement d'application
doit être l'un des suivants :
enum IGNISIGN_APPLICATION_ENV {
DEVELOPMENT = "DEVELOPMENT",
STAGING = "STAGING",
PRODUCTION = "PRODUCTION",
}
Appels API Faciles
La classe IgnisignSdk
expose tous les points de terminaison API sous forme de méthodes pour un accès facile.
- Un exemple d'implémentation est disponible ici,
- Et une description complète des points de terminaison API se trouve dans la Documentation API Ignisign.
Exemple d'Implémentation
async function createNewSigner(
signatureProfileId,
inputs: { [key in IGNISIGN_SIGNER_CREATION_INPUT_REF] ?: string } = {},
externalId: string = null): Promise<IgnisignSigner_CreationResponseDto> {
const dto: IgnisignSigner_CreationRequestDto = {
signatureProfileId,
...inputs,
...(externalId && {externalId})
};
try {
return await ignisignSdkInstance.createSigner(dto);
} catch (error) {
console.error(error.toString());
throw error;
}
}
Lier Votre Point de Terminaison Webhook au SDK Ignisign
Connectez facilement votre point de terminaison webhook au SDK Ignisign :
router.post('/v1/ignisign-webhook', async (req, res, next) => {
try {
const result = await IgnisignSdkManagerSignatureService.consumeWebhook(req.body);
jsonSuccess(res, result);
} catch (e) {
next(e);
}
});
Le SDK gère la vérification de la signature du webhook et appelle la méthode de rappel appropriée en fonction du type de webhook.
Enregistrement des Callbacks Webhook
Vous pouvez enregistrer des callbacks pour divers événements webhook, comme décrit dans la Documentation des Événements Webhook.
Exemple d'Enregistrement de Callback Webhook :
const exampleWebhookCallback = async (
webhookContext: IgnisignWebhookDto,
error: IgnisignError = null,
msgNature?: IGNISIGN_WEBHOOK_MESSAGE_NATURE,
action?: IGNISIGN_WEBHOOK_ACTION_SIGNATURE_REQUEST,
topic?: IGNISIGN_WEBHOOK_TOPICS
): Promise<boolean> => {
console.log("Received webhook", webhookContext, topic, action, msgNature);
return true;
};
await ignisignSdkInstance.registerWebhookCallback(
exampleWebhookCallback,
IGNISIGN_WEBHOOK_TOPICS.SIGNATURE,
IGNISIGN_WEBHOOK_ACTION_SIGNATURE.FINALIZED
);
Enregistrement Simplifié des Callbacks Webhook Communs
Pour simplifier l'implémentation des callbacks webhook fréquemment utilisés, nous avons introduit une série de fonctions "raccourci". Ces fonctions offrent un moyen plus efficace de gérer les scénarios webhook courants. Voici une liste de ces fonctions :
registerWebhookCallback_Signature(
callback: IgnisignWebhook_Callback<IgnisignWebhookDto_Signature>,
action?: IGNISIGN_WEBHOOK_ACTION_SIGNATURE
): Promise<string>;
registerWebhookCallback_SignatureSession(
callback: IgnisignWebhook_Callback<IgnisignWebhookDto_SignatureSession>,
action?: IGNISIGN_WEBHOOK_ACTION_SIGNATURE_SESSION
): Promise<string>;
registerWebhookCallback_DocumentRequest(
callback: IgnisignWebhook_Callback<IgnisignWebhookDto_DocumentRequest>,
action?: IGNISIGN_WEBHOOK_ACTION_DOCUMENT_REQUEST
): Promise<string>;
registerWebhookCallback_SignatureRequest(
callback: IgnisignWebhook_Callback<IgnisignWebhookDto_SignatureRequest>,
action?: IGNISIGN_WEBHOOK_ACTION_SIGNATURE_REQUEST
): Promise<string>;
registerWebhookCallback_SignatureProfile(
callback: IgnisignWebhook_Callback<IgnisignWebhookDto_SignatureProfile>,
action?: IGNISIGN_WEBHOOK_ACTION_SIGNATURE_PROFILE
): Promise<string>;
registerWebhookCallback_Signer(
callback: IgnisignWebhook_Callback<IgnisignWebhookDto_Signer>,
action?: IGNISIGN_WEBHOOK_ACTION_SIGNER
): Promise<string>;
registerWebhookCallback_SignatureProof(
callback: IgnisignWebhook_Callback<IgnisignWebhookDto_SignatureProof>,
action?: IGNISIGN_WEBHOOK_ACTION_SIGNATURE_PROOF
): Promise<string>;
registerWebhookCallback_SignatureImageGenerated(
callback: IgnisignWebhook_Callback<IgnisignWebhookDto_SignatureImage>,
action?: IGNISIGN_WEBHOOK_ACTION_SIGNATURE_IMAGE
): Promise<string>;
registerWebhookCallback_Application(
callback: IgnisignWebhook_Callback<IgnisignWebhookDto_Application>,
action?: IGNISIGN_WEBHOOK_ACTION_APPLICATION
): Promise<string>;
Exemple d'Implémentation
Voici un exemple pour illustrer comment ces fonctions raccourci peuvent être implémentées :
const webhookHandler_SignatureRequest = async (
content: IgnisignWebhookDto_SignatureRequest,
error: IgnisignError = null,
msgNature?: IGNISIGN_WEBHOOK_MESSAGE_NATURE,
action?: IGNISIGN_WEBHOOK_ACTION_SIGNATURE_REQUEST,
topic?: IGNISIGN_WEBHOOK_TOPICS
): Promise<any> => {
if (msgNature === IGNISIGN_WEBHOOK_MESSAGE_NATURE.ERROR) {
console.error("handleSignatureRequestWebhookSigners ERROR : ", error);
return;
}
console.log("handleSignatureRequestWebhookSigners : ", content);
};
await ignisignSdkInstance.registerWebhookCallback_SignatureRequest(
webhookHandler_SignatureRequest,
IGNISIGN_WEBHOOK_ACTION_SIGNATURE_REQUEST.LAUNCHED
);