OneSpan Sign Developer: Integration in Oracle PL / SQL - Teil 2

Duo Liang, 4. September 2019
OneSpan Sign Developer: Integrate with Oracle PL/SQL – Part 2

In dem erster Teil In dieser Blogserie haben wir gezeigt, wie Sie über Oracle PL / SQL eine Verbindung zum OneSpan Sign-Server herstellen und API-Aufrufe aufrufen können. Wenn Sie mit der Oracle PL / SQL-Programmierung noch nicht vertraut sind oder Verbindungsfehler wie "HTTP-Anforderung fehlgeschlagen" aufgetreten sind, wird die Teil 1 Blog ist eine gute Referenz, um zuerst zu lesen.

Wir werden weiterhin über Oracle PL / SQL in die API von OneSpan Sign integrieren und zeigen, wie eine Transaktion erstellt und wie Binärdaten von Dokumenten hochgeladen werden. Lassen Sie uns ohne weiteres loslegen.

Festlegen des Anforderungsheaders

In diesem Handbuch wird der erforderliche Code abschnittsweise aufgeschlüsselt. Wenn Sie es vorziehen, finden Sie das gesamte Skript darin Forumsbeitrag .

In den ersten Zeilen werden die Verbindungsinformationen für Ihre OneSpan Sign-Verbindung zusätzlich zu anderen erforderlichen Konstanten und Objekttypen definiert, die im folgenden Code verwendet werden. 

Prozedur erstellen oder ersetzen create_package2
wie
  oss_api_url Konstante varchar2 (256): = 'https://sandbox.esignlive.com/api';
  oss_api_key Konstante varchar2 (256): = 'your_api_key';

  l_newline varchar2 (50): = chr (13) || chr (10);
  lco_boundary Konstante varchar2 (30): = 'gc0p4Jq0M2Yt08jU534c0p';
 
  l_http_request utl_http.req;
  l_request_body clob;
  l_request_body_length number;
 
  l_http_response utl_http.resp;
  l_response_header_name varchar2 (256);
  l_response_header_value varchar2 (1024);
  l_response_body varchar2 (32767);
 
  l_offset number: = 1;
  l_Betragsnummer: = 2000;
  l_buffer varchar2 (2000);

  v_blob blob;
  v_buffer raw (32767);
  v_file bfile: = bfilename ('MYDIR', 'SampleDoc.pdf');
  v_length integer;
  v_offset number (15): = 1;
  v_amount number (15): = 32767;

Wenn Sie die Produktionsumgebung verwenden, verwenden Sie die URL "https://apps.esignlive.com/api". Stellen Sie sicher, dass Sie den Platzhaltertext durch Ihren API_KEY ersetzen. Sie finden diesen Wert auf der Seite KONTO, wenn Sie in Ihrem OneSpan Sign-Konto angemeldet sind.

Bei anderen Variablen werden diejenigen, die mit "l_" beginnen, zum Erstellen der HTTP-Anforderung verwendet, und diejenigen, die mit "v_" beginnen, werden speziell zum Hochladen der Dokumentbinärdaten verwendet. Diese Namenskonvention kann dabei helfen, die Codierung zu organisieren und sicherzustellen, dass sie leicht zu befolgen ist.

Jetzt sind wir bereit, die Prozedur zu konstruieren. Der folgende Abschnitt zeigt, wie Sie das Anforderungsobjekt initialisieren und den Anforderungsheader erstellen.

Start
  l_http_request: = utl_http.begin_request (
                      url => oss_api_url || '/Pakete',
                      Methode => 'POST',
                      http_version => 'HTTP / 1.1'
                    );
  utl_http.set_wallet ('Datei: C: \ wallet5', NULL);
  utl_http.set_header (l_http_request, 'Authorization', 'Basic' || oss_api_key); 
  utl_http.set_header (l_http_request, 'Inhaltstyp', 'mehrteilige / Formulardaten; border = "' || lco_boundary || '"');
  utl_http.set_header (l_http_request, 'Transfer-Encoding', 'chunked');

Hinweis:

- Denken Sie daran, eine Brieftasche für Ihre HTTPS-Verbindung einzurichten
- Sie müssen "Transfer-Encoding" explizit auf "Chunked" setzen. (Siehe hierzu offizielle Dokumentation aus Gründen)

Out Stream Document Binary 

