Pour télécharger l'exemple complet de code, consultez notre site Partage de code.

Vous pouvez utiliser les Callback Event Notifications pour être informé des événements qui se produisent dans votre compte OneSpan Sign. Les rappels résolvent le problème de l'interrogation des informations en vous permettant d'enregistrer une URL qui sera notifiée chaque fois qu'un événement se produit dans votre compte. Lorsqu'un événement se produit (par exemple, lorsqu'une transaction est terminée), OneSpan Sign crée un objet JSON qui contient des informations telles que le type d'événement et les données associées à cet événement. OneSpan Sign envoie ensuite l'objet JSON à l'URL figurant dans les paramètres de notification de rappel de votre compte via une requête HTTP POST.

Vous pouvez trouver une liste complète de tous les types d'Callback Event dans la section Configuration des notifications de rappel.

Il est fortement recommandé d'utiliser un écouteur de rappel (Callback Listener) au lieu d'interroger les statuts de transaction. L'utilisation de l'interrogation peut consommer des ressources inutiles tant de votre côté que du côté du service OneSpan Sign.

Inscription aux notifications d'événements

Bien que vous puissiez suivre les instructions détaillées dans la section Configuration des notifications par rappel, pour les besoins de cet exemple, nous utiliserons l'interface Web OneSpan Sign. Pour obtenir plus d'informations, consultez Notifications d'événements.

OneSpan Sign permet aux intégrateurs d'être automatiquement informés des événements qui concernent leur compte. Lors d'événements sélectionnés, le système émet automatiquement des messages vers une destination choisie par l'intégrateur. Avant que OneSpan Sign ne vous informe d'un événement, vous devez vous inscrire pour en être informé.

Pour configurer les notifications d'événements sur votre compte :

  1. Cliquez sur Admin > Notifications d'événements.
  2. Saisissez une URL de rappel. Ce champ est obligatoire.
  3. Sélectionnez votre méthode d'authentification. Selon la méthode sélectionnée, différentes configurations peuvent être définies :
    1. Aucun : Seule une URL de rappel est requise.
    2. Basique : Saisissez une clé de rappel sécurisée.
    3. OAuth2.0 : Si OAuth 2.0 est sélectionné, des configurations supplémentaires sont nécessaires :
      • ID du client : Configuré dans votre serveur d'autorisation pour l'application.
      • Secret du client : Configuré dans votre serveur d'autorisation pour l'application.
      • URL du serveur d'autorisation : URL de votre serveur d'autorisation pour l'application.
      • Champ d'application : Permet de limiter l'accès à un compte, configuré dans le serveur d'autorisation de l'application. Ces informations doivent être fournies par l'utilisateur.
  4. En option,
  5. Activez les types d'événements pour lesquels vous souhaitez être notifié. Par défaut, les notifications pour tous les types d'événements sont désactivées.
  6. Cliquez sur Enregistrer.
  7. Si vous avez changé d'avis et souhaitez désactiver toutes les notifications d'événements, cliquez sur RÉTABLIR.

    Si vous souhaitez activer la notification d'événements à l'aide de OAuth Refresh Token Flow, vous devez le faire en utilisant une API. Notez que nous ne prenons actuellement en charge cette méthode que sur Salesforce.

Préalables

Pour effectuer ces procédures, vous aurez besoin des éléments suivants :

  • Eclipse IDE pour les développeurs Java EE : Vous pouvez le télécharger ici.
  • SDK Java de OneSpan Sign : Vous pouvez le télécharger à partir de notre portail communautaire. Ou alternativement, vous pouvez les importer de notre dépôt Maven en utilisant les commandes suivantes :
    <dependency>
    	<groupId>com.silanis.esl</groupId>
    	<artifactId>sdk</artifactId>
    	<version>11.21</version>
    </dependency>
  • Ngrok : Afin de recevoir des notifications d'événements de rappel, vous aurez besoin d'une URL accessible publiquement pour travailler. Votre serveur hôte local seul ne fonctionnera pas. Ngrok est un outil très simple et facile à utiliser qui crée un tunnel sécurisé sur votre machine locale ainsi qu'une URL publique que vous pouvez utiliser pour naviguer sur votre site local. Cela vous évite d'avoir à déployer votre application Web.
  • Ngrok ne doit être utilisé qu'à des fins de test et de développement. Il ne doit pas être utilisé dans un environnement production.

Traitement d'une notification d'événement

Dans cet exemple, un simple projet de Servlet sera construit. Vous pouvez également importer directement le code source en tant que projet Maven existant, ou copier et coller tous les fichiers et codes nécessaires dans votre projet Servlet existant.

La servlet est nécessaire pour traiter les demandes de rappel envoyées par OneSpan Sign. L'exemple de code suivant crée un contrôleur d'action pour traiter les notifications d'événements. Dans cet exemple, la méthode doPost() est utilisée pour intercepter les requêtes HTTP POST.

L'étape finale consiste à renvoyer un HTTP status code 2xx à OneSpan Sign pour indiquer que vous avez bien reçu le rappel, avant que la demande de rappel n'expire dans 20 secondes (ce qui peut varier selon les instances). Notez que si votre fonction de service a un flux de travail complexe et consommera la requête pendant une longue période, il est préférable d'utiliser une méthode asynchrone. Cela évitera de provoquer une erreur de dépassement de délai.

public class CallbackController extends HttpServlet {
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		resp.setContentType("text/html");
		resp.setStatus(HttpServletResponse.SC_OK);
		StringBuilder builder = new StringBuilder();
		String aux = "";
		while ((aux = req.getReader().readLine()) != null) {
			builder.append(aux);
		}
		
		String text = builder.toString();
		System.out.println("callback content:" + text);
		String callbackAuthorization = req.getHeader("Authorization");
		System.out.println("callback authorization: " + callbackAuthorization);
		
		//check callback key, if applicable
		//============
		
		try {
			JSONObject json = new JSONObject(text);
			String eventName = json.getString("name");
			final String packageId = json.getString("packageId");
			System.out.println("package ID: "+packageId);
			
			if("PACKAGE_COMPLETE".equals(eventName)) {
				new Thread(new Runnable() {
					public void run() {
						try {
							new DownloadDocumentsService().download(packageId);
						} catch (IOException e) {
							e.printStackTrace();
						}
					}
				}).start();
			}
		} catch (JSONException e) {
			e.printStackTrace();
		}
	}
}

Faire une requête POST

La clé de rappel enregistrée est transmise par le biais de l'en-tête Autorisation en tant que Basic {callbackKey}. Cela permet de s'assurer que vous ne recevez que les notifications qui contiennent le secret partagé. Une fois que tous les documents d'un paquet ont été signés et que le paquet est terminé, OneSpan Sign fait une demande POST à l'URL enregistrée. Voici un exemple de données utiles JSON :

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

Le sessionUser ci-dessus fait référence à l'Id du signataire, il est donc recommandé de définir l'Id personnalisé (dans le SDK) ou l'Id du signataire (dans le REST) lors de la création du signataire et de le stocker dans votre base de données locale. Ensuite, l'identifiant du paquet sera utilisé pour télécharger les documents signés. Une classe de service se chargera de cette logique commerciale, en utilisant ce code.

public class DownloadDocumentsService {
	public void download(String packageId) throws IOException{
		
		EslClient eslClient = new EslClient("API_KEY", "https://sandbox.esignlive.com/api");
		
		byte[] documents = eslClient.downloadZippedDocuments(new PackageId(packageId));
		
		FileOutputStream stream = new FileOutputStream("your_file_path\\documents_" + packageId + ".zip");
		
		try {
		    stream.write(documents);
		} finally {
		    stream.close();
		}
	}
}

Ce code utilise eslClient pour télécharger les documents signés.

Mappage de votre contrôleur de Servlet à la route de rappel

Enfin, vous devrez modifier votre fichier web.xml pour vous assurer que vous avez bien associé le contrôleur de Servlet à la route /callback. Voici à quoi devrait ressembler votre fichier web.xml :

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>Callback Listener Demo</display-name>
   <servlet>
    <servlet-name>CallbackController</servlet-name>
    <servlet-class>com.ossDemo.CallbackController</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>CallbackController</servlet-name>
    <url-pattern>/callback</url-pattern>
  </servlet-mapping>
</web-app>

Exécution de votre code

Pour exécuter votre code, utilisez la procédure suivante :

  1. Dans votre Project Explore, cliquez avec le bouton droit de la souris sur le projet de servlet créé ci-dessus, et sélectionnez Exécuter en tant que > Exécuter sur le serveur.
  2. Cliquez sur Terminer.
  3. Ouvrez une invite de commande et changez le répertoire à l'endroit où vous avez enregistré votre exécutable ngrok . Saisissez la commande suivante :
    ngrok http [port] -host-header="localhost:[port]"

    Voici ce que vous pouvez vous attendre à voir après avoir exécuté cette commande :

    1-2

  4. Connectez-vous à votre compte OneSpan Sign et accédez à la page Admin.
  5. Dans le champ URL de rappel, saisissez l'URL de votre écouteur de rappel. Par exemple, https://4255b9d0.ngrok.io/CallbackListenerDemo/callback
  6. Saisissez une clé de rappel et inscrivez-vous à l'événement Transaction.
  7. Créez, envoyez et terminez une transaction de test. Vous devriez être en mesure de visualiser les documents signés sous forme de fichier compressés à l'endroit où vous avez choisi de l'enregistrer dans la classe Downloaddocumentservice.java. Une fois que OneSpan Sign aura envoyé une notification de rappel à votre écouteur, vous verrez quelque chose de semblable à ceci dans la console de votre IDE :

    Capture

