OneSpan Sign Cómo: Crear y enviar un paquete con REST en Perl

Perl es un lenguaje de programación de propósito general que fue originalmente pensado para la manipulación de texto. Sin embargo, hoy en día se utiliza en una gran variedad de aplicaciones, como el desarrollo web. A lo largo de los años, ganó popularidad entre los desarrolladores debido a su flexibilidad, portabilidad, utilidad y sus variadas características. También es uno de los lenguajes de programación más populares cuando se trata de programación CGI (Common Gateway Interface) en la Web. En este blog, le mostraré cómo crear y enviar un paquete con la API REST en Perl.
El Código
Para mi ejemplo, utilizaré Perl Strawberry 5.24 para Windows. Si aún no lo tienes instalado, puedes descargarlo desde la web oficial, aquí. El código de ejemplo completo está disponible en nuestra Comunidad de Desarrolladores Code Share.
Empecemos. En su editor de texto favorito, cree un nuevo archivo con el nombre "CreateAndSendPackage.pl" y guárdelo en una ubicación de su elección. Puedes seguir adelante y copiar el código de abajo. Más adelante lo explicaré con más detalle.
use LWP::UserAgent; use File::Slurp; use warnings; use strict; my $ua = LWP::UserAgent->new; $ua->timeout(10); $ua->default_header('Accept-Encoding' => scalar HTTP::Message::decodable()); $ua->add_handler("request_send", sub { shift->dump; return }); my $url = "https://sandbox.esignlive.com/api/packages"; my $json = '{"documents":[{"approvals":[{"id": "ExampleSignatureId", "role": "Signer1", "fields":[{"page":0, "top":507, "subtype": "LABEL", "height":60, "left":573, "width":122, "id": "dateField", "type": "INPUT", "binding":"{approval.signed}"},{"id": "signatureField", "page":0, "top":507, "subtype": "FULLNAME", "height":60, "left":213, "width":312, "type": "SIGNATURE"}], "name":""}], "id": "sample-contract", "name": "Test Document"}], "status": "SENT", "type": "PACKAGE", "roles":[{"id": "Signer1", "type": "SIGNER", "signers":[{"email": "[email protected]", "firstName": "John", "lastName": "Smith", "id": "Signer1"}], "name": "Signer1"}], "name": "Create and Send Package in Perl"}'; my $pdf = "sample_contract.pdf"; my $field_nam
Ahora, repasemos el código con más detalle. El primer par de líneas importa los módulos necesarios para realizar peticiones HTTP a la API de OneSpan Sign.
use LWP::UserAgent; use File::Slurp; use warnings; use strict;
Estos módulos vienen preinstalados con Perl Strawberry. A continuación, tendremos que crear nuestro objeto Agente de Usuario. En concreto, este objeto implementa un agente de usuario web capaz de realizar peticiones HTTP/S. También he configurado el agente de usuario de manera que se agote el tiempo de espera después de 10 segundos e imprima la solicitud en la consola para fines de depuración.
my $ua = LWP::UserAgent->new; $ua->timeout(10); $ua->default_header('Accept-Encoding' => scalar HTTP::Message::decodable()); $ua->add_handler("request_send", sub { shift->dump; return });
La siguiente línea es la url del punto final al que se hará la petición POST.
my $url = "https://sandbox.esignlive.com/api/packages";
A continuación, se crea la cadena JSON que define su paquete. Lo normal es que construyas tu cadena JSON de forma dinámica en lugar de tener una cadena grande como en este ejemplo. He optado por hacerlo así por simplicidad.
my $json = '{"documents":[{"approvals":[{"id": "ExampleSignatureId", "role": "Signer1", "fields":[{"page":0, "top":507, "subtype": "LABEL", "height":60, "left":573, "width":122, "id": "dateField", "type": "INPUT", "binding":"{approval.signed}"},{"id": "signatureField", "page":0, "top":507, "subtype": "FULLNAME", "height":60, "left":213, "width":312, "type": "SIGNATURE"}], "name":""}], "id": "sample-contract", "name": "Test Document"}], "status": "SENT", "type": "PACKAGE", "roles":[{"id": "Signer1", "type": "SIGNER", "signers":[{"email": "[email protected]", "firstName": "John", "lastName": "Smith", "id": "Signer1"}], "name": "Signer1"}], "name": "Create and Send Package in Perl"}';
A continuación, se crean algunas variables para realizar nuestra petición POST. Tenga en cuenta que en mi ejemplo, mi documento PDF está en el mismo directorio que mi script Perl. Si su documento PDF se encuentra en otro lugar, tendrá que poner la ruta completa del documento en lugar de limitarse a declarar su nombre.
my $pdf = "contrato_de_muestra.pdf"; my $nombre_de_campo_1 = "archivo"; my $nombre_de_campo_2 = "carga útil";
Por último, establecemos las cabeceras necesarias y hacemos nuestra petición HTTP POST. La respuesta se imprimirá posteriormente en la consola.
my $response = $ua->post( $url, Authorization => 'Basic your_api_key', Accept => 'application/json', Content_Type => 'form-data', Content => [ $field_name_1 => ["$pdf"] , $field_name_2 => $json] ); print $response->content;
Ejecutar su código
Abra su símbolo del sistema y cambie el directorio actual a la ubicación donde guardó su archivo "CreateAndSendPackage.pl". A continuación, introduzca la siguiente línea:
perl CreateAndSendPackage.pl
OneSpan Sign devolverá entonces un ID de paquete como respuesta, que se imprimirá en la ventana del símbolo del sistema.
Si tiene preguntas sobre este blog o cualquier otra cosa relacionada con la integración de OneSpan Sign en su aplicación, visite los foros de la comunidad de desarrolladores: https://developer.onespan.com. Eso es todo por mi parte. Gracias por leer Si te ha resultado útil este artículo, compártelo en Facebook, Twitter o LinkedIn.