Bevor wir mit dem Codieren fortfahren, wollen wir einen kurzen Überblick über die Konstruktion eines Anforderungshauptteils geben: 9-4-1

Das obige Bild gibt Ihnen eine Vorstellung davon, wie ein HTTP-Anforderungshauptteil mit mehreren Teilen / Formulardaten aussehen sollte, wie Sie Ihre Inhaltsdisposition so benennen können, dass sie vom OneSpan Sign-System erkannt wird, wo Sie neue hinzufügen müssen Linie und wie man die Grenze verwendet, um die verschiedenen Teile zu trennen. 

Eine ausführlichere Beschreibung dieser Details finden Sie in unserem Blog. “ Laden Sie mehrere Dokumente mit REST hoch ”.

Die Schlüsselfunktion, die wir zur Ausgabe des Anforderungshauptteils genutzt haben, ist "utl_http.write_raw (REQ r, RAW-Daten)". Dadurch können wir das Anforderungsobjekt und Rohtypdaten übergeben. Durch die Kombination mit der Funktion "utl_raw.cast_to_raw (l_buffer))" können wir varchar / string in raw konvertieren. 

  l_request_body: = l_newline
|| '-' || lco_boundary || l_newline
|| 'Inhaltsdisposition: Formulardaten; name = "Datei"; Dateiname = "file.pdf" '|| l_newline
|| 'Inhaltstyp: application / pdf' || l_newline
|| l_newline;

  l_request_body_length: = dbms_lob.getlength (l_request_body);

  während l_offset 

Um die Binärdaten des Dokuments auszugeben, lesen wir zuerst das Dokument aus dem Dateipfad und laden es als BLOB-Objekt. Wir werden dann die Länge der Datei durchlaufen, um einen bestimmten Versatz vom Blob zum RAW-Typ zu lesen und die HTTP-Anforderung jedes Mal in einem Block zu senden.

  dbms_lob.createtemporary (v_blob, true, dbms_lob.call);
  dbms_lob.open (v_file, dbms_lob.lob_readonly);
  dbms_lob.open (v_blob, dbms_lob.lob_readwrite);
  v_length: = dbms_lob.getlength (v_file);
  dbms_lob.loadfromfile (v_blob, v_file, v_length);

  während v_offset 

Vergessen Sie nicht, den Stream am Ende zu schließen.

  dbms_lob.close (v_file);
  dbms_lob.close (v_blob);

Build Request Payload

Anschließend versenden wir den Nutzlastteil auf ähnliche Weise. Sehen Sie sich das Bild oben an, um sicherzustellen, dass in der Mitte des Codes keine kleinen Fehler auftreten. Das Ausdrucken Ihres Anforderungshauptteils ist eine gute Möglichkeit, um selbst zu überprüfen, ob der Code funktioniert.

l_request_body: = 
 l_newline
 || l_newline
|| '-' || lco_boundary || l_newline
|| 'Inhaltsdisposition: Formulardaten; name = "payload" '|| l_newline
|| l_newline
|| '{"name": "aus Oracle erstellte Transaktion", "documents": [{"name": "document1"}]}' || l_newline
|| '-' || lco_boundary || '-';
 
  l_request_body_length: = dbms_lob.getlength (l_request_body);
  l_offset: = 1;

  während l_offset 

Fast fertig! Die einzige verbleibende Arbeit besteht darin, die Antwortparameter auszudrucken und die Ausnahmen zu behandeln. Dies wird im nächsten Blog behandelt. 

Führen Sie den Code aus

Führen Sie die Prozedur aus, und der Antwortstatus wird in der Konsole ausgedruckt.

SERVEROUTPUT EINSTELLEN
EXEC create_package2 ();

Wenn Sie den API-Aufruf erfolgreich durchgeführt haben, wird im Antworttext der Status "200" mit der Paket-ID angezeigt:9-4-2

Ist dies nicht der Fall, wird auch die Fehlermeldung angezeigt. 9-4-3

Wenn Sie Fragen zu diesem Blog oder zu anderen Aspekten der Integration von OneSpan Sign in Ihrer Anwendung haben, besuchen Sie die Entwickler-Community-Foren . Ihr Feedback ist uns wichtig!

OneSpan Sign-Entwickler-Community

OneSpan Sign-Entwickler-Community

Treten Sie der OneSpan Sign Developer Community bei! Foren, Blogs, Dokumentationen, SDK-Downloads und mehr.

Tritt heute bei