Flujo de ejemplo para refirmar un documento

1: hacemos la primera firma

POST:

{
  "notification" : {
    "text" : "Ejemplo refirmado PDF",
    "detail" : "PDF firmado en dos flujos distintos",
    "devices" : [ {
      "appCode" : "com.viafirma.mobile.ios.documents",
      "code" : "benito",
      "type" : "IOS",
      "userCode" : "benito"
    } ]
  },
  "document" : {
    "templateCode" : "sample_refirmado",
    "items" : [ {
      "key" : "fecha",
      "value" : "21/02/2017",
      "type" : "todayText",
      "size" : "",
      "update" : ""
    } ]
  }
}

RESPONSE:

Code 200
1487689635773R368

Recuperamos el PDF

(damos por hecho de que ya tenemos callback de firma OK y recuperamos el PDF firmado con un simple GET.

GET:

https://sandbox.viafirma.com/documents/api/v3/documents/download/signed/1487689635773R368

RESPUESTA:

200

con el siguiente body:

{
  "link": "https://sandbox.viafirma.com/documents/download?id=1487689635773R368.pdf/f9017f60-e186-43f9-b87c-00204ec0a55a",
  "md5": "dd2ac57be733353154746538026bedb8",
  "fileName": "1487689635773R368.pdf",
  "expires": 1487690474552
}

Con esta respuesta ya tendremos a nuestra disposicin el PDF que contiene la primera firma.

2A: refirmamos el PDF: alternativa Type B64

Convertimos el PDF a B64

Para poder pasar el PDF que incluye la primera firma al servicio, debemos antes codificarlo a B64. Para el ejemplo, se puede usar el siguiente encoder online:

http://www.motobit.com/util/base64-decoder-encoder.asp

Segunda firma del PDF

En este caso, haremos un POST con una variación en el servicio, especificando que el PDF lo vamos a pasar en B64, tal y como se muestra en el siguiente detalle:

{
  "document" : {
    "templateReference" : "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlL1hPY...(acortado)...",
    "templateType" : "base64"
  }
}

POST:

nota: este JSON de ejmplo tiene acortado el B64 del PDF para facilitar su lectura. Debes usar el B64 completo para poder seguir el ejemplo. En el siguiente enlace puedes descargar uno completo: post_sample_b64_reference

{
  "notification" : {
    "text" : "Demo 001",
    "detail" : "Ejemplo de firma de un documento disponible en una url",
    "devices" : [ {
      "appCode" : "com.viafirma.mobile.ios.documents",
      "code" : "benito",
      "type" : "IOS",
      "userCode" : "benito"
    } ]
  },
  "document" : {
    "templateReference" : "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlL1hPY...(acortado)...",
    "templateType" : "base64"
  },
  "policies" : [ {
    "evidences" : [ {
      "type" : "SIGNATURE",
      "helpText" : "Segunda Firma",
      "typeFormatSign" : "XADES_B"
    } ],
    "signatures" : [ {
      "type" : "SERVER",
      "helpText" : "Server signature",
      "typeFormatSign" : "PADES_LTA"
    } ]
  } ]
}

RESPUESTA:

200 - 1487691331472R594

A partir de este momento, el PDF ya ha llegado a un nuevo dispositivo para su firma, y cuando ésta se produzca, podremos recuperar el PDF que ya incluirá 2 firmas, y para ello repetiremos el GET para obtener el documento firmado usando el nuevo código de mensaje recibido en nuestro último POST:

GET:

https://sandbox.viafirma.com/documents/api/v3/documents/download/signed/1487691331472R594

2B: refirmamos el PDF: alternativa Template Type URL

Con Type URL pasaremos una URI al servicio, donde estará el PDF que deseamos refirmar. A diferencia del Type b64 aquí no será necesario trabajar con el PDF inicial ni convertirlo a B64. Esta modalidad de firma sólo es compatible si la configuración de seguridad en la descarga de documentos firmados está activada y debidamente configurada, ya que el servicio para obtener documentos firmados incluye un ciclo de vida basado en tiempo y/o número de descargas.

Para ello partimos de la base en el que el integrador YA tiene el PDF con la primera firma. Este PDF lo podría publicar en una URI gestionado por su propio backoffice, o bien usar la URI facilitada por el backend de documents teniendo en cuenta la restricción de seguridad descrtia en el párrafo anterior.

Para facilitar las pruebas, se pueden usar URIs generadas por repositorios públicos, por ejemplo dropbox.

{
  "document" : {
    "templateReference" : "https://sandbox.viafirma.com/documents/download?id=1487689635773R368.pdf/f9017f60-e186-43f9-b87c-00204ec0a55a",
    "templateType" : "url"
  }
}

El post quedaría como sigue:

POST:

{
  "notification" : {
    "text" : "Demo 001",
    "detail" : "Ejemplo de firma de un documento disponible en una url",
    "devices" : [ {
      "appCode" : "com.viafirma.mobile.ios.documents",
      "code" : "benito",
      "type" : "IOS",
      "userCode" : "benito"
    } ]
  },
  "document" : {
    "templateReference" : "https://sandbox.viafirma.com/documents/download?id=1487689635773R368.pdf/f9017f60-e186-43f9-b87c-00204ec0a55a",
    "templateType" : "url"
  },
  "policies" : [ {
    "evidences" : [ {
      "type" : "SIGNATURE",
      "helpText" : "Segunda Firma",
      "typeFormatSign" : "XADES_B"
    } ],
    "signatures" : [ {
      "type" : "SERVER",
      "helpText" : "Server signature",
      "typeFormatSign" : "PADES_LTA"
    } ]
  } ]
}

results matching ""

    No results matching ""