public BaseResponse ValidateUserCredentials(DataContracts.MobileModel.User pNewUser, bool pIsProduction = false) { var vResponse = new BaseResponse(); vResponse.IsSuccessful = false; // Validacion de Credenciales var vServicioBLL = new ServicioBLL(); Reply vTokenReplyMessage = new Reply(); var vUsuarioHacienda = new UsuarioHacienda(); vUsuarioHacienda.modalidadProduccion = pIsProduction; vUsuarioHacienda.urlhaciendaAuthApiDesarrollo = BillingConstants.UrlhaciendaAuthApiDesarrollo; vUsuarioHacienda.urlhaciendaAuthApiProduccion = BillingConstants.UrlhaciendaAuthApiProduccion; vUsuarioHacienda.username = pNewUser.HaciendaUsername; vUsuarioHacienda.password = pNewUser.HaciendaPassword; vTokenReplyMessage = vServicioBLL.fGenerarToken(vUsuarioHacienda); if (vTokenReplyMessage != null && vTokenReplyMessage.ok && vTokenReplyMessage.token != null && !string.IsNullOrEmpty(vTokenReplyMessage.token.access_token)) { vTokenReplyMessage = new Reply(); vUsuarioHacienda.Certificado = Convert.FromBase64String(pNewUser.HaciendaCryptographicFile); vUsuarioHacienda.Pin = Convert.ToString(pNewUser.HaciendaCryptographicPIN); vTokenReplyMessage = vServicioBLL.fValidarCertificado(vUsuarioHacienda); if (vTokenReplyMessage != null && vTokenReplyMessage.ok) { vResponse.UserMessage = "Usuario Validado con éxito"; vResponse.IsSuccessful = true; } else { vResponse.UserMessage = vTokenReplyMessage?.msg; vResponse.IsSuccessful = false; } /* * Dim vUsuarioHacienda As New UsuarioHacienda() * Dim vReply As New Reply * * ' Asigna datos * vUsuarioHacienda.Certificado = IO.File.ReadAllBytes(txtCertificado.Text) * vUsuarioHacienda.Pin = txtCertificadoPIN.Text * * ' Valida PIN y Certificado * vReply = vServicioBLL.fValidarCertificado(vUsuarioHacienda) */ } else { vResponse.UserMessage = vTokenReplyMessage?.msg; vResponse.IsSuccessful = false; } /* * Dim vUsuarioHacienda As New UsuarioHacienda() * * ' Asigna datos * vUsuarioHacienda.modalidadProduccion = False * vUsuarioHacienda.urlhaciendaAuthApiDesarrollo = vUrlhaciendaAuthApiDesarrollo * vUsuarioHacienda.urlhaciendaAuthApiProduccion = vUrlhaciendaAuthApiProduccion * vUsuarioHacienda.username = txtUsuarioHacienda.Text * vUsuarioHacienda.password = txtClaveHacienda.Text * * ' Genera Token * vReply = vServicioBLL.fGenerarToken(vUsuarioHacienda) * * If Not vReply.token Is Nothing Then * MessageBox.Show("Mensaje: " & vReply.msg & Chr(13) & _ * "Token: " & vReply.token.access_token) * Else * MessageBox.Show("Mensaje: " & vReply.msg & Chr(13) & "Token: NULL") * End If */ return(vResponse); }
public static BaseResponse TryToRefreshBillStatus(ref BillEntity pBill) { BaseResponse vResponse = new BaseResponse { IsSuccessful = false }; try { var vServicioBLL = new ServicioBLL(); var vTributacionBLL = new TributacionBLL(); var vUsuarioHacienda = new UsuarioHacienda(); // Datos de Hacienda vUsuarioHacienda.username = pBill.Client.User.HaciendaUsername; vUsuarioHacienda.password = pBill.Client.User.HaciendaPassword; vUsuarioHacienda.Pin = pBill.Client.User.HaciendaCryptographicPIN; vUsuarioHacienda.Certificado = pBill.Client.User.HaciendaCryptographicFile; vUsuarioHacienda.modalidadProduccion = false; vUsuarioHacienda.urlhaciendaAuthApiDesarrollo = UrlhaciendaAuthApiDesarrollo; vUsuarioHacienda.urlhaciendaAuthApiProduccion = UrlhaciendaAuthApiProduccion; vUsuarioHacienda.urlhaciendaApiDesarrollo = UrlhaciendaApiDesarrollo; vUsuarioHacienda.urlhaciendaApiProduccion = UrlhaciendaApiProduccion; var vReplyValidaCertificado = vServicioBLL.fValidarCertificado(vUsuarioHacienda); if (vReplyValidaCertificado.ok) { var vReplyGeneraToken = vTributacionBLL.fGeneraToken(vUsuarioHacienda); if (vReplyGeneraToken.ok && vReplyGeneraToken.contingencia == false) { Boolean vValidAnswer = false; for (int vCounter = 0; vCounter < MaxRetryCount && !vValidAnswer; vCounter++) { var vReplyObtieneRespuesta = vTributacionBLL.fObtenerDocumento(vUsuarioHacienda, pBill.DocumentKey, vReplyGeneraToken.token); pBill.ReasonPhraseGETHacienda = vReplyObtieneRespuesta.reasonPhraseGETHacienda; pBill.StatusCodeGETHacienda = vReplyObtieneRespuesta.statusCodeGETHacienda; if (vReplyObtieneRespuesta.ok) { pBill.XMLReceivedFromHacienda = vReplyObtieneRespuesta.xmlRespuesta; switch (vReplyObtieneRespuesta.msg) { case "ACEPTADO": pBill.SystemMesagges = "Documento: " + pBill.DocumentKey + " | POST Hacienda: True | GET Hacienda: True | Descripción: ACEPTADO"; vResponse.UserMessage = pBill.SystemMesagges; pBill.Status = BillStatus.Done.ToString(); vResponse.IsSuccessful = true; vValidAnswer = true; break; case "RECHAZADO": pBill.SystemMesagges = "Documento: " + pBill.DocumentKey + " | POST Hacienda: True | GET Hacienda: True | Descripción: RECHAZADO"; vResponse.UserMessage = pBill.SystemMesagges; pBill.Status = BillStatus.Rejected.ToString(); vResponse.IsSuccessful = false; vValidAnswer = true; break; case "PROCESANDO": pBill.SystemMesagges = "Documento: " + pBill.DocumentKey + " | POST Hacienda: True | GET Hacienda: True | Descripción: PROCESANDO"; pBill.Status = BillStatus.Processing.ToString(); break; default: pBill.SystemMesagges = "Documento: " + pBill.DocumentKey + " | POST Hacienda: True | GET Hacienda: True | Descripción: ERROR HACIENDA. CONTACTE A SOPORTE HACIENDA"; pBill.Status = BillStatus.Error.ToString(); break; } } else { pBill.SystemMesagges = "Documento: " + pBill.DocumentKey + " | POST Hacienda: True | GET Hacienda: True | Descripción: " + vReplyObtieneRespuesta.msg; pBill.Status = BillStatus.Error.ToString(); } pBill.SystemMesagges = vReplyObtieneRespuesta.estado + "-" + pBill.SystemMesagges + string.Format("| REASON GET: {0} | REASON POST: {1}", pBill.ReasonPhraseGETHacienda, pBill.ReasonPhrasePOSTHacienda); } } else { vResponse.UserMessage = vReplyGeneraToken.msg; vResponse.TechnicalMessage = vReplyGeneraToken.msg; } } else { vResponse.UserMessage = vReplyValidaCertificado.msg; vResponse.TechnicalMessage = vReplyValidaCertificado.msg; } } catch (Exception vEx) { vResponse.UserMessage = vEx.Message; vResponse.TechnicalMessage = vEx.ToString(); vResponse.IsSuccessful = false; } return(vResponse); }