Pour télécharger l'exemple complet de code, consultez notre site Partage de code.

Vous pouvez utiliser les Callback Event Notifications pour être informé des événements qui se produisent dans votre compte OneSpan Sign. Les rappels résolvent le problème de l'interrogation des informations en vous permettant d'enregistrer une URL qui sera notifiée chaque fois qu'un événement se produit dans votre compte. Lorsqu'un événement se produit (par exemple, lorsqu'une transaction est terminée), OneSpan Sign crée un objet JSON qui contient des informations telles que le type d'événement et les données associées à cet événement. OneSpan Sign envoie ensuite l'objet JSON à l'URL figurant dans les paramètres de notification de rappel de votre compte via une requête HTTP POST.

Vous pouvez trouver une liste complète de tous les types d'Callback Event dans la section Configuration des notifications de rappel.

Il est fortement recommandé d'utiliser un écouteur de rappel (Callback Listener) au lieu d'interroger les statuts de transaction. L'utilisation de l'interrogation peut consommer des ressources inutiles tant de votre côté que du côté du service OneSpan Sign.

Inscription aux notifications d'événements

Bien que vous puissiez suivre les instructions détaillées dans la section Configuration des notifications par rappel, pour les besoins de cet exemple, nous utiliserons l'interface Web OneSpan Sign. Pour obtenir plus d'informations, consultez Notifications d'événements.

OneSpan Sign permet aux intégrateurs d'être automatiquement informés des événements qui concernent leur compte. Lors d'événements sélectionnés, le système émet automatiquement des messages vers une destination choisie par l'intégrateur. Avant que OneSpan Sign ne vous informe d'un événement, vous devez vous inscrire pour en être informé.

Pour configurer les notifications d'événements sur votre compte :

  1. Cliquez sur Admin > Notifications d'événements.
  2. Saisissez une URL de rappel. Ce champ est obligatoire.
  3. Sélectionnez votre méthode d'authentification. Selon la méthode sélectionnée, différentes configurations peuvent être définies :
    1. Aucun : Seule une URL de rappel est requise.
    2. Basique : Saisissez une clé de rappel sécurisée.
    3. OAuth2.0 : Si OAuth 2.0 est sélectionné, des configurations supplémentaires sont nécessaires :
      • ID du client : Configuré dans votre serveur d'autorisation pour l'application.
      • Secret du client : Configuré dans votre serveur d'autorisation pour l'application.
      • URL du serveur d'autorisation : URL de votre serveur d'autorisation pour l'application.
      • Champ d'application : Permet de limiter l'accès à un compte, configuré dans le serveur d'autorisation de l'application. Ces informations doivent être fournies par l'utilisateur.
  4. En option,
  5. Activez les types d'événements pour lesquels vous souhaitez être notifié. Par défaut, les notifications pour tous les types d'événements sont désactivées.
  6. Cliquez sur Enregistrer.
  7. Si vous avez changé d'avis et souhaitez désactiver toutes les notifications d'événements, cliquez sur RÉTABLIR.

    Si vous souhaitez activer la notification d'événements à l'aide de OAuth Refresh Token Flow, vous devez le faire en utilisant une API. Notez que nous ne prenons actuellement en charge cette méthode que sur Salesforce.

Préalables

Pour effectuer ces procédures, vous aurez besoin des éléments suivants :

  • Eclipse IDE pour les développeurs Java EE : Vous pouvez le télécharger ici.
  • SDK Java de OneSpan Sign : Vous pouvez le télécharger à partir de notre portail communautaire. Ou alternativement, vous pouvez les importer de notre dépôt Maven en utilisant les commandes suivantes :
    <dependency>
    	<groupId>com.silanis.esl</groupId>
    	<artifactId>sdk</artifactId>
    	<version>11.21</version>
    </dependency>
  • Ngrok : Afin de recevoir des notifications d'événements de rappel, vous aurez besoin d'une URL accessible publiquement pour travailler. Votre serveur hôte local seul ne fonctionnera pas. Ngrok est un outil très simple et facile à utiliser qui crée un tunnel sécurisé sur votre machine locale ainsi qu'une URL publique que vous pouvez utiliser pour naviguer sur votre site local. Cela vous évite d'avoir à déployer votre application Web.
  • Ngrok ne doit être utilisé qu'à des fins de test et de développement. Il ne doit pas être utilisé dans un environnement production.

Traitement d'une notification d'événement

Dans cet exemple, un projet Spring Boot utilisant Spring Asynchronous Methods sera construit. Vous pouvez également importer directement le code source en tant que projet Maven existant, ou copier et coller tous les fichiers et codes nécessaires dans votre projet Servlet existant.

Pour obtenir plus d'informations, reportez-vous aux tutoriels officiels intitulés Building a RESTful Web Service with Spring Boot et Creating Asynchronous Methods.

Ce projet est nécessaire pour gérer les demandes de rappel envoyées par OneSpan Sign. L'exemple de code suivant crée un contrôleur d'action pour traiter les notifications d'événements. Dans cet exemple, la méthode doPost() est utilisée pour intercepter les requêtes HTTP POST.

L'étape finale consiste à renvoyer un HTTP status code 2xx à OneSpan Sign pour indiquer que vous avez bien reçu le rappel, avant que la demande de rappel n'expire dans 20 secondes (ce qui peut varier selon les instances). Notez que si votre fonction de service a un flux de travail complexe et consommera la requête pendant une longue période, il est préférable d'utiliser une méthode asynchrone. Cela évitera de provoquer une erreur de dépassement de délai.

@RestController
public class CallbackController {
	@Autowired
	private OssCallbackService ossCallbackService;
	@PostMapping("/callback")
	@ResponseStatus(HttpStatus.OK)
	public void callback(@RequestBody OssCallbackVo ossCallbackVo, @RequestHeader("Authorization") String callbackKey) {
		System.out.println("receive a callback notification!");
		// 1. check callback key
		if (callbackKey != null) {
			System.out.println("callback key: " + callbackKey);
			if (!ossCallbackService.validateCallbackKey(callbackKey)) {
				throw new RuntimeException("Callback key is not valid: " + callbackKey);
			}
		}
		System.out.println("callback body: " + ossCallbackVo);
		// 2. handle callback asynchronously
		try {
			ossCallbackService.handleCallback(ossCallbackVo);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Faire une requête POST

La clé de rappel enregistrée est transmise par le biais de l'en-tête Autorisation en tant que Basic {callbackKey}. Cela permet de s'assurer que vous ne recevez que les notifications qui contiennent le secret partagé. Une fois que tous les documents d'un paquet ont été signés et que le paquet est terminé, OneSpan Sign fait une demande POST à l'URL enregistrée. Voici un exemple de données utiles JSON :

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

Le sessionUser ci-dessus fait référence à l'Id du signataire, il est donc recommandé de définir l'Id personnalisé (dans le SDK) ou l'Id du signataire (dans le REST) lors de la création du signataire et de le stocker dans votre base de données locale. Ensuite, l'identifiant du paquet sera utilisé pour télécharger les documents signés. Une classe de service se chargera de cette logique commerciale, en utilisant ce code.

@Service
public class OssCallbackService {
	@Autowired
	private OssConfiguration ossConfiguration;
	public boolean validateCallbackKey(String callbackKey) {
		if (callbackKey != null) {
			String base64Credentials = callbackKey.substring("Basic".length()).trim();
			return ossConfiguration.CALLBACK_KEY.equals(base64Credentials);
		} else {
			return false;
		}
	}
	@Async("asyncExecutor")
	public void handleCallback(OssCallbackVo ossCallbackVo) {
		switch (OssCallbackEvents.valueOf(ossCallbackVo.getName())) {
		case DOCUMENT_SIGNED:
			break;
		case EMAIL_BOUNCE:
			break;
		case KBA_FAILURE:
			break;
		case PACKAGE_ACTIVATE:
			break;
		case PACKAGE_ARCHIVE:
			break;
		case PACKAGE_ATTACHMENT:
			break;
		case PACKAGE_COMPLETE:
			process_PACKAGE_COMPLETE(ossCallbackVo);
			break;
		case PACKAGE_CREATE:
			break;
		case PACKAGE_DEACTIVATE:
			break;
		case PACKAGE_DECLINE:
			break;
		case PACKAGE_DELETE:
			break;
		case PACKAGE_EXPIRE:
			break;
		case PACKAGE_OPT_OUT:
			break;
		case PACKAGE_READY_FOR_COMPLETION:
			break;
		case PACKAGE_RESTORE:
			break;
		case PACKAGE_TRASH:
			break;
		case ROLE_REASSIGN:
			break;
		case SIGNER_COMPLETE:
			break;
		case SIGNER_LOCKED:
			break;
		case TEMPLATE_CREATE:
			break;
		default:
			break;
		}
	}
	private void process_PACKAGE_COMPLETE(OssCallbackVo ossCallbackVo) {
		EslClient eslClient = new EslClient(ossConfiguration.API_KEY, ossConfiguration.API_URL);
		String packageId = ossCallbackVo.getPackageId();
		byte[] documents = eslClient.downloadZippedDocuments(new PackageId(packageId));
		String filePath = ossConfiguration.FILE_SAVE_PATH + "\\documents_" + packageId + "_"
				+ new SimpleDateFormat("yyyy_MM_dd").format(new Date()) + ".zip";
		Files.saveTo(documents, filePath);
	}
	
	
	private void process_DOCUMENT_SIGNED(OssCallbackVo ossCallbackVo) {
	}
	private void process_SIGNER_COMPLETE(OssCallbackVo ossCallbackVo) {
	}
	private void process_PACKAGE_TRASH(OssCallbackVo ossCallbackVo) {
	}
	private void process_PACKAGE_READY_FOR_COMPLETION(OssCallbackVo ossCallbackVo) {
	}
}

Nous avons laissé les fonctions souches gérer tous les événements de rappel disponibles. Dans cet exemple, l'événement « PAQUET_COMPLET » a été surveillé et a déclenché la fonction de service correspondante. Ensuite, eslClient a été utilisé pour télécharger les documents signés.

Mise à jour de vos fichiers de propriétés

Toutes vos configurations liées à OneSpan Sign sont stockées dans un fichier oss.properties. Avant d'exécuter votre code, vous devez mettre à jour ce fichier pour y inclure vos propres informations :

OSS_API_KEY={api_key}
OSS_API_URL={api_url}
OSS_FILE_SAVE_PATH={file_save_path}
OSS_CALLBACK_KEY={callback_key}

Exécution de votre code

Pour exécuter votre code, utilisez la procédure suivante :

  1. Exécutez la fonction principale dans votre classe Application.java.
  2. Ouvrez une invite de commande et changez l'emplacement du répertoire pour l'emplacement de votre exécutable ngrok.
  3. Saisissez la commande suivante :
    ngrok http [port] -host-header="localhost:[port]"

    Voici ce que vous pouvez vous attendre à voir après avoir exécuté la commande :

    1-2

  4. Connectez-vous à votre compte OneSpan Sign et accédez à la page Admin.
  5. Dans le champ URL de rappel, saisissez l'URL de votre écouteur de rappel. Par exemple, https://4255b9d0.ngrok.io/CallbackListenerDemo/callback
  6. Saisissez une clé de rappel et inscrivez-vous à l'événement Transaction.
  7. Créez, envoyez et terminez une transaction de test. Vous devriez être en mesure de visualiser les documents signés sous forme de fichier compressés à l'endroit où vous avez choisi de l'enregistrer dans la classe Downloaddocumentservice.java. Une fois que OneSpan Sign aura envoyé une notification de rappel à votre écouteur, vous verrez quelque chose de semblable à ceci dans la console de votre IDE :

    Capture

Pour télécharger l'exemple complet de code, consultez notre site Partage de code.

Vous pouvez utiliser les Callback Event Notifications pour être informé des événements qui se produisent dans votre compte OneSpan Sign. Les rappels résolvent le problème de l'interrogation des informations en vous permettant d'enregistrer une URL qui sera notifiée chaque fois qu'un événement se produit dans votre compte. Lorsqu'un événement se produit (par exemple, lorsqu'une transaction est terminée), OneSpan Sign crée un objet JSON qui contient des informations telles que le type d'événement et les données associées à cet événement. OneSpan Sign envoie ensuite l'objet JSON à l'URL figurant dans les paramètres de notification de rappel de votre compte via une requête HTTP POST.

Vous pouvez trouver une liste complète de tous les types d'Callback Event dans la section Configuration des notifications de rappel.

Il est fortement recommandé d'utiliser un écouteur de rappel (Callback Listener) au lieu d'interroger les statuts de transaction. L'utilisation de l'interrogation peut consommer des ressources inutiles tant de votre côté que du côté du service OneSpan Sign.

Inscription aux notifications d'événements

Bien que vous puissiez suivre les instructions détaillées dans la section Configuration des notifications par rappel, pour les besoins de cet exemple, nous utiliserons l'interface Web OneSpan Sign. Pour obtenir plus d'informations, consultez Notifications d'événements.

OneSpan Sign permet aux intégrateurs d'être automatiquement informés des événements qui concernent leur compte. Lors d'événements sélectionnés, le système émet automatiquement des messages vers une destination choisie par l'intégrateur. Avant que OneSpan Sign ne vous informe d'un événement, vous devez vous inscrire pour en être informé.

Pour configurer les notifications d'événements sur votre compte :

  1. Cliquez sur Admin > Notifications d'événements.
  2. Saisissez une URL de rappel. Ce champ est obligatoire.
  3. Sélectionnez votre méthode d'authentification. Selon la méthode sélectionnée, différentes configurations peuvent être définies :
    1. Aucun : Seule une URL de rappel est requise.
    2. Basique : Saisissez une clé de rappel sécurisée.
    3. OAuth2.0 : Si OAuth 2.0 est sélectionné, des configurations supplémentaires sont nécessaires :
      • ID du client : Configuré dans votre serveur d'autorisation pour l'application.
      • Secret du client : Configuré dans votre serveur d'autorisation pour l'application.
      • URL du serveur d'autorisation : URL de votre serveur d'autorisation pour l'application.
      • Champ d'application : Permet de limiter l'accès à un compte, configuré dans le serveur d'autorisation de l'application. Ces informations doivent être fournies par l'utilisateur.
  4. En option,
  5. Activez les types d'événements pour lesquels vous souhaitez être notifié. Par défaut, les notifications pour tous les types d'événements sont désactivées.
  6. Cliquez sur Enregistrer.
  7. Si vous avez changé d'avis et souhaitez désactiver toutes les notifications d'événements, cliquez sur RÉTABLIR.

    Si vous souhaitez activer la notification d'événements à l'aide de OAuth Refresh Token Flow, vous devez le faire en utilisant une API. Notez que nous ne prenons actuellement en charge cette méthode que sur Salesforce.

Préalables

Pour effectuer ces procédures, vous aurez besoin des éléments suivants :

  • Visual Studio Community 2017 : Microsoft Visual Studio Community 2017. Si vous ne l'avez pas encore, vous pouvez télécharger la version communautaire gratuitement, ici.
  • SDK .NET de OneSpan Sign : Vous pouvez le télécharger à partir de notre portail communautaire.
  • Ngrok : Afin de recevoir des notifications d'événements de rappel, vous aurez besoin d'une URL accessible publiquement pour travailler. Votre serveur hôte local seul ne fonctionnera pas. Ngrok est un outil très simple et facile à utiliser qui crée un tunnel sécurisé sur votre machine locale ainsi qu'une URL publique que vous pouvez utiliser pour naviguer sur votre site local. Cela vous évite d'avoir à déployer votre application Web.
  • Ngrok ne doit être utilisé qu'à des fins de test et de développement. Il ne doit pas être utilisé dans un environnement production.

Traitement d'une notification d'événement

Dans cet exemple, vous devrez créer un nouveau projet d'application API Web ASP.NET. Une fois que votre projet a été créé, ajoutez un nouveau contrôleur et nommez-le CallbackController. Ce projet est nécessaire pour gérer les demandes de rappel envoyées par OneSpan Sign. L'exemple de code suivant crée un contrôleur d'action pour traiter les notifications d'événements.

L'étape finale consiste à renvoyer un HTTP status code 2xx à OneSpan Sign pour indiquer que vous avez bien reçu le rappel, avant que la demande de rappel n'expire dans 20 secondes (ce qui peut varier selon les instances). Notez que si votre fonction de service a un flux de travail complexe et consommera la requête pendant une longue période, il est préférable d'utiliser une méthode asynchrone. Cela évitera de provoquer une erreur de dépassement de délai.

    public class CallbackController : ApiController
    {
        // POST api/
        public ActionResult Post(JObject jsonResult)
        {
            #region "check callback key if applicable"
            string callbackKey = Request.Headers.GetValues("Authorization").First();
            Debug.WriteLine("callback key: "+callbackKey);
            #endregion
            #region "Extract data from request"
            string name = jsonResult["name"].ToString();
            string sessionUser = jsonResult["sessionUser"].ToString();
            string packageId = jsonResult["packageId"].ToString();
            string message = jsonResult["message"].ToString();
            string documentId = jsonResult["documentId"].ToString();
            string createdDate = jsonResult["createdDate"].ToString();
            OssCallbackVo ossCallbackVo = new OssCallbackVo
            {
                Name = name,
                SessionUser = sessionUser,
                PackageId = packageId,
                Message = message,
                DocumentId = documentId,
                CreatedDate = createdDate
            };
            Debug.WriteLine("callback payload: " + jsonResult.ToString());
            #endregion
            #region "process callback"
            OssCallbackHandler callbackHandlder = new OssCallbackHandler();
            Task.Run(async () => await callbackHandlder.ProcessOssCallback(ossCallbackVo));
            #endregion
            return new HttpStatusCodeResult(200);
        }
    }

Faire une requête POST

La clé de rappel enregistrée est transmise par le biais de l'en-tête Autorisation en tant que Basic {callbackKey}. Cela permet de s'assurer que vous ne recevez que les notifications qui contiennent le secret partagé. Une fois que tous les documents d'un paquet ont été signés et que le paquet est terminé, OneSpan Sign fait une demande POST à l'URL enregistrée. Voici un exemple de données utiles JSON :

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

Le sessionUser ci-dessus fait référence à l'Id du signataire, il est donc recommandé de définir l'Id personnalisé (dans le SDK) ou l'Id du signataire (dans le REST) lors de la création du signataire et de le stocker dans votre base de données locale. Ensuite, l'identifiant du paquet sera utilisé pour télécharger les documents signés. Une classe de service se chargera de cette logique commerciale, en utilisant ce code.

    public class OssCallbackHandler
    {
        #region Oss Callback Handler
        public Task ProcessOssCallback(OssCallbackVo ossCallbackVo)
        {
            switch (ossCallbackVo.Name)
            {
                case C.OssCallbackEvents.PACKAGE_CREATE:
                    break;
                case C.OssCallbackEvents.PACKAGE_ACTIVATE:
                    OssCallback_PACKAGE_ACTIVATE(ossCallbackVo);
                    break;
                case C.OssCallbackEvents.PACKAGE_DEACTIVATE:
                    break;
                case C.OssCallbackEvents.PACKAGE_READY_FOR_COMPLETION:
                    break;
                case C.OssCallbackEvents.PACKAGE_COMPLETE:
                    OssCallback_PACKAGE_COMPLETE(ossCallbackVo);
                    break;
                case C.OssCallbackEvents.PACKAGE_TRASH:
                    break;
                case C.OssCallbackEvents.PACKAGE_RESTORE:
                    break;
                case C.OssCallbackEvents.PACKAGE_DELETE:
                    break;
                case C.OssCallbackEvents.PACKAGE_DECLINE:
                    break;
                case C.OssCallbackEvents.PACKAGE_EXPIRE:
                    break;
                case C.OssCallbackEvents.PACKAGE_OPT_OUT:
                    break;
                case C.OssCallbackEvents.DOCUMENT_SIGNED:
                    break;
                case C.OssCallbackEvents.ROLE_REASSIGN:
                    break;
                case C.OssCallbackEvents.SIGNER_COMPLETE:
                    break;
                case C.OssCallbackEvents.KBA_FAILURE:
                    break;
                case C.OssCallbackEvents.EMAIL_BOUNCE:
                    break;
                case C.OssCallbackEvents.PACKAGE_ATTACHMENT:
                    break;
                case C.OssCallbackEvents.SIGNER_LOCKED:
                    break;
                case C.OssCallbackEvents.PACKAGE_ARCHIVE:
                    break;
                case C.OssCallbackEvents.TEMPLATE_CREATE:
                    break;
            }
            return Task.CompletedTask;
        }
        private void OssCallback_PACKAGE_ACTIVATE(OssCallbackVo ossCallbackVo)
        {
        }
        private void OssCallback_PACKAGE_COMPLETE(OssCallbackVo ossCallbackVo)
        {
            //change data in your DB
            //download document
            OssService service = new OssService();
            service.downloadDocument(ossCallbackVo.PackageId);
            
        }
        #endregion
    }

Nous avons laissé les fonctions souches gérer tous les événements de rappel disponibles. Dans cet exemple, l'événement « PAQUET_COMPLET » a été surveillé et a déclenché la fonction de service correspondante. Ensuite, eslClient a été utilisé pour télécharger les documents signés.

        public void downloadDocument(string packageId)
        {
            EslClient eslClient = new EslClient(C.OSS.API_KEY, C.OSS.API_URL);
            PackageId pkgId = new PackageId(packageId);
            byte[] content = eslClient.DownloadZippedDocuments(pkgId);
            string fileLocation = C.SIGNED_DOCUMENTS_STORAGE_PATH + "\\" + pkgId + "_" + DateTime.Now.ToString("yyyy_MM_dd") + ".zip";
            Debug.WriteLine("file save path: " + fileLocation);
            File.WriteAllBytes(@fileLocation, content);
            
        }

Mise à jour de vos dossiers de propriété

Toutes vos configurations liées à OneSpan Sign sont stockées dans un fichier Constants.cs. Avant d'exécuter votre code, vous devez mettre à jour ce fichier pour y inclure vos propres informations :

Exécution de votre code

Pour exécuter votre code, utilisez la procédure suivante :

  1. Dans Visual Studio, exécutez votre projet en cliquant sur Exécuter.
  2. Ouvrez une invite de commande et changez le répertoire à l'endroit où vous avez enregistré votre exécutable ngrok. Saisissez la commande suivante :
    ngrok http [port] -host-header="localhost:[port]"

    Voici ce que vous pouvez vous attendre à voir après avoir exécuté la commande :

    1-2

  3. Connectez-vous à votre compte OneSpan Sign et accédez à la page Admin.
  4. Dans le champ URL de rappel, saisissez l'URL de votre écouteur de rappel. Par exemple, https://b404b60a.ngrok.io/api/Callback.
  5. Saisissez une clé de rappel et inscrivez-vous à l'événement Transaction complétée.
  6. Créer, envoyer et compléter un paquet de test. Vous devriez pouvoir visualiser les documents signés sous forme de fichier compressé à l'endroit où vous avez choisi de l'enregistrer dans le fichier Constants.cs. Une fois que OneSpan Sign aura envoyé une notification de rappel à votre écouteur, vous verrez quelque chose de semblable à ceci dans la console de votre IDE :

    Capture

Pour télécharger l'exemple complet de code, consultez notre site Partage de code.

Vous pouvez utiliser les Callback Event Notifications pour être informé des événements qui se produisent dans votre compte OneSpan Sign. Les rappels résolvent le problème de l'interrogation des informations en vous permettant d'enregistrer une URL qui sera notifiée chaque fois qu'un événement se produit dans votre compte. Lorsqu'un événement se produit (par exemple, lorsqu'une transaction est terminée), OneSpan Sign crée un objet JSON qui contient des informations telles que le type d'événement et les données associées à cet événement. OneSpan Sign envoie ensuite l'objet JSON à l'URL figurant dans les paramètres de notification de rappel de votre compte via une requête HTTP POST.

Vous pouvez trouver une liste complète de tous les types d'Callback Event dans la section Configuration des notifications de rappel.

Il est fortement recommandé d'utiliser un écouteur de rappel (Callback Listener) au lieu d'interroger les statuts de transaction. L'utilisation de l'interrogation peut consommer des ressources inutiles tant de votre côté que du côté du service OneSpan Sign.

Inscription aux notifications d'événements

Bien que vous puissiez suivre les instructions détaillées dans la section Configuration des notifications par rappel, pour les besoins de cet exemple, nous utiliserons l'interface Web OneSpan Sign. Pour obtenir plus d'informations, consultez Notifications d'événements.

OneSpan Sign permet aux intégrateurs d'être automatiquement informés des événements qui concernent leur compte. Lors d'événements sélectionnés, le système émet automatiquement des messages vers une destination choisie par l'intégrateur. Avant que OneSpan Sign ne vous informe d'un événement, vous devez vous inscrire pour en être informé.

Pour configurer les notifications d'événements sur votre compte :

  1. Cliquez sur Admin > Notifications d'événements.
  2. Saisissez une URL de rappel. Ce champ est obligatoire.
  3. Sélectionnez votre méthode d'authentification. Selon la méthode sélectionnée, différentes configurations peuvent être définies :
    1. Aucun : Seule une URL de rappel est requise.
    2. Basique : Saisissez une clé de rappel sécurisée.
    3. OAuth2.0 : Si OAuth 2.0 est sélectionné, des configurations supplémentaires sont nécessaires :
      • ID du client : Configuré dans votre serveur d'autorisation pour l'application.
      • Secret du client : Configuré dans votre serveur d'autorisation pour l'application.
      • URL du serveur d'autorisation : URL de votre serveur d'autorisation pour l'application.
      • Champ d'application : Permet de limiter l'accès à un compte, configuré dans le serveur d'autorisation de l'application. Ces informations doivent être fournies par l'utilisateur.
  4. En option,
  5. Activez les types d'événements pour lesquels vous souhaitez être notifié. Par défaut, les notifications pour tous les types d'événements sont désactivées.
  6. Cliquez sur Enregistrer.
  7. Si vous avez changé d'avis et souhaitez désactiver toutes les notifications d'événements, cliquez sur RÉTABLIR.

    Si vous souhaitez activer la notification d'événements à l'aide de OAuth Refresh Token Flow, vous devez le faire en utilisant une API. Notez que nous ne prenons actuellement en charge cette méthode que sur Salesforce.

Préalables

Pour effectuer ces procédures, vous aurez besoin des éléments suivants :

  • SublimeText : Un éditeur de texte est nécessaire pour cette procédure. Pour ce guide, l'éditeur de texte SublimeText est utilisé. Si vous ne l'avez pas encore, vous pouvez le télécharger gratuitement, ici.
  • XAMPP : Vous devrez créer un serveur hôte local. Nous vous recommandons d'utiliser XAMPP, qui est un serveur Web multiplateforme gratuit et en source ouverte doté des interpréteurs PHP et PERL. Il est simple, léger et vous permet de tester vos scripts localement. Vous pouvez le télécharger gratuitement à partir de leur site Web officiel.
  • Ngrok : Afin de recevoir des notifications d'événements de rappel, vous aurez besoin d'une URL accessible publiquement pour travailler. Votre serveur hôte local seul ne fonctionnera pas. Ngrok est un outil très simple et facile à utiliser qui crée un tunnel sécurisé sur votre machine locale ainsi qu'une URL publique que vous pouvez utiliser pour naviguer sur votre site local. Cela vous évite d'avoir à déployer votre application Web.
  • Ngrok ne doit être utilisé qu'à des fins de test et de développement. Il ne doit pas être utilisé dans un environnement production.

Traitement d'une notification d'événement

Créez un nouveau fichier dans SublimeText nommé callback.php. Copiez et collez le code suivant dans ce fichier.

L'étape finale consiste à renvoyer un HTTP status code 2xx à OneSpan Sign pour indiquer que vous avez bien reçu le rappel, avant que la demande de rappel n'expire dans 20 secondes (ce qui peut varier selon les instances). Notez que si votre fonction de service a un flux de travail complexe et consommera la requête pendant une longue période, il est préférable d'utiliser une méthode asynchrone. Cela évitera de provoquer une erreur de dépassement de délai.

<?php
$headerArray = apache_request_headers();
if (array_key_exists('Authorization', $headerArray)) {
	$callbackKey = $headerArray['Authorization'];
}
$data = file_get_contents('php://input');
$payload = json_decode($data, true);
$packageId = $payload['packageId'];
$eventNmae = $payload['name'];
// buffer all upcoming output
ob_start();
http_response_code(200);
// get the size of the output
$size = ob_get_length();
// send headers to tell the browser to close the connection
header("Content-Length: $size");
header('Connection: close');
// flush all output
ob_end_flush();
ob_flush();
flush();
if ($eventNmae == 'PACKAGE_COMPLETE') {
	$curl = curl_init();
	curl_setopt_array($curl, array(
		CURLOPT_URL => "https://sandbox.esignlive.com/api/packages/" . $packageId . "/documents/zip",
		CURLOPT_RETURNTRANSFER => true,
		CURLOPT_ENCODING => "",
		CURLOPT_MAXREDIRS => 10,
		CURLOPT_TIMEOUT => 30,
		CURLOPT_SSL_VERIFYHOST => false,
		CURLOPT_SSL_VERIFYPEER => false,
		CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
		CURLOPT_CUSTOMREQUEST => "GET",
		CURLOPT_HTTPHEADER => array(
			"authorization: Basic your_api_key",
		),
	));
	$response = curl_exec($curl);
	$err = curl_error($curl);
	curl_close($curl);
	if ($err) {
		echo "cURL Error #:" . $err;
	} else {
		file_put_contents("your_file_path/documents_" . $packageId . "_" . date("Y_m_d_H_i_s") . ".zip", $response);
	}
}
?>

Dans cet exemple, nous avons suivi le traitement normal du flux de travail des notifications de rappel. Par exemple, nous avons analysé la clé de rappel telle que définie dans votre portail Web :

$headerArray = apache_request_headers();
if (array_key_exists('Authorization', $headerArray)) {
	$callbackKey = $headerArray['Authorization'];
}

Faire une requête POST

La clé de rappel enregistrée est transmise par le biais de l'en-tête Autorisation en tant que Basic {callbackKey}. Cela permet de s'assurer que vous ne recevez que les notifications qui contiennent le secret partagé. Une fois que tous les documents d'un paquet ont été signés et que le paquet est terminé, OneSpan Sign fait une demande POST à l'URL enregistrée. Voici un exemple de données utiles JSON :

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

Le sessionUser ci-dessus fait référence à l'Id du signataire, il est donc recommandé de définir l'Id personnalisé (dans le SDK) ou l'Id du signataire (dans le REST) lors de la création du signataire et de le stocker dans votre base de données locale. Ensuite, l'identifiant du paquet sera utilisé pour télécharger les documents signés. Une classe de service se chargera de cette logique commerciale, en utilisant ce code.

Analyse du corps de la demande

Pour analyser le corps de la requête, utilisez les exemples de code suivants.

Le wrapper php://input est un flux en lecture seule qui vous permet de lire les données brutes du corps de la requête. Dans le cas des POST , il est préférable d'utiliser php://input au lieu de $HTTP_RAW_POST_DATA car il ne dépend pas de directives spéciales du php.ini.

$data = file_get_contents('php://input');

Ensuite, le JSON envoyé par OneSpan Sign est décodé à l'aide de la commande json_decode et ensuite converti en tableau.

$payload = json_decode($data, true);
$packageId = $payload['packageId'];
$eventNmae = $payload['name'];

Avant de consommer la demande selon le type d'événement de rappel, fermez la connexion et renvoyez un statut 200 pour éviter de dépasser le délai d'attente.

// buffer all upcoming output
ob_start();
http_response_code(200);
// get the size of the output
$size = ob_get_length();
// send headers to tell the browser to close the connection
header("Content-Length: $size");
header('Connection: close');
// flush all output
ob_end_flush();
ob_flush();
flush();

Ensuite, utilisez la bibliothèque cURL pour envoyer votre requête HTTP à l'API de OneSpan Signet télécharger les documents signés.

if ($eventNmae == 'PACKAGE_COMPLETE') {
	$curl = curl_init();
	curl_setopt_array($curl, array(
		CURLOPT_URL => "https://sandbox.esignlive.com/api/packages/" . $packageId . "/documents/zip",
		CURLOPT_RETURNTRANSFER => true,
		CURLOPT_ENCODING => "",
		CURLOPT_MAXREDIRS => 10,
		CURLOPT_TIMEOUT => 30,
		CURLOPT_SSL_VERIFYHOST => false,
		CURLOPT_SSL_VERIFYPEER => false,
		CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
		CURLOPT_CUSTOMREQUEST => "GET",
		CURLOPT_HTTPHEADER => array(
			"authorization: Basic your_api_key",
		),
	));
	$response = curl_exec($curl);
	$err = curl_error($curl);
	curl_close($curl);
	if ($err) {
		echo "cURL Error #:" . $err;
	} else {
		file_put_contents("your_file_path/documents_" . $packageId . "_" . date("Y_m_d_H_i_s") . ".zip", $response);
	}
}

Exécution de votre code

Pour exécuter votre code, utilisez la procédure suivante :

  1. En utilisant XAMPP, exécutez votre serveur local.
  2. Ouvrez une invite de commande et changez le répertoire à l'endroit où vous avez enregistré votre exécutable ngrok . Saisissez la commande suivante :

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

    Voici ce que vous pouvez vous attendre à voir après avoir exécuté cette commande :
    1-2

  3. Connectez-vous à votre compte OneSpan Sign et accédez à la page Admin.
  4. Dans le champ URL de rappel, saisissez l'URL de votre écouteur de rappel. Par exemple, https://4255b9d0.ngrok.io/CallbackListenerDemo/callback
  5. Saisissez une clé de rappel et inscrivez-vous à l'événement Transaction.
  6. Créez, envoyez et terminez une transaction de test. Vous devriez être en mesure de visualiser les documents signés sous forme de fichier compressés à l'endroit où vous avez choisi de l'enregistrer dans la classe Downloaddocumentservice.java. Une fois que OneSpan Sign aura envoyé une notification de rappel à votre écouteur, vous verrez quelque chose de semblable à ceci dans la console de votre IDE :

    Capture

Pour télécharger l'exemple complet de code, consultez notre site Partage de code.

Vous pouvez utiliser les Callback Event Notifications pour être informé des événements qui se produisent dans votre compte OneSpan Sign. Les rappels résolvent le problème de l'interrogation des informations en vous permettant d'enregistrer une URL qui sera notifiée chaque fois qu'un événement se produit dans votre compte. Lorsqu'un événement se produit (par exemple, lorsqu'une transaction est terminée), OneSpan Sign crée un objet JSON qui contient des informations telles que le type d'événement et les données associées à cet événement. OneSpan Sign envoie ensuite l'objet JSON à l'URL figurant dans les paramètres de notification de rappel de votre compte via une requête HTTP POST.

Vous pouvez trouver une liste complète de tous les types d'Callback Event dans la section Configuration des notifications de rappel.

Il est fortement recommandé d'utiliser un écouteur de rappel (Callback Listener) au lieu d'interroger les statuts de transaction. L'utilisation de l'interrogation peut consommer des ressources inutiles tant de votre côté que du côté du service OneSpan Sign.

Inscription aux notifications d'événements

Bien que vous puissiez suivre les instructions détaillées dans la section Configuration des notifications par rappel, pour les besoins de cet exemple, nous utiliserons l'interface Web OneSpan Sign. Pour obtenir plus d'informations, consultez Notifications d'événements.

OneSpan Sign permet aux intégrateurs d'être automatiquement informés des événements qui concernent leur compte. Lors d'événements sélectionnés, le système émet automatiquement des messages vers une destination choisie par l'intégrateur. Avant que OneSpan Sign ne vous informe d'un événement, vous devez vous inscrire pour en être informé.

Pour configurer les notifications d'événements sur votre compte :

  1. Cliquez sur Admin > Notifications d'événements.
  2. Saisissez une URL de rappel. Ce champ est obligatoire.
  3. Sélectionnez votre méthode d'authentification. Selon la méthode sélectionnée, différentes configurations peuvent être définies :
    1. Aucun : Seule une URL de rappel est requise.
    2. Basique : Saisissez une clé de rappel sécurisée.
    3. OAuth2.0 : Si OAuth 2.0 est sélectionné, des configurations supplémentaires sont nécessaires :
      • ID du client : Configuré dans votre serveur d'autorisation pour l'application.
      • Secret du client : Configuré dans votre serveur d'autorisation pour l'application.
      • URL du serveur d'autorisation : URL de votre serveur d'autorisation pour l'application.
      • Champ d'application : Permet de limiter l'accès à un compte, configuré dans le serveur d'autorisation de l'application. Ces informations doivent être fournies par l'utilisateur.
  4. En option,
  5. Activez les types d'événements pour lesquels vous souhaitez être notifié. Par défaut, les notifications pour tous les types d'événements sont désactivées.
  6. Cliquez sur Enregistrer.
  7. Si vous avez changé d'avis et souhaitez désactiver toutes les notifications d'événements, cliquez sur RÉTABLIR.

    Si vous souhaitez activer la notification d'événements à l'aide de OAuth Refresh Token Flow, vous devez le faire en utilisant une API. Notez que nous ne prenons actuellement en charge cette méthode que sur Salesforce.

Préalables

Pour effectuer ces procédures, vous aurez besoin des éléments suivants :

  • Node.js : Vous pouvez télécharger le programme d'installation à partir du lien suivant. Node.js est disponible pour Windows, Mac et Linux.
  • SublimeText : Un éditeur de texte est nécessaire pour cette procédure. Pour ce guide, l'éditeur de texte SublimeText est utilisé. Si vous ne l'avez pas encore, vous pouvez le télécharger gratuitement, ici.
  • Ngrok : Afin de recevoir des notifications d'événements de rappel, vous aurez besoin d'une URL accessible publiquement pour travailler. Votre serveur hôte local seul ne fonctionnera pas. Ngrok est un outil très simple et facile à utiliser qui crée un tunnel sécurisé sur votre machine locale ainsi qu'une URL publique que vous pouvez utiliser pour naviguer sur votre site local. Cela vous évite d'avoir à déployer votre application Web.
  • Ngrok ne doit être utilisé qu'à des fins de test et de développement. Il ne doit pas être utilisé dans un environnement production.

Traitement d'une notification d'événement

Dans cet exemple, vous allez construire un projet Node.js simple. Vous pouvez copier et coller tous les fichiers et codes nécessaires dans votre projet existant.

L'étape finale consiste à renvoyer un HTTP status code 2xx à OneSpan Sign pour indiquer que vous avez bien reçu le rappel, avant que la demande de rappel n'expire dans 20 secondes (ce qui peut varier selon les instances). Notez que si votre fonction de service a un flux de travail complexe et consommera la requête pendant une longue période, il est préférable d'utiliser une méthode asynchrone. Cela évitera de provoquer une erreur de dépassement de délai.

Dans l'exemple de code ci-dessous, le point d'entrée est listener.js :

const express = require('express'); //node.js web application framework that provides a robust set of features to develop web applications
const bodyParser = require('body-parser'); //node.js middleware for handling JSON, Raw, Text and URL encoded form data.
const oss = require('./ossFunctions.js');
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: true,
}));
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);
  }
  res.send('OK');
});
const portToListenOn = 3800;
app.listen(portToListenOn, () => {
  console.log(`Listening for OneSpan Sign notifications on port ${portToListenOn}. Started ${new Date().toString()}`);
});

