public ActionResult Cancelar(Guid Id) { try { CFDI Factura = db.GetCFDI(Id, 1).FirstOrDefault(); GetPAC_Result PAC = db.GetPAC(null, 0).Where(x => x.Id == Factura.IdProveedor).First(); RVCFDI33.RVCancelacion.Cancelacion Cancelar = new RVCFDI33.RVCancelacion.Cancelacion(); string Certificado = Server.MapPath("~/Certificados/" + PAC.RFC + "/" + PAC.RFC + ".cer"), Llave = Server.MapPath("~/Certificados/" + PAC.RFC + "/" + PAC.RFC + ".key"), Cancelacion = Server.MapPath("~/Facturas/" + PAC.RFC + "/Cancelaciones"); string cadenaCancelacion = Cancelar.crearXMLCancelacionCadena(Certificado, Llave, PAC.ContrasenaLlave, Factura.Id.ToString()); if (Cancelar.MensajeDeError == "") { //Cancelar.enviarCancelacionCadena(cadenaCancelacion, PAC.RFC, PAC.Contrasena, "http://generacfdi.com.mx/rvltimbrado/service1.asmx"); if (Cancelar.CodigoDeError == 0) { if (!System.IO.Directory.Exists(Cancelacion)) { System.IO.Directory.CreateDirectory(Cancelacion); } System.IO.File.WriteAllText(Cancelacion + "\\Cancelacion_" + Factura.Folio + ".xml", cadenaCancelacion); db.UpdateCFDI(Id, Factura.Tipo, Factura.Folio, Factura.XML, Factura.Ruta, Factura.IdCliente, Factura.IdEmpleado, Factura.IdProveedor, true); return(Json(new { error = false }, JsonRequestBehavior.AllowGet)); } else { return(Json(new { error = "Error Al enviar la Cadena De Cancelacion", Message = Cancelar.MensajeDeError }, JsonRequestBehavior.AllowGet)); } } else { return(Json(new { error = "Error Al hacer la Cadena De Cancelacion", Message = Cancelar.MensajeDeError }, JsonRequestBehavior.AllowGet)); } } catch (Exception ex) { return(Json(new { error = "error", Message = ex.Message }, JsonRequestBehavior.AllowGet)); } }