Procesar respuesta firma .Net

Clase en la aplicación de ejemplo

Para procesar la respuesta de viafirma platform nos ayudaremos de la clase Default.aspx dentro del directorio viafirma que tendremos a la eschucha en la aplicación, que deberá importar la calse Viafirma.ViafirmaClient , y tendrá que implementa el siguiente método:

  • ProcessResponseSign: viafirma platform ha recuperado correctamente los datos del de la firma y nos lo devuelve para que nuestra aplicación los procese y decida qué hacer con ellos.

En la respuesta recibida, se invocará y se redirigirá a la página indicada. En este método son recuperados los datos de la firma, los cuales vendrán contenidos en el objeto FirmaInfoViafirma.

En el siguiente ejemplo, si la firma ha sido correcta, guardamos los datos del usuario en la request y redireccionamos al usuario final a una página de destino.

<%@ Page  Language="C#" Inherits="Viafirma.ViafirmaClient"  %>
<%--
Página para la gestión de la comunicación con Viafirma.
Nota: Esta página nunca sera visible por el usuario, solo es utilizada para gestionar las refirecciones y configuración específica.
--%>
<script runat="server" >

    // Al gargar la página se realiza todo el procesado para el intercambio de información con Viafirma.
public void Page_Load(Object sender, EventArgs e){
    //Es posible enviar ciertos parametros al servidor en este punto para obtener algunas funcionalidades adicinales
    //this.AddOptionalRequest(PEM); //Obliga a que el servidor envíe el certificado firmante
    //this.AddOptionalRequest(AUTO_SEND); //Si la plataforma detecta solo un certificado, lo utiliza por defecto
    try
    {
        ProcessViafirma();
    }
    catch (InvalidOperationException exc)
    {
        System.Console.WriteLine(exc.Message);
        String messageError = exc.Message;
        Uri url = new Uri(HttpContext.Current.Request.Url, HttpContext.Current.Response.ApplyAppPathModifier("~/errorPage.aspx?errorMessage=" + exc.Message));
        HttpContext.Current.Response.Redirect(url.AbsoluteUri);
    }

}


override public void ProcessResponseSign(Viafirma.Estado estado,Viafirma.FirmaInfoViafirma firma){
    Viafirma.Log.Debug("Firma Viafirma realizada correctamente.");
    // Aquí ya tenemos todos los datos asociados al cliente y a su firma.
    //redireccionamos al usuario a la página destino considerando el usuario ya ha finalizado la firma.
    if(Viafirma.Estado.OK== estado)
    {
        Session["resultadoFirma"]= firma;
        Uri url=new Uri(HttpContext.Current.Request.Url, HttpContext.Current.Response.ApplyAppPathModifier("~/resultadoFirma.aspx"));
        HttpContext.Current.Response.Redirect(url.AbsoluteUri);
    }
    else if (Viafirma.Estado.FAIL == estado)
    {
        string error = getCodError();
        string mensage = getMessage();
        // Hay problemas al validar.
        System.Console.WriteLine("Hay problemas al realizar la firma CodError="+ error + " Mensage="+mensage);
        throw new Exception("Hay problemas al realizar la verificacion CodError="+ error + " Mensage="+mensage);
    }
    else if (Viafirma.Estado.CANCEL == estado)
    {
        System.Console.WriteLine("El usuario canceló la operación");
        Uri url = new Uri(HttpContext.Current.Request.Url, HttpContext.Current.Response.ApplyAppPathModifier("~/"));
        HttpContext.Current.Response.Redirect(url.AbsoluteUri);

    }
    else
    {
        System.Console.WriteLine("Proceso cancelado por el usuario");
        // throw new Exception("Proceso cancelado por el usuario");

    }
}
</script>

results matching ""

    No results matching ""