OneSpan Sign Developer : Notification d'événements par rappel - PHP

Duo Liang,

Une fois que votre intégration est configurée pour envoyer des transactions aux destinataires par courrier électronique ou en utilisant la signature intégrée, la prochaine étape logique est d'activer votre intégration pour automatiser les tâches post-signature électronique. Il est fortement recommandé de définir des récepteurs de rappel et d'exploiter les notifications d'événements.

Dans ce blog, nous allons vous présenter un exemple pratique en langage PHP, vous montrer comment configurer une application web et répondre aux notifications de rappel de OneSpan Sign. Sans plus attendre, commençons !

Notification d'événement par rappel en action

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

  • Enregistrez-vous pour recevoir des 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.
  • Téléchargement de XAMPP: XAMPP est un serveur web multiplateforme gratuit et open-source avec des interprètes PHP et PERL. Il est simple, léger et vous permet de tester vos scripts localement.
  • Télécharger Ngrok

Le code

Téléchargez le code source complet. N'hésitez pas à copier les fichiers nécessaires directement dans votre projet existant.

L'entrée principale du projet est le fichier callback.php, où nous ne traiterons que les requêtes POST :

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    .....
}

Une fois la transaction terminée, 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
}

Le code correspondant pour décompresser cette requête ressemble à ceci :

$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'] ;

Après avoir reçu avec succès la demande de rappel, n'oubliez pas de renvoyer un code d'état HTTP 200 et de fermer la connexion :

// mettre en mémoire tampon toutes les sorties à venir
ob_start() ;
http_response_code(200) ;

// obtenir la taille de la sortie
$size = ob_get_length() ;

// envoyez des en-têtes pour indiquer au navigateur de fermer la connexion
header("Content-Length :".$size) ;
header('Connection : close') ;

// effacez toutes les données de sortie
ob_end_flush() ;
ob_flush() ;
flush() ;

Dans notre logique commerciale principale, nous téléchargerons simplement les documents signés si le nom de l'événement est égal à "PACKAGE_COMPLETE", sur la base des données transmises par la demande de rappel :

if ($eventNmae == 'PACKAGE_COMPLETE') {
	$curl = curl_init() ;

	curl_setopt_array($curl, array(
		CURLOPT_URL => $apiurl."/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(
			"autorisation : Basic ".$apikey,
		),
	)) ;

	$response = curl_exec($curl) ;
	$err = curl_error($curl) ;

	curl_close($curl) ;

	if ($err) {
		echo "Erreur cURL # :" . $err ;
	} else {
		file_put_contents($filepath."/documents_" . $packageId . "_" . date("Y_m_d_H_i_s") . ".zip", $response) ;
	}
}

Effectuez un test

Lancez votre serveur local avec XAMPP. Ensuite, 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-24-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 :