Développeur de signes OneSpan : Intégrer avec Oracle PL/SQL - Partie 3

Duo Liang, septembre 11, 2019

Dans la première partie de cette série de blog, nous avons exploré comment créer votre première transaction électronique par l'intermédiaire de PL/SQL. De là, nous avons couvert le téléchargement de documents par le biais d'une demande POST en plusieurs parties dans la partie 2 blog. 

Une fois que votre signataire a terminé la signature, l'étape suivante consiste à télécharger les documents signés et le résumé des preuves. Ainsi, la partie 3 de cette série de blog reprendra là où le dernier s'est éteint et démontrera comment invoquer l'API de « document de téléchargement » et stocker les fichiers localement. Commençons ! 

Téléchargement d'API documentaires

OneSpan Sign vous fournit plusieurs API pour télécharger des documents liés à votre processus de signature électronique, y compris des documents signés, un résumé des preuves et des pièces jointes si disponibles. Consultez la référence API ci-dessous:

1. Télécharger des documents dans le fichier Zip

Demande HTTP

GET /api/packages/packageId/documents/zip

En-têtes HTTP

Accepter : application/zip
Autorisation: api_key de base

2. Télécharger Le résumé des preuves

Demande HTTP

GET /api/packages/packageId/evidence/summary

En-têtes HTTP

Accepter : application/pdf
Autorisation: api_key de base

3. Télécharger le document par ID

Demande HTTP

GET /api/packages/packageId/documents/documentId/pdf

En-têtes HTTP

Accepter : application/pdf
Autorisation: api_key de base

4. Télécharger les pièces jointes dans Zip File

Demande HTTP

GET /api/packages/packageId/attachment/zip

En-têtes HTTP

Accepter : application/octet-stream
Type de contenu : application/octet-stream
Autorisation: api_key de base

Mise en œuvre de la fonction

Ici, j'ai préparé l'exemple de code pour télécharger des documents signés et de stocker ces documents localement. N'hésitez pas à utiliser le code dans votre propre fonction de procédure. Vous pouvez facilement appliquer l'une des API ci-dessus au code avec des modifications minimales.

Nous allons décomposer le code section par section et expliquer certains défis qui s'y posent. La première partie du code est utilisée pour invoquer l'appel POST API avec les en-têtes de demande correspondants. 

Commencer
  -- Faites une demande HTTP et obtenez la réponse.
  l_http_request : utl_http,begin_request(
                      url oss_api_url '/paquets/' oss_package_id '/documents/zip',
                      méthode 'GET',
                      http_version 'HTTP/1.1'
                    );
  utl_http.set_wallet ('fichier:C: 'wallet5', NULL);
  utl_http.set_header (l_http_request, 'Authorization', 'Basic' ' ' ' oss_api_key ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 

  l_http_response : utl_http.get_response (l_http_request);

Une fois la réponse reçue, nous imprimons le code d'état dans le cadre de l'enregistrement et du piégeage des erreurs. Ensuite, tirez parti de la fonction UTL_HTTP. READ_RAW (RESP r, données RAW, PLS_INTEGER len) pour convertir le contenu de réponse en DBMS_LOB de type et de fonction Raw. WRITEAPPEND (BLOB lob_loc, BINARY_INTEGER montant, tampon RAW) pour annexer les données Brutes à un objet BLOB. Le type BLOB est le type désiré pour nous d'insérer dans une colonne de table ou de stocker à un chemin local.

   dbms_output.put_line ('Démarrer pour enregistrer le fichier: 'oss_package_id '. zip' ' au dossier ' ' 'MYDIR');

   l_blob_len : DBMS_LOB.getlength (l_blob);

     l_file :
        UTL_FILE.fopen ('MYDIR',
                        oss_package_id. zip',
                        'WB',
                        32767);

     WHILE l_pos l_blob_len>
     Boucle
        DBMS_LOB.read (l_blob,
                       l_amount,
                       l_pos,
                       l_buffer);
        UTL_FILE.put_raw (l_file, l_buffer, VRAI);
        l_pos : l_pos et l_amount;
     BOUCLE D'EXTRÉMITÉ;

     UTL_FILE.fclose (l_file);
     dbms_output.put_line('Succès pour enregistrer le fichier: 'oss_package_id'. zip' ' au dossier ' ' 'MYDIR');

La gestion d'exception de base a déjà été incluse dans le code. Nous avons imprimé les résultats de l'exécution et fermé les ressources une fois qu'une exception a été lancée. Nous avons construit le code d'une manière que vous pouvez facilement ajouter un mécanisme de réessayer permettant plusieurs tentatives.

Exécution du Code

Une fois que vous avez exécuté le code en utilisant la commande ci-dessous :

EXECUTE download_package();

Vous verrez le code d'état de l'appel API imprimé dans la console, ainsi que d'autres journaux que nous avons ajoutés dans le code.9-11-1

Si vous naviguez vers l'annuaire spécifié, vous trouverez vos documents téléchargés.9-11-2

Si vous avez des questions concernant ce blog ou toute autre chose concernant l'intégration de OneSpan Sign dans votre application, visitez les Forums communautairesdes 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