Développeur OneSpan Sign : Notification d'événements par rappel - Partie 5

Duo Liang,

Dans les entrées précédentes de cette série, nous avons montré comment configurer une application Web et répondre aux notifications de rappel de OneSpan Sign. Dans ce blog, nous allons atteindre le même objectif avec Node.js en suivant les flux recommandés dans la partie 2.

Notification d'événement par rappel en action

Avant de commencer un projet Node.js, assurez-vous d'avoir effectué les opérations suivantes :

  • Inscrivez-vous aux notifications d'événements : Avant que le système OneSpan Sign puisse vous notifier un événement, vous devez activer les notifications. Suivez ce guide des fonctionnalités pour savoir comment vous inscrire. Dans notre exemple, nous nous enregistrerons simplement à partir du portail Web.
  • Node.js : Node.js est disponible pour Windows, Mac et Linux. Téléchargez le programme d'installation.
  • Téléchargez Ngrok

Le code

Téléchargez le code source complet. N'hésitez pas à importer directement la solution ou à copier toutes les classes nécessaires dans votre projet existant.

L'entrée principale du projet est le fichier listener.js, où nous démarrons le serveur et écoutons les connexions sur le port 3800.

app.listen(portToListenOn, () => {
  console.log(`Listening for OneSpan Sign notifications on port ${portToListenOn}. Started ${new Date().toString()}`) ;
}) ;

Nous allons exposer une route API pour gérer les demandes de rappel envoyées par OneSpan Sign. Voyez le code ci-dessous pour traiter la notification d'événement.

app.post('/event', (req, res) => {
  const callbakKey = req.get('Authorization') ;
  const payload = req.body ;

  console.log('callback key : '+callbakKey) ;
  console.log('payload : '+ JSON.stringify(payload)) ;

  if(payload.name == 'PACKAGE_COMPLETE'){
  	oss.downloadZippedDocument(payload) ;
  }
  console.log('c'est ici') ;
  res.send('OK') ;
}) ;

Une fois que tous les documents d'un paquet ont été signés et que le paquet est terminé, OneSpan Sign envoie une requête POST à l'URL enregistrée avec l'exemple suivant de charge utile JSON :

{
  "@class" : "com.silanis.esl.packages.event.ESLProcessEvent",
  "name" : "PACKAGE_COMPLETE",
  "sessionUser" : "0787be84-f095-44c7-ba00-787093df86fc",
  "packageId" : "KHiRfOXgKK0gpVWwwpFOSNy6o34=",
  "message" : null,
  "documentId" : null
}

Dans le code ci-dessus, toute requête POST ciblant la route "/event" sera traitée par la fonction de service ci-dessous :

const ossFunctions = module.exports = 
{
  downloadZippedDocument : async function (payload) 
  {
  	const options = 
  	{ 
  		method : 'GET',
		url : API_URL+'/packages/' + payload.packageId + '/documents/zip',
		headers : 
		{
		    accept : 'application/zip',
		    authorization : 'Basic ' + API_KEY}
	} ;

	const file_path = FILE_SAVE_PATH+'/package_' + payload.packageId + '_'+ Date.now()+'.zip' ;

	request(options)
	  .pipe(fs.createWriteStream(file_path))
	  .on('close', function () {
	    console.log('File written!') ;
	  }) ;
  }
} ;

Dans cet exemple, nous allons simplement télécharger le document signé dans un fichier zip et le stocker à l'emplacement de votre choix.

Effectuez un test

Exécutez votre serveur local avec Node.js en ouvrant une invite de commande et en changeant le répertoire courant dans lequel vous avez enregistré votre fichier "listener.js". Ensuite, entrez :

node listener.js

Ouvrez une invite de commande et changez le répertoire à l'endroit où vous avez sauvegardé votre exécutable Ngrok. Entrez la commande suivante :

ngrok http [port] -host-header="localhost :[port]"

Ensuite, connectez-vous à votre compte OneSpan Sign, accédez à la page Admin et modifiez le domaine de votre URL de rappel.

Enfin, créez, envoyez et complétez un paquet test. Vous devriez pouvoir visualiser les documents signés sous forme de fichier zippé à l'emplacement de votre choix. Au moment où OneSpan Sign envoie une notification de rappel à votre auditeur, vous verrez le message ci-dessous dans votre console de sortie.

8-10-1

Si vous avez des questions sur ce blog ou sur l'intégration de OneSpan Sign dans votre application, visitez les forums de la communauté des développeurs. Vos commentaires nous intéressent !

Parcourez l'intégralité de la série de blogs :

- Notification d'événement par callback - Partie 1
- Notification d'événement par rappel - Partie 2
- Notification d'événement de rappel - Partie 3
- Notification d'un événement de rappel - Partie 4