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

en un blog anterior , Le mostré cómo crear una aplicación de formulario web PHP simple con OneSpan Sign. Sin embargo, en el código desglosé el proceso en tres solicitudes separadas. Es decir, después de que el usuario haya completado el formulario, se realizan tres llamadas HTTP a OneSpan Sign:
- Crear paquete
- Subir documento
- Enviar paquete
En este blog, le mostraré cómo puede simplificar el proceso y realizar las solicitudes anteriores en una sola llamada.
El código
Si aún no tiene PHP instalado, puede descargarlo desde sitio web oficial . El código de ejemplo completo también está disponible en la Comunidad de desarrolladores Código compartido .
Empecemos. En su editor de texto favorito, cree un nuevo archivo llamado "CreateAndSendPackage.php" y guárdelo en la ubicación que elija. Puede continuar y copiar el código a continuación. Lo examinaré con más detalle más abajo.
php define ("API_URL", "https://sandbox.esignlive.com/api/packages"); define ("MULTIPART_BOUNDARY", "---- WebKitFormBoundary7MA4YWxkTrZu0gW"); $ api_headers = array ( "Autorización: Basic api_key", "Aceptar: application / json; esl-api-version = 11.0", "Content-Type: multipart / form-data; boundary = \" ". MULTIPART_BOUNDARY. "\" ", ); $ json = matriz ( 'type' => 'PAQUETE', 'status' => 'ENVIADO', 'roles' => array ( formación( 'id' => 'Firmante1', 'type' => 'SIGNER', 'firmantes' => matriz ( formación( 'email' => 'mail72 @mailinator .com ', 'firstName' => 'John', 'lastName' => 'Smith', 'id' => 'Firmante1', ) ), ), formación( 'id' => 'Remitente1', 'type' => 'SIGNER', 'firmantes' => matriz ( formación( 'email' => 'mail71 @mailinator .com ', 'firstName' => 'Mike', 'lastName' => 'Smith', 'id' => 'Remitente1', ) ), ), ), 'name' => 'Ejemplo de aplicación PHP', 'documentos' => matriz ( formación( 'name' => 'Muestra de contrato', 'id' => 'contrato', 'extract' => 'true' ) ) ); $ postdata = "-". MULTIPART_BOUNDARY. "\ r \ n"; $ postdata. = "Content-Disposition: form-data; name = \" file \ "; filename = \" sample_contract2.pdf \ "\ r \ n \ r \ n"; $ postdata. = file_get_contents ("documents / sample_contract2.pdf"); $ postdata. = "\ r \ n \ r \ n"; $ postdata. = "-". MULTIPART_BOUNDARY. "\ r \ n"; $ postdata. = "Disposición de contenido: datos de formulario; nombre = \" carga útil \ "\ r \ n \ r \ n"; $ postdata. = json_encode ($ json); $ postdata. = "\ r \ n \ r \ n"; $ postdata. = "-". MULTIPART_BOUNDARY. "- \ r \ n"; $ curl = curl_init (API_URL); curl_setopt ($ curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ curl, CURLOPT_POST, verdadero); curl_setopt ($ curl, CURLOPT_POSTFIELDS, $ postdata); curl_setopt ($ curl, CURLOPT_HTTPHEADER, $ api_headers); curl_setopt ($ curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt ($ curl, CURLOPT_SSL_VERIFYPEER, false); curl_exec ($ curl); $ respuesta = curl_multi_getcontent ($ curl); curl_close ($ curl); echo mb_convert_encoding (print_r (json_decode ($ respuesta, verdadero), verdadero), 'CP932', 'UTF-8'); ?>
Ahora, repasemos el código con mayor detalle. El primer par de líneas define la constante necesaria para realizar llamadas RESTful a la API de OneSpan Sign. La constante API_URL es la URL del punto final donde haremos nuestra solicitud. El límite es un valor arbitrario y separa las múltiples "partes" de una solicitud multiparte / datos de formulario.
define ("API_URL", "https://sandbox.esignlive.com/api/packages"); define ("MULTIPART_BOUNDARY", "---- WebKitFormBoundary7MA4YWxkTrZu0gW");
A continuación, definimos los encabezados HTTP necesarios para realizar una solicitud POST a OneSpan Sign. Aquí, asegúrese de reemplazar el marcador de posición api_key con su propio valor.
$ api_headers = array ( "Autorización: Basic api_key", "Aceptar: application / json; esl-api-version = 11.0", "Content-Type: multipart / form-data; boundary = \" ". MULTIPART_BOUNDARY. "\" ", );
Luego, creamos la carga útil json que se incluirá junto con el documento PDF en la solicitud POST a OneSpan Sign.
$ json = matriz ( 'type' => 'PAQUETE', 'status' => 'ENVIADO', 'roles' => array ( formación( 'id' => 'Firmante1', 'type' => 'SIGNER', 'firmantes' => matriz ( formación( 'email' => 'mail72 @mailinator .com ', 'firstName' => 'John', 'lastName' => 'Smith', 'id' => 'Firmante1', ) ), ), formación( 'id' => 'Remitente1', 'type' => 'SIGNER', 'firmantes' => matriz ( formación( 'email' => 'mail71 @mailinator .com ', 'firstName' => 'Mike', 'lastName' => 'Smith', 'id' => 'Remitente1', ) ), ), ), 'name' => 'Ejemplo de aplicación PHP', 'documentos' => matriz ( formación( 'name' => 'Muestra de contrato', 'id' => 'contrato' ) ) );
Una vez que haya definido la carga útil de json, el siguiente paso es crear la solicitud de datos multiparte / formulario, como se muestra a continuación.
$ postdata = "-". MULTIPART_BOUNDARY. "\ r \ n"; $ postdata. = "Content-Disposition: form-data; name = \" file \ "; filename = \" sample_contract2.pdf \ "\ r \ n \ r \ n"; $ postdata. = file_get_contents ("documents / sample_contract2.pdf"); $ postdata. = "\ r \ n \ r \ n"; $ postdata. = "-". MULTIPART_BOUNDARY. "\ r \ n"; $ postdata. = "Disposición de contenido: datos de formulario; nombre = \" carga útil \ "\ r \ n \ r \ n"; $ postdata. = json_encode ($ json); $ postdata. = "\ r \ n \ r \ n"; $ postdata. = "-". MULTIPART_BOUNDARY. "- \ r \ n";
Finalmente, ejecuta su solicitud de cURL y repite la respuesta enviada por OneSpan Sign.
$ curl = curl_init (API_URL); curl_setopt ($ curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ curl, CURLOPT_POST, verdadero); curl_setopt ($ curl, CURLOPT_POSTFIELDS, $ postdata); curl_setopt ($ curl, CURLOPT_HTTPHEADER, $ api_headers); curl_setopt ($ curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt ($ curl, CURLOPT_SSL_VERIFYPEER, false); curl_exec ($ curl); $ respuesta = curl_multi_getcontent ($ curl); curl_close ($ curl); echo mb_convert_encoding (print_r (json_decode ($ respuesta, verdadero), verdadero), 'CP932', 'UTF-8');
Ejecutando su código
Abra su símbolo del sistema y cambie el directorio actual a la ubicación donde guardó su archivo "CreateAndSendPackage.php". Luego, ingrese las siguientes líneas:
php CreateAndSendPackage.php
OneSpan Sign devolverá una identificación del 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 de mi parte. ¡Gracias por leer! Si esta publicación le parece útil, compártala en Facebook, Twitter o LinkedIn.
Haris Haidary
Evangelista Técnico Junior
LinkedIn El | Gorjeo