Analyse du corps de la demande

Pour les besoins de cet exemple, un cadre express est utilisé. Express est un cadre d'application web Node.js minimal et flexible qui offre un ensemble robuste de fonctionnalités pour les applications Web et mobiles. En option, vous pouvez ajouter le body-parser pour analyser les corps des requêtes entrantes dans l'intergiciel avant vos gestionnaires, disponible sous la propriété the req.body .

const express = require('express'); 
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: true,
}));

Si vous n'avez pas installé de framework express et de body-parser, ouvrez une fenêtre d'invite de commande et allez dans le répertoire où vous avez enregistré votre fichier listener.js. Ensuite, saisissez les deux lignes suivantes :

npm install express@latest --save
npm install body-parser@latest --save

Faire une requête POST

La clé de rappel enregistrée est transmise par le biais de l'en-tête Autorisation en tant que Basic {callbackKey}. Cela permet de s'assurer que vous ne recevez que les notifications qui contiennent le secret partagé. Une fois que tous les documents d'un paquet ont été signés et que le paquet est terminé, OneSpan Sign fait une demande POST à l'URL enregistrée. Voici un exemple de données utiles JSON :

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

Le sessionUser ci-dessus fait référence à l'Id du signataire, il est donc recommandé de définir l'Id personnalisé (dans le SDK) ou l'Id du signataire (dans le REST) lors de la création du signataire et de le stocker dans votre base de données locale. Ensuite, l'identifiant du paquet sera utilisé pour télécharger les documents signés. Une classe de service se chargera de cette logique commerciale, en utilisant ce code.

