Ejemplo n.º 1
0
        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);
        }