Saltar al contenido

Firmar contratos con HelloSign API y ASP.NET MVC

Creamos un controlador llamado BaseController , que utilizamos para almacenar la clave de la API y el ID de cliente

12345clase pública BaseController : Controlador{ cadena protegida HelloSignAPIKey = ConfigurationManager.AppSettings["HelloSignAPIKey"]; cadena protegida HelloSignClientID = ConfigurationManager.AppSettings["HelloSignClientID"];}

c#

Firmar contratos con HelloSign API y ASP.NET MVC
Firmar contratos con HelloSign API y ASP.NET MVC

Entonces creamos un controlador llamado SignController , que hereda de nuestro controlador base. En nuestro controlador crearemos una acción GET llamada SendDocument :

12345public ActionResultado SendDocument(){ SendDocumentViewModel model = nuevo SendDocumentViewModel(); retorno View(model);}

c#

Añadimos las clases SendDocumentFormModel y SendDocumentViewModel para enviar y recibir datos de la vista

1234567891011121314151617181920clase pública SendDocumentFormModel{ [Requerido] cadena pública Subject { get; set; } [Requerido] public string Mensaje { get; set; } [Requerido] [DisplayName("Correo electrónico del firmante")] public string SignerEmail { get; set; } [Requerido] [DisplayName("Nombre del firmante")] cadena pública SignerName { get; set; } [Requerido] public HttpPostedFileBase File File { get; set; }}

c#

1234clase pública SendDocumentViewModel{ public SendDocumentFormModel Form { get; set; }}

c#

Ahora creamos la acción POST para SendDocument.

12345678910111213141516171819202122[HttpPost]public ActionResult SendDocument(SendDocumentFormModel Form){ if(!ModelState.IsValid) { SendDocumentViewModel model = new SendDocumentViewModel(); model. Form = Formulario; return View(model); } var client = new Client(HelloSignAPIKey); var request = new SignatureRequest(); request.Subject = Form.Subject; request.Message = Form.Message; request.AddSigner(Form.SignerEmail, Form. SignerName); byte[] arreglo = new byte[Form.File.ContentLength]; form.File.InputStream.Read(arreglo, 0, Form.File.ContentLength); request.AddFile(arreglo, Form.File.FileName); request.TestMode = true; var response = client. CreateEmbeddedSignatureRequest(request, HelloSignClientID); var urlSign = client.GetSignUrl(response.Signatures[0].SignatureId); return RedirectToAction("Sign", new { url = urlSign.SignUrl });}

c#

La respuesta al envío del documento será una URL con el archivo incrustado listo para ser firmado.

Para terminar nuestro formulario, creamos la vista para subir documentos.

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152@usando(Html.BeginForm(null,null,FormMethod.Post,new{enctype="multipart/form-data"})){<div /> @Html. ValidationSummary(true",new{ @})<div @Html.LabelFor(model => model.Form.Subject, htmlAttributes:new{ @})<div @Html.EditorFor(model => model.Form.Subject,new{ htmlAttributes =new{ @}}) @Html.ValidationMessageFor(model => model.Form. Subject,"",new{ @})</div></div>www.html.labelFor(model => model.Form.Message, htmlAttributes:new{ @})<div @Html.EditorFor(model => model.Form.Message, new{ htmlAttributes =new{ @}}) @Html.ValidationMessageFor(model => model. Form.Message,"",new{ @})</div;</div;;div @Html.LabelFor(model => model.Form.SignerEmail, htmlAttributes:new{ @})<div @Html.EditorFor(model => model.Form.SignerEmail,new{ htmlAttributes =new{ @, type="email"}}) @Html.ValidationMessageFor(model => model.Form.SignerEmail,"",new{ @})</div></div>div @Html.LabelFor(model => model.Form. SignerName, htmlAttributes:new{ @})<div @Html.EditorFor(model => model.Form.SignerName,new{ htmlAttributes =new{ @}}) @Html.ValidationMessageFor(model => model.Form. SignerName,"",new{ @})</div></div><div @Html.LabelFor(model => model.Form.File, htmlAttributes:new{ @})<div type="file" name="Form.File"/> @Html. ValidationMessageFor(model => model.Form.File,"",new{ @})</div></div>;div col-md-10"><input type="submit "value="Create"/mph;</div></div>}

cs

Nuestra visión debería ser similar a la siguiente: