Développeurs de panneaux OneSpan : Notification d'événements OAuth pour Salesforce - Partie 3

Duo Liang, avril 21, 2021

Dans les deux derniers blogs de développeurs, nous avons abordé les aspects fondamentaux de l'enregistrement d'une application connectée dans Salesforce avec les paramètres OAuth activés dans la partie 1, puis nous nous sommes concentrés sur la gestion d'un jeton d'actualisation et sur la mise à jour du service de rappel OneSpan Sign dans la partie 2.

Ce troisième volet de notre série de blogs en cours comprend un projet de démonstration montrant comment mettre en œuvre un service Web dans Salesforce qui fonctionne comme un écouteur de rappel. Nous allons décomposer le code en sections et tester l'ensemble du flux de travail, de la création de la transaction à la réception et au traitement des notifications

Conditions préalables

Pour effectuer ces procédures, assurez-vous d'avoir lu les blogs précédents de la série et d'avoir effectué les tâches suivantes :

  • Enregistrez une Salesforce Connected App et activez l'authentification Oauth2
  • Récupérer un jeton de rafraîchissement pour cette application
  • Mise à jour du service de rappel des signatures de OneSpan

En outre, vous devrez :

  • Téléchargez l'exemple de code dans ce Code Share
  • (facultatif) Installez le SDK APEX de OneSpan Sign et familiarisez-vous avec son utilisation de base.

Configurer un écouteur de rappel

Dans cette section, nous allons décomposer l'exemple de code section par section. Suivez les explications ci-dessous et adaptez le code en conséquence.

Essentiellement, nous avons exposé une classe Apex comme un service web REST. La définition de la classe ressemble à ceci :

@RestResource(urlMapping='/oss/callback') global avec partage classe OssCallbackResource{ @HttpPostglobal static void callback() { ...... }

Nous avons exposé un service web traitant les demandes HTTP Post à "https://yourdomain.salesforce.com/services/apexrest/oss/callback". Cette URL est également connue comme l'URL de rappel

Lorsqu'une fonction d'appel OneSpan Sign frappe notre méthode, la première chose à faire est d'analyser la charge utile JSON entrante et de la convertir en notre propre modélisation.

        OssCallback ossCallback = (OssCallback)JSON.deserialize(RestContext.request.requestbody.tostring(),OssCallback.class) ; System.debug('Received callback : ' + RestContext.request.requestbody.tostring()) ;

Un exemple de charge utile entrante se présente comme suit :

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

Si le nom de l'événement est égal à "PACKAGE_COMPLETE", la transaction a été achevée, vous pouvez la traiter selon votre logique commerciale :

        if(ossCallback.name.equals('PACKAGE_COMPLETE')){ downloadSignedDocuments(ossCallback) ; }   

Dans notre cas, nous téléchargerons tous les documents signés et le résumé des preuves dans un dossier de documents nommé "onespan". Assurez-vous d'avoir créé ce dossier, ou vous pouvez simplement adapter le code et stocker les fichiers où bon vous semble

Ici, nous avons utilisé les fonctions du SDK OneSpan APEX pour faciliter l'intégration. Si vous n'avez pas installé le SDK APEX ou si vous n'êtes pas familiarisé avec sa configuration ou son utilisation de base, consultez ce guide

    private static void downloadSignedDocuments(OssCallback ossCallback){ OneSpanSDK sdk= new OneSpanSDK() ; OneSpanAPIObjects.Package_x pack = sdk.getPackage(ossCallback.packageId) ; List docs = new List() ; Folder folder = [select id from Folder where name='onespan' LIMIT 1] ; for(OneSpanAPIObjects.Document document : pack.documents){ Blob response = sdk.downloadDocument(ossCallback.packageId, document.id) ; Document doc = new Document() ; doc.Body = response ; doc.FolderId = folder.id ; doc.Name = pack.name + ' - ' + document.name ; doc.Type = 'pdf' ; docs.add(doc) ; } //download evidence summary String auditString= sdk.getAudit(ossCallback.packageId) ; Document auditDoc= new Document() ; auditDoc.Body = EncodingUtil.base64Decode(auditString) ; auditDoc.F

C'est ça ! Vous êtes maintenant prêt à déployer dans votre propre environnement Salesforce.

Tester le code

Avant notre test final, mettez à jour le service de rappel de signes de OneSpan et assurez-vous :

  • votre URL de rappel est correctement configurée
  • vous avez au moins déclenché l'événement "PACKAGE_COMPLETE"

Afin de vérifier si notre écouteur de rappel fonctionne comme prévu, nous pouvons simplement créer une transaction à partir du portail de l'expéditeur ou de n'importe quel point d'intégration tant que vous avez porté "data" > "origin" : "OSS" dans le JSON de la transaction :

4-21-1

Avant de passer à l'étape suivante, ouvrez la console de développement Salesforce (Dans Salesforce > Cliquez sur votre nom ou sur l'icône en forme d'engrenage> Cliquez sur Console de développement) et surveillez les appels entrants en temps réel

Maintenant vous pouvez finir de signer cette transaction. Dans votre console de développement Salesforce, vous remarquerez que les nouveaux journaux arrivent presque en même temps. Double-cliquez sur l'un d'eux et cherchez "DEBUG". Cela filtre les journaux et n'affiche que les messages de niveau débogage que nous avons imprimés avec la fonction System.debug().

4-21-2

Accédez à votre dossier de documents Salesforce et vous y trouverez les documents signés et le résumé des preuves.

4-21-3

Ceci conclut le blog d'aujourd'hui. À ce stade, vous devriez être en mesure d'implémenter et de déployer un écouteur de rappel dans Salesforce, de configurer correctement le service de rappel OneSpan Sign et de tester le code

Si vous avez des questions concernant ce blog ou toute autre question relative à l'intégration de OneSpan Sign dans votre application, visitez les forums de la communauté des développeurs. Vos commentaires sont importants pour nous!

OneSpan Sign Developer Community

OneSpan Sign Developer Community

Rejoignez la communauté OneSpan Sign Developer! Forums, blogs, documentation, téléchargements SDK, et plus encore.

Joignez-vous aujourd'hui