Les appels POST provenant de OneSpan Sign sont acheminés vers localhost:3800/event. Le routage fait référence à la définition des points de terminaison des applications (URI) et à la manière dont ils répondent aux demandes des clients.

Dans cet exemple, nous avons suivi le traitement normal du flux de travail des notifications de rappel. Tout d'abord, nous avons analysé la clé de rappel définie dans votre portail Web :

  const callbakKey = req.get('Authorization');
  console.log('callback key: '+callbakKey);

Récupération de l'objet JSON

Comme nous avons déjà utilisé le middleware body-parser, nous pouvons obtenir directement l'objet JSON et, selon le type d'événement, nous pouvons le distribuer dans différentes fonctions de service :

  const payload = req.body;
  console.log('payload: '+ JSON.stringify(payload));
  if(payload.name == 'PACKAGE_COMPLETE'){
  	oss.downloadZippedDocument(payload);
  }

Téléchargement du paquet

Dans le module oss , nous avons simplement exposé une fonction téléchargeant le paquet complet :

const request = require('request');
const fs = require('fs');
const http = require('http');
const API_URL = 'api_url';
const API_KEY = 'api_key';
const FILE_SAVE_PATH = 'file_save_path';
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!');
	  });
  }
};

Démarrage de votre serveur et écoute des connexions

Pour démarrer votre serveur et écouter les connexions sur le port 3800, utilisez l'exemple de code suivant :

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

Exécution de votre code

  1. Ouvrez une invite de commande et changez l'emplacement du répertoire à l'endroit où vous avez enregistré votre fichier listener.js.
  2. Saisissez la commande suivante :
    node listener.js
  3. Dans une nouvelle invite de commande, changez le répertoire pour l'emplacement où vous avez enregistré votre exécutable ngrok.
  4. Saisissez la commande suivante :
    ngrok http [port] -host-header="localhost:[port]"

    Voici ce que vous pouvez vous attendre à voir après avoir exécuté la commande :

    1-2

  5. Connectez-vous à votre compte OneSpan Sign et accédez à la page Admin.
  6. Dans le champ URL de rappel, saisissez l'URL de votre écouteur de rappel. Par exemple, https://4255b9d0.ngrok.io/event.
  7. Saisissez une clé de rappel et inscrivez-vous à l'événement Transaction.
  8. Créer, envoyer et compléter un paquet de test. Vous devriez être en mesure de visualiser le JSON envoyé par OneSpan Sign imprimé dans la fenêtre de l'invite de commande.

Pour télécharger l'exemple complet de code, consultez notre site Partage de code.

Vous pouvez utiliser les Callback Event Notifications pour être informé des événements qui se produisent dans votre compte OneSpan Sign. Les rappels résolvent le problème de l'interrogation des informations en vous permettant d'enregistrer une URL qui sera notifiée chaque fois qu'un événement se produit dans votre compte. Lorsqu'un événement se produit (par exemple, lorsqu'une transaction est terminée), OneSpan Sign crée un objet JSON qui contient des informations telles que le type d'événement et les données associées à cet événement. OneSpan Sign envoie ensuite l'objet JSON à l'URL figurant dans les paramètres de notification de rappel de votre compte via une requête HTTP POST.

Vous pouvez trouver une liste complète de tous les types d'Callback Event dans la section Configuration des notifications de rappel.

Il est fortement recommandé d'utiliser un écouteur de rappel (Callback Listener) au lieu d'interroger les statuts de transaction. L'utilisation de l'interrogation peut consommer des ressources inutiles tant de votre côté que du côté du service OneSpan Sign.

Inscription aux notifications d'événements

Bien que vous puissiez suivre les instructions détaillées dans la section Configuration des notifications par rappel, pour les besoins de cet exemple, nous utiliserons l'interface Web OneSpan Sign. Pour obtenir plus d'informations, consultez Notifications d'événements.

OneSpan Sign permet aux intégrateurs d'être automatiquement informés des événements qui concernent leur compte. Lors d'événements sélectionnés, le système émet automatiquement des messages vers une destination choisie par l'intégrateur. Avant que OneSpan Sign ne vous informe d'un événement, vous devez vous inscrire pour en être informé.

Pour configurer les notifications d'événements sur votre compte :

  1. Cliquez sur Admin > Notifications d'événements.
  2. Saisissez une URL de rappel. Ce champ est obligatoire.
  3. Sélectionnez votre méthode d'authentification. Selon la méthode sélectionnée, différentes configurations peuvent être définies :
    1. Aucun : Seule une URL de rappel est requise.
    2. Basique : Saisissez une clé de rappel sécurisée.
    3. OAuth2.0 : Si OAuth 2.0 est sélectionné, des configurations supplémentaires sont nécessaires :
      • ID du client : Configuré dans votre serveur d'autorisation pour l'application.
      • Secret du client : Configuré dans votre serveur d'autorisation pour l'application.
      • URL du serveur d'autorisation : URL de votre serveur d'autorisation pour l'application.
      • Champ d'application : Permet de limiter l'accès à un compte, configuré dans le serveur d'autorisation de l'application. Ces informations doivent être fournies par l'utilisateur.
  4. En option,
  5. Activez les types d'événements pour lesquels vous souhaitez être notifié. Par défaut, les notifications pour tous les types d'événements sont désactivées.
  6. Cliquez sur Enregistrer.
  7. Si vous avez changé d'avis et souhaitez désactiver toutes les notifications d'événements, cliquez sur RÉTABLIR.

    Si vous souhaitez activer la notification d'événements à l'aide de OAuth Refresh Token Flow, vous devez le faire en utilisant une API. Notez que nous ne prenons actuellement en charge cette méthode que sur Salesforce.

Préalables

Pour effectuer ces procédures, vous aurez besoin des éléments suivants :

  • Ruby (version 2.3.3) : Vous pouvez le télécharger sur le site Web officiel, ici.
  • Boîte à outils de développement : Ceci est nécessaire pour utiliser le module JSON. Vous pouvez le télécharger ici. Ce lien comprend un tutoriel sur la façon d'installer la Boîte à outils de développement.
  • Ngrok : Afin de recevoir des notifications d'événements de rappel, vous aurez besoin d'une URL accessible publiquement pour travailler. Votre serveur hôte local seul ne fonctionnera pas. Ngrok est un outil très simple et facile à utiliser qui crée un tunnel sécurisé sur votre machine locale ainsi qu'une URL publique que vous pouvez utiliser pour naviguer sur votre site local. Cela vous évite d'avoir à déployer votre application Web.
  • Ngrok ne doit être utilisé qu'à des fins de test et de développement. Il ne doit pas être utilisé dans un environnement production.

Récupération des modules JSON et Sinatra

  1. La première chose à faire est d'installer les modules json et sinatra . Ouvrez votre invite de commande et saisissez la ligne suivante :
    gem install json
    gem install sinatra
  2. Dans un éditeur de texte, créez un nouveau nom de fichier appelé listener.rb et enregistrez-le à l'endroit de votre choix.
  3. Dans ce fichier, copiez et collez le code suivant :
    require 'sinatra'
    require 'json'
    post '/event' do
      request_payload = JSON.parse(request.body.read)
      puts request_payload
      status 200
    end

Les deux premières lignes importent les modules nécessaires à cet exemple.

require 'sinatra'
require 'json'

Définition de l'URL du point final

Vous devez définir une URL de point d'accès pour OneSpan Sign. Par exemple, http://localhost:4567/event.

Il existe un gestionnaire de demande POST appelé /event, qui va servir toutes les demandes provenant de OneSpan Sign.

post '/event' do
  request_payload = JSON.parse(request.body.read)
  puts request_payload
  status 200
end

Dans cet exemple, les données utiles JSON sont imprimées dans la console.

Exécution de votre code

  1. Ouvrez une invite de commande et changez le répertoire courant pour l'emplacement où vous avez enregistré votre fichier listener.rb.
  2. Saisissez la commande suivante :
    ruby listener.py
  3. Dans une nouvelle invite de commande, changez le répertoire courant pour l'emplacement où vous avez enregistré votre fichier exécutable ngrok et saisissez ce qui suit :
    ngrok http 4567 -host-header="localhost:4567"
  4. Connectez-vous à votre compte OneSpan Sign et accédez à la page Admin.
  5. Dans le champ URL de rappel, saisissez l'URL de votre écouteur de rappel. Par exemple, https://4255b9d0.ngrok.io/CallbackListenerDemo/callback.
  6. Saisissez une clé de rappel et inscrivez-vous à l'événement Transaction.

  7. Créer, envoyer et compléter un paquet de test. Vous devriez être en mesure de visualiser le JSON envoyé par OneSpan Sign imprimé dans la fenêtre de l'invite de commande. Une fois que OneSpan Sign aura envoyé une notification de rappel à votre écouteur, vous verrez quelque chose de semblable à ceci dans la console de votre IDE :

1

Pour télécharger l'exemple complet de code, consultez notre site Partage de code.

Vous pouvez utiliser les Callback Event Notifications pour être informé des événements qui se produisent dans votre compte OneSpan Sign. Les rappels résolvent le problème de l'interrogation des informations en vous permettant d'enregistrer une URL qui sera notifiée chaque fois qu'un événement se produit dans votre compte. Lorsqu'un événement se produit (par exemple, lorsqu'une transaction est terminée), OneSpan Sign crée un objet JSON qui contient des informations telles que le type d'événement et les données associées à cet événement. OneSpan Sign envoie ensuite l'objet JSON à l'URL figurant dans les paramètres de notification de rappel de votre compte via une requête HTTP POST.

Vous pouvez trouver une liste complète de tous les types d'Callback Event dans la section Configuration des notifications de rappel.

Il est fortement recommandé d'utiliser un écouteur de rappel (Callback Listener) au lieu d'interroger les statuts de transaction. L'utilisation de l'interrogation peut consommer des ressources inutiles tant de votre côté que du côté du service OneSpan Sign.

Inscription aux notifications d'événements

Bien que vous puissiez suivre les instructions détaillées dans la section Configuration des notifications par rappel, pour les besoins de cet exemple, nous utiliserons l'interface Web OneSpan Sign. Pour obtenir plus d'informations, consultez Notifications d'événements.

OneSpan Sign permet aux intégrateurs d'être automatiquement informés des événements qui concernent leur compte. Lors d'événements sélectionnés, le système émet automatiquement des messages vers une destination choisie par l'intégrateur. Avant que OneSpan Sign ne vous informe d'un événement, vous devez vous inscrire pour en être informé.

Pour configurer les notifications d'événements sur votre compte :

  1. Cliquez sur Admin > Notifications d'événements.
  2. Saisissez une URL de rappel. Ce champ est obligatoire.
  3. Sélectionnez votre méthode d'authentification. Selon la méthode sélectionnée, différentes configurations peuvent être définies :
    1. Aucun : Seule une URL de rappel est requise.
    2. Basique : Saisissez une clé de rappel sécurisée.
    3. OAuth2.0 : Si OAuth 2.0 est sélectionné, des configurations supplémentaires sont nécessaires :
      • ID du client : Configuré dans votre serveur d'autorisation pour l'application.
      • Secret du client : Configuré dans votre serveur d'autorisation pour l'application.
      • URL du serveur d'autorisation : URL de votre serveur d'autorisation pour l'application.
      • Champ d'application : Permet de limiter l'accès à un compte, configuré dans le serveur d'autorisation de l'application. Ces informations doivent être fournies par l'utilisateur.
  4. En option,
  5. Activez les types d'événements pour lesquels vous souhaitez être notifié. Par défaut, les notifications pour tous les types d'événements sont désactivées.
  6. Cliquez sur Enregistrer.
  7. Si vous avez changé d'avis et souhaitez désactiver toutes les notifications d'événements, cliquez sur RÉTABLIR.

    Si vous souhaitez activer la notification d'événements à l'aide de OAuth Refresh Token Flow, vous devez le faire en utilisant une API. Notez que nous ne prenons actuellement en charge cette méthode que sur Salesforce.

Préalables

Pour effectuer ces procédures, vous aurez besoin des éléments suivants :

  • Python (version 2.2) : Vous pouvez le télécharger sur le site Web officiel.
  • Ngrok : Afin de recevoir des notifications d'événements de rappel, vous aurez besoin d'une URL accessible publiquement pour travailler. Votre serveur hôte local seul ne fonctionnera pas. Ngrok est un outil très simple et facile à utiliser qui crée un tunnel sécurisé sur votre machine locale ainsi qu'une URL publique que vous pouvez utiliser pour naviguer sur votre site local. Cela vous évite d'avoir à déployer votre application Web.
  • Ngrok ne doit être utilisé qu'à des fins de test et de développement. Il ne doit pas être utilisé dans un environnement production.

  • Web.py : Web.py est un framework pour Python qui vous permet de créer des applications Web.

Installation de web.py

Pour installer web.py, utilisez la procédure suivante :

  1. Ouvrez une invite de commande et saisissez ce qui suit :
    $ pip install web.py
  2. Dans un éditeur de texte, créez un nouveau fichier nommé listener.py et enregistrez-le à l'endroit de votre choix.
  3. Copiez le code suivant :
    import web
    urls = ('/.*', 'event')
    class event:
        def POST(self):
            data = web.data()
            print
            print 'OneSpan Sign Notification:'
            print data
            print
        return 'OK'
    if __name__ == '__main__':
        app = web.application(urls, globals())
        app.run()

    La première ligne (importation Web) importe le module web.py.

Définition de l'URL du point final

Vous devez définir une URL de point d'accès pour OneSpan Sign.

  1. Définissez une structure URL en saisissant le code suivant. Cette commande indique que l'URL (la page de destination principale - http ://localhost :8080) doit être traitée par la classe nommée Événement :
    urls = ('/.*', 'event')
  2. Écrire la classe event . La fonction POST de cette classe sera appelée par web.py à chaque fois que OneSpan Sign fera une requête POST (déclenchée par les événements que vous avez enregistrés dans OneSpan Sign) à l'URL de rappel définie par ngrok. Dans cet exemple, les données utiles JSON sont imprimées dans la console.
    class event:
        def POST(self):
            data = web.data()
            print
            print 'OneSpan Sign Notification:'
            print data
            print
        return 'OK'
  3. Dites à web.py de créer une application avec l'URL listée ci-dessus, en recherchant les classes dans l'espace de nom global de ce fichier.
    if __name__ == '__main__':
        app = web.application(urls, globals())
        app.run()

Exécution de votre code

Pour exécuter votre code, utilisez la procédure suivante :

  1. Ouvrez une invite de commande et modifiez le répertoire actuel à l'emplacement où vous avez enregistré votre fichier listener.py. T
  2. Saisissez la commande suivante :
    python listener.py
  3. Dans une nouvelle invite de commande, changez le répertoire courant pour l'emplacement où vous avez enregistré votre fichier exécutable ngrok et saisissez ce qui suit :
    ngrok http 8080 -host-header="localhost:8080"
  4. Dans une nouvelle invite de commande, changez le répertoire courant pour l'emplacement où vous avez enregistré votre fichier exécutable ngrok et saisissez ce qui suit :
    ngrok http 4567 -host-header="localhost:4567"
  5. Connectez-vous à votre compte OneSpan Sign et accédez à la page Admin.
  6. Dans le champ URL de rappel, saisissez l'URL de votre écouteur de rappel. Par exemple, https://4255b9d0.ngrok.io/CallbackListenerDemo/callback.
  7. Saisissez une clé de rappel et inscrivez-vous à l'événement Transaction.

  8. Créer, envoyer et compléter un paquet de test. Vous devriez être en mesure de visualiser le JSON envoyé par OneSpan Sign imprimé dans la fenêtre de l'invite de commande. Une fois que OneSpan Sign aura envoyé une notification de rappel à votre écouteur, vous verrez quelque chose de semblable à ceci dans la console de votre IDE :

1

Pour télécharger l'exemple complet de code, consultez notre site Partage de code.

Vous pouvez utiliser les Callback Event Notifications pour être informé des événements qui se produisent dans votre compte OneSpan Sign. Les rappels résolvent le problème de l'interrogation des informations en vous permettant d'enregistrer une URL qui sera notifiée chaque fois qu'un événement se produit dans votre compte. Lorsqu'un événement se produit (par exemple, lorsqu'une transaction est terminée), OneSpan Sign crée un objet JSON qui contient des informations telles que le type d'événement et les données associées à cet événement. OneSpan Sign envoie ensuite l'objet JSON à l'URL figurant dans les paramètres de notification de rappel de votre compte via une requête HTTP POST.

Vous pouvez trouver une liste complète de tous les types d'Callback Event dans la section Configuration des notifications de rappel.

Il est fortement recommandé d'utiliser un écouteur de rappel (Callback Listener) au lieu d'interroger les statuts de transaction. L'utilisation de l'interrogation peut consommer des ressources inutiles tant de votre côté que du côté du service OneSpan Sign.

Inscription aux notifications d'événements

Bien que vous puissiez suivre les instructions détaillées dans la section Configuration des notifications par rappel, pour les besoins de cet exemple, nous utiliserons l'interface Web OneSpan Sign. Pour obtenir plus d'informations, consultez Notifications d'événements.

OneSpan Sign permet aux intégrateurs d'être automatiquement informés des événements qui concernent leur compte. Lors d'événements sélectionnés, le système émet automatiquement des messages vers une destination choisie par l'intégrateur. Avant que OneSpan Sign ne vous informe d'un événement, vous devez vous inscrire pour en être informé.

Pour configurer les notifications d'événements sur votre compte :

  1. Cliquez sur Admin > Notifications d'événements.
  2. Saisissez une URL de rappel. Ce champ est obligatoire.
  3. Sélectionnez votre méthode d'authentification. Selon la méthode sélectionnée, différentes configurations peuvent être définies :
    1. Aucun : Seule une URL de rappel est requise.
    2. Basique : Saisissez une clé de rappel sécurisée.
    3. OAuth2.0 : Si OAuth 2.0 est sélectionné, des configurations supplémentaires sont nécessaires :
      • ID du client : Configuré dans votre serveur d'autorisation pour l'application.
      • Secret du client : Configuré dans votre serveur d'autorisation pour l'application.
      • URL du serveur d'autorisation : URL de votre serveur d'autorisation pour l'application.
      • Champ d'application : Permet de limiter l'accès à un compte, configuré dans le serveur d'autorisation de l'application. Ces informations doivent être fournies par l'utilisateur.
  4. En option,
  5. Activez les types d'événements pour lesquels vous souhaitez être notifié. Par défaut, les notifications pour tous les types d'événements sont désactivées.
  6. Cliquez sur Enregistrer.
  7. Si vous avez changé d'avis et souhaitez désactiver toutes les notifications d'événements, cliquez sur RÉTABLIR.

    Si vous souhaitez activer la notification d'événements à l'aide de OAuth Refresh Token Flow, vous devez le faire en utilisant une API. Notez que nous ne prenons actuellement en charge cette méthode que sur Salesforce.

Préalables

Pour effectuer ces procédures, vous aurez besoin des éléments suivants :

  • Aller : Vous pouvez le télécharger sur le site Web officiel.
  • Ngrok : Afin de recevoir des notifications d'événements de rappel, vous aurez besoin d'une URL accessible publiquement pour travailler. Votre serveur hôte local seul ne fonctionnera pas. Ngrok est un outil très simple et facile à utiliser qui crée un tunnel sécurisé sur votre machine locale ainsi qu'une URL publique que vous pouvez utiliser pour naviguer sur votre site local. Cela vous évite d'avoir à déployer votre application Web.
  • Ngrok ne doit être utilisé qu'à des fins de test et de développement. Il ne doit pas être utilisé dans un environnement production.

Traitement d'une notification d'événement

Dans ce processus, l'étape finale consisterait à retourner un message HTTP status code 2xx à OneSpan Sign pour indiquer que vous avez bien reçu le rappel, avant que la demande de rappel n'expire dans 20 secondes (ce qui peut varier d'une instance à l'autre). Notez que si votre fonction de service a un flux de travail complexe et consommera la requête pendant une longue période, il est préférable d'utiliser une méthode asynchrone. Cela évitera de provoquer une erreur de dépassement de délai.

  1. Dans un éditeur de texte, créez un nouveau fichier nommé listener.go à l'endroit de votre choix.
  2. Copiez et collez le code suivant dans ce fichier.
    package main
    import (
    	"io"
    	"log"
    	"net/http"
    	"os"
    )
    func handleEventNotification(w http.ResponseWriter, r *http.Request) {
    	_, err := io.Copy(os.Stdout, r.Body)
    	if err != nil {
    		log.Println(err)
    		return
    	}
    }
    func main() {
        log.Println("Starting server...")
    	http.HandleFunc("/event", handleEventNotification)
    	log.Fatal(http.ListenAndServe(":8080", nil))
    }
    

Dans le code ci-dessus :

  • Dans la fonction main(), les requêtes http adressées à l'application path /event sont traitées par la bibliothèque http.HandleFunc en utilisant la fonction handleEventNotification.
  • La ligne http.ListenAndServe démarre un nouveau serveur Web sur localhost:8080. Il est important de noter que http.ListenAndServe peut retourner une erreur, qui est enveloppée autour de log.Fatal().
  • Dans cet exemple, le contenu du JSON est simplement copié dans le fichier stdout à l'aide de la méthode io.Copy (c'est-à-dire imprimer les données utiles JSON sur la console du terminal).

Exécution de votre code

  1. Ouvrez une invite de commande et modifiez le répertoire actuel à l'emplacement où vous avez enregistré votre fichier listener.go.
  2. Saisissez les commandes suivantes :
    go build listener.go
    listener.exe
  3. Dans une nouvelle fenêtre d'invite de commande, changez le répertoire courant pour l'emplacement où vous avez enregistré votre fichier exécutable ngrok et saisissez la ligne suivante :
    ngrok http 8080
  4. Connectez-vous à votre compte OneSpan Sign et accédez à la page Admin.
  5. Dans le champ URL de rappel, saisissez l'URL de votre écouteur de rappel. Par exemple, https://4255b9d0.ngrok.io/CallbackListenerDemo/callback.
  6. Saisissez une clé de rappel et inscrivez-vous à l'événement Transaction.

  7. Créer, envoyer et compléter un paquet de test. Vous devriez être en mesure de visualiser le JSON envoyé par OneSpan Sign imprimé dans la fenêtre de l'invite de commande. Une fois que OneSpan Sign aura envoyé une notification de rappel à votre écouteur, vous verrez quelque chose de semblable à ceci dans la console de votre IDE :

1