protected IMovilwayApiResponse SecondKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID) { return(new TopUpResponseBody() { ResponseCode = 95, ResponseMessage = "ESTA INTENTANDO DUPLICAR UNA MISMA RECARGA", TransactionID = 0, ExternalTransactionReference = "", PointBalance = 0m, StockBalance = 0m, WalletBalance = 0m }); }
public abstract IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID);
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, string sessionID) { string providerName = "DebitNoteProvider"; DebitNoteRequestBody request = requestObject as DebitNoteRequestBody; DebitNoteResponseBody response = new DebitNoteResponseBody() { ResponseCode = 90, ResponseMessage = "Error inesperado", TransactionID = 0 }; logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[" + providerName + "] [SEND-DATA] DebitNoteProvider {AgentId=" + request.AgentId + ",Amount=" + request.Amount + ",Comment=" + request.Comment + ",SupportDocument=" + request.SupportDocument + "}"); if (sessionID.Equals("0")) { response.ResponseMessage = "Error de sesion"; logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[" + providerName + "] [RECV-DATA] DebitNoteResult {response={" + response + "}}"); return(response); } API.Utils.KinacuDb db = new API.Utils.KinacuDb(); do { SqlConnection connection = Movilway.API.Utils.Database.GetKinacuDbConnection(); SqlTransaction trx = null; bool success = false; try { connection.Open(); db.db = connection; InfoAgente originador = db.GetInfoAgente(null, request.AuthenticationData.Username); InfoAgente agencia = db.GetInfoAgente(request.AgentId); if (agencia == null || agencia.OwnerId != originador.BranchId) { response.ResponseMessage = "Agencia inválida"; break; } trx = connection.BeginTransaction(); db.databaseTransaction = trx; string comentario = string.Concat( "Agente ", originador.BranchId, ": ", string.IsNullOrEmpty(request.SupportDocument) ? string.Empty : string.Concat("Comp. ", request.SupportDocument, "-"), request.Comment); int id = db.CrearMovimientoCuentaCorriente((int)agencia.BranchId, request.Amount, comentario, false, Core.cons.TtrIdMovimientoCuentaCorrienteNotaDebito); if (id != 0) { success = true; response.ResponseCode = 0; response.ResponseMessage = string.Empty; response.TransactionID = id; db.InsertarMovimientoAuditoria((int)originador.BranchId, null, comentario, id, "FINANCIERO", "DECREMENTO"); trx.Commit(); // trx.Rollback(); trx.Dispose(); trx = null; db.databaseTransaction = null; } } catch (Exception ex) { ProviderLogger.ExceptionLow(() => TagValue.New() .MethodName(providerName) .Exception(ex)); } finally { if (!success && trx != null) { try { trx.Rollback(); } catch (Exception) { } } try { connection.Close(); } catch (Exception) { } } }while (false); logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[" + providerName + "] [RECV-DATA] DebitNoteResult {response={" + response + "}}"); return(response); }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID) { try { ChangePasswodRequestBody request = requestObject as ChangePasswodRequestBody; ChangePasswordResponseBody response = null; logger.InfoLow(() => TagValue.New().Message("[API] " + base.LOG_PREFIX + "[ChangePasswordProvider] Start").Tag("User").Value(request.AuthenticationData.Username).Tag("UserId").Value(request.UserId).Tag("AccessTypeId").Value(request.AccessTypeId)); response = new ChangePasswordResponseBody() { ResponseCode = 0, ResponseMessage = "Exito", TransactionID = 0, Result = Utils.ChangePassword(request.AuthenticationData.Username, request.DeviceType, request.UserId, request.AccessTypeId, request.NewPassword) }; if (response.Result == false) { response.ResponseMessage = "Contraseña no actualizada"; response.ResponseCode = 99; } logger.InfoLow(() => TagValue.New().Message("[API] " + base.LOG_PREFIX + "[ChangePasswordProvider] End").Tag("User").Value(request.AuthenticationData.Username).Tag("UserId").Value(request.UserId).Tag("AccessTypeId").Value(request.AccessTypeId)); return(response); } catch (Exception e) { //logger.ExceptionHigh(() => TagValue.New().Message("[API] " + base.LOG_PREFIX + "[GetUsersAgentProvider] Exception").Tag("User").Value(request.AuthenticationData.Username).Tag("Agent").Value(request.Agent)); logger.ExceptionHigh(() => TagValue.New().Exception(e).MethodName("ChangePassword").Tag("User").Value(requestObject.AuthenticationData.Username)); throw e; } }
/// <summary> /// Ejecuta la operacion validando los constrains de seguridad /// /// </summary> /// <param name="request"></param> /// <returns></returns> public IMovilwayApiResponse PerformSecureOperation(IMovilwayApiRequest request) { IMovilwayApiResponse response = null; //DATOS DE AUTENTICACION try { InitPrefix(); PrintLoginValues(request); //Validaciones de seguridad teniendo en cuenta los datos de la peticion SecureValidation(request); SecureAccessValidation(request); // String sessionID = null; if (!(request is GetSessionRequestBody)) { sessionID = GetSessionID(request); } SaleInterface kinacuWS = new SaleInterface(); // // CONDIGURACION INTERFAZ int timeOutSeconds = int.Parse(ConfigurationManager.AppSettings["DefaultTimeout"]); kinacuWS.Timeout = timeOutSeconds * 1000; response = PerformKinacuOperation(request, kinacuWS, sessionID); #region secondrequest //if (!ValidateNumberOfExecution(request)) // response = PerformKinacuOperation(request, kinacuWS, sessionID); //else //{ // if (_delegateSecondExecution == null) // throw new Exception("NO SE HA DEFINIDO EL MANEJADOR PARA LA SEGUNDA PETICION"); // bool isNew = false; // Func<int> callback = delegate() // { // logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [DOUBLE REQUEST] [CALL BACK] [IS NEW]"); // isNew = true; // return 1; // }; // int hascode = request.GetHashCode(); // logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [DOUBLE REQUEST VALIDATION] [" + hascode + "] "+_cacheRequest.ToString()); // //Action<object,object> oncache= delegate(object k , object v) // // { // // logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [DOUBLE REQUEST] [CALL BACK] [IS DOUBLE]"); // // isNew = false; // // }; // _cacheRequest.GetValue<int>(hascode, callback);//, oncache); // if (isNew) // { // response = PerformKinacuOperation(request, kinacuWS, sessionID); // } // else // { // logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [SecondExecution]"); // response = _delegateSecondExecution (request, kinacuWS, sessionID); // } //} #endregion if (bool.Parse(ConfigurationManager.AppSettings["LogoffAuto"] ?? "true")) { logger.InfoLow("[KIN] " + this.LOG_PREFIX + "[LogOffProvider] [SEND-DATA] logoffParameters {userid=" + sessionID + "}"); kinacuWS.LogOff(int.Parse(sessionID)); logger.InfoLow("[KIN] " + this.LOG_PREFIX + "[LogOffProvider] [RECV-DATA] logoffResult {nothing}"); } logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [OUTPUT] " + response.ToString()); } catch (Exception e) { logger.ErrorLow("[API] " + LOG_PREFIX + "[KinacuProvider] [EXCEPTION] Exception trying to serve KINACU Operation {message=" + e.Message + ",stackTrace=" + e.StackTrace + "}"); //SE DELEGA EL MANEJO DE LA EXPECION A QUIEN LO INVOCA GENERALMENTE SERVICEEXECUTIONDELEGATOR throw; #region intento de respuesta anterior //Type a = this.GetType().GetMethod("PerformOperation").ReturnType; //response = new AGenericApiResponse() { ResponseCode = 99, ResponseMessage = e.Message, TransactionID = 0 }; //Type name = MethodBase.GetCurrentMethod().GetType(); //ProviderLogger.ExceptionLow(() => TagValue.New().Message("Exception trying to serve KINACU Operation").Exception(e)); #endregion } return(response); }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID) { try { GetUsersAgentRequestBody request = requestObject as GetUsersAgentRequestBody; GetUsersAgentResponseBody response = null; logger.InfoLow(() => TagValue.New().Message("[API] " + base.LOG_PREFIX + "[GetUsersAgentProvider] Start").Tag("User").Value(request.AuthenticationData.Username).Tag("Agent").Value(request.Agent)); response = new GetUsersAgentResponseBody() { ResponseCode = 0, ResponseMessage = "Exito", TransactionID = 0, Users = Utils.GetUsers(request.Agent, request.AuthenticationData.Username, request.DeviceType, request.Onlychildren, request.ShowAccess) }; logger.InfoLow(() => TagValue.New().Message("[API] " + base.LOG_PREFIX + "[GetUsersAgentProvider] End").Tag("User").Value(request.AuthenticationData.Username).Tag("Agent").Value(request.Agent)); return(response); } catch (Exception e) { //logger.ExceptionHigh(() => TagValue.New().Message("[API] " + base.LOG_PREFIX + "[GetUsersAgentProvider] Exception").Tag("User").Value(request.AuthenticationData.Username).Tag("Agent").Value(request.Agent)); logger.ExceptionHigh(() => TagValue.New().Exception(e).MethodName("GetUsersAgentProvider").Tag("User").Value(requestObject.AuthenticationData.Username)); throw e; } }
private SecurityResponseBody dummyKinacuImplementation(IMovilwayApiRequest request, SaleInterface kinacuWS, string sessionID) { string result = ""; logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetSessionProvider] [SEND-DATA] loginParameters {accessId=" + request.AuthenticationData.Username + ",password=******,accessType=" + request.DeviceType + "}"); int newSessionResponse = kinacuWS.Login(request.AuthenticationData.Username, request.AuthenticationData.Password, request.DeviceType, out result); logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetSessionProvider] [RECV-DATA] loginResult {response=" + newSessionResponse + ",result=" + result + "}"); SecurityResponseBody response = new SecurityResponseBody() { ResponseCode = newSessionResponse != 0 ? 0 : GetResponseCode(result), TransactionID = 0, SessionID = newSessionResponse.ToString() }; if (newSessionResponse == 0) { response.ResponseMessage = result; } return(response); }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID) { if (sessionID.Equals("0")) { return new GetParametersResponseBody() { ResponseCode = 90, ResponseMessage = "error session", TransactionID = 0, ParametersInfo = new ParameterList() } } ; GetParametersRequestBody request = requestObject as GetParametersRequestBody; GetParametersResponseBody response = null; logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[GetParametersProvider] [SEND-DATA] getParametersParameters {}"); ParameterList parameterList = Utils.GetParameters(); logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[GetParametersProvider] [RECV-DATA] getParametersResult {response={" + DataContract.Utils.logFormat(parameterList) + "}}"); response = new GetParametersResponseBody() { ResponseCode = 0, ResponseMessage = "exito", TransactionID = 0, ParametersInfo = parameterList }; return(response); } }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID) { return(new GetAgentDistributionsResponseBody() { ResponseCode = 0, ResponseMessage = "Respuesta exitosa.", TransactionID = 0 }); }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID) { CreateAgentResponseBody response = new CreateAgentResponseBody(); try { if (sessionID.Equals("0")) { return new CreateAgentResponseBody() { ResponseCode = 90, ResponseMessage = "error session", TransactionID = 0, Errors = { new ErrorItem() { ErrorId = "90", ErrorDescription = "Session invalida" } } } } ; CreateAgentRequestBody request = requestObject as CreateAgentRequestBody; logger.InfoLow(() => TagValue.New().Message("[API] " + base.LOG_PREFIX + "[CreateAgentProvider]").Tag("[SEND-DATA] createAgentParameters ").Value(request)); int currentUserId = Utils.GetUserId(request.AuthenticationData.Username); /// OJO MD5 md5 = new MD5CryptoServiceProvider(); var result = Utils.ValidateSoldChildComissions(request.AuthenticationData.Username, request.Commission); if (!result.IsObjectValidResult()) { response.ResponseCode = 100; response.ResponseMessage = "[ERROR DE NEGOCIO] COMISION POR DEPOSITO"; response.Errors = new ErrorItems() { new ErrorItem() { ErrorId = "" + result.ResponseCode, ErrorDescription = result.ResponseMessage } }; return(response); } var reqAgent = new RequestAgent() { age_cuit = request.RIF, age_nombre = request.AgentName, age_razonsocial = request.LegalName, age_direccion = request.Address, age_entrecalles = request.BetweenStreets, age_ciu_id = decimal.Parse(request.City), age_tel = request.Phone, age_cel = request.NumberIMEI, age_email = request.Email, age_contacto = request.ContactPerson, age_subNiveles = decimal.Parse(request.SubLevels), age_pdv = request.Pdv, age_observaciones = request.Notes, ct_id = request.TaxCategory == 0 ? 1 : request.TaxCategory, //Categoria Tributaria ta_id = 1, //Tipo de agencia sa_id = request.SegmentId == 0 ? 1 : request.SegmentId, // segmento de la agencia age_tipo = "SU", age_autenticaterminal = "N", age_estado = "AC", //Solicitud de operaciones no se debio cambiar age_prefijosrest = "", usr_id_modificacion = currentUserId, age_comisionadeposito = request.CommissionableDeposits ? "S" : "N", age_montocomision = request.Commission, limiteCredito = request.CheckingAccountCreditLimit.ToString(), autorizacionAutomatica = request.AutomaticAuthorization.ToString(), quitaAutomatica = request.AutomaticReverse.ToString(), generacionAutomatica = request.AutomaticReposition.ToString(), montoMinimoPorPedido = request.MinimumOrderAmount.ToString(), montoMaximoPorPedido = request.MaximumOrderAmount.ToString(), pedidoMaximoMensual = request.MaximumMonthlyAmount.ToString(), autorizacionAutomaticaMontoDiario = request.MaximumAuthorizedDailyAmount.ToString(), recargaAsincronica = request.AsynchronousTopup.ToString(), comisionporventa = request.SalesCommission, usr_nombre = request.UserName1, usr_apellido = request.UserLastName1, acc_login = request.AccessLogin1, acc_password = Convert.ToBase64String(md5.ComputeHash(Encoding.Unicode.GetBytes(request.AccessPassword1))), //segundo usuario acc_validityDate = DateTime.Now.AddDays(360), second_acc_validityDate = DateTime.Now.AddDays(360), third_acc_validityDate = DateTime.Now.AddDays(360), // primer acceso segundo usuario second_acc_login = request.AccessLogin2, second_acc_password = Convert.ToBase64String(md5.ComputeHash(Encoding.Unicode.GetBytes(request.AccessPassword2))), /*request.AccessType2.ToUpper() == "POS" ? 6 : request.AccessType2.ToUpper() == "WEB" ? 1 : request.AccessType2.ToUpper() == "POSWEB" ? 12 : request.AccessType2.ToUpper() == "USSD" ? 9 : request.AccessType2.ToUpper() == "SMS" ? 2 : 0*/ second_tac_id = Utils.GetAccessTypeCode(request.AccessType2), usr_administrador = request.IsAdministrator2, grpId = request.Group, //Valores Originales acc_cambiopassword = "******", second_acc_cambiopassword = "******", third_acc_cambiopassword = "******" // //TODO //acc_cambiopassword = "", //second_acc_cambiopassword = "" // }; //segundo acceso segundo usuario if (reqAgent.av_sc_ac_secondUser = request.AvailableSecondAccessSecondUser) { reqAgent.third_acc_login = request.AccessLogin3; reqAgent.third_acc_password = Convert.ToBase64String(md5.ComputeHash(Encoding.Unicode.GetBytes(request.AccessPassword3))); reqAgent.third_tac_id = Utils.GetAccessTypeCode(request.AccessType3); } foreach (ProductCommision item in request.ProductsCommission) { reqAgent.productos.Add(new RequestAgent.Product() { prdId = item.ProductId, comision = item.Commission }); } ResponseAgent responseAgent = Utils.CreateAgent(reqAgent); //bool isSuccessful = String.IsNullOrEmpty(request.RIF) ? false : request.RIF.EndsWith("0"); bool isSuccessful = int.Parse(responseAgent.response_code) == 0; response.ResponseCode = isSuccessful ? 0 : 1; response.ResponseMessage = isSuccessful ? "OK" : "ER"; response.TransactionID = 0; response.AgeId = responseAgent.AgeId; if (!isSuccessful) { var errors = new ErrorItems(); errors.Add(new ErrorItem() { ErrorId = responseAgent.response_code, ErrorDescription = responseAgent.message }); //var errors = new ErrorItems(); //for (int i = 0; i < new Random().Next(1, 6); i++) // errors.Add(new ErrorItem() { ErrorId = i.ToString(), ErrorDescription = "Error random " + i }); response.Errors = errors; } logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[CreateAgentProvider] [RECV-DATA] CreateAgentResult {response={" + response + "}}"); } catch (Exception ex) { response.ResponseCode = 500; response.ResponseMessage = _GenericError; response.TransactionID = 0; response.Errors = new ErrorItems() { new ErrorItem() { ErrorId = "90", ErrorDescription = ex.Message } }; string mensaje = String.Concat("[API] " + base.LOG_PREFIX + "[CreateAgentProvider] ", ". Exception: ", ex.Message, ". ", ex.StackTrace); logger.ErrorLow(mensaje); } return(response); }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, string sessionID) { if (sessionID.Equals("0")) { return new GetBalanceResponseBody() { ResponseCode = 90, ResponseMessage = "error session", TransactionID = 0 } } ; GetBalanceRequestBody request = requestObject as GetBalanceRequestBody; string message; logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetBalanceProvider] [SEND-DATA] GetAccountBalanceParameters {UserId=" + sessionID + "}"); long balance = kinacuWS.GetAccountBalance(int.Parse(sessionID), out message); logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetBalanceProvider] [RECV-DATA] GetAccountBalanceResult {response=" + balance + ",message=" + message + "}"); GetBalanceResponseBody response = new GetBalanceResponseBody() { ResponseCode = balance == -1 ? 99 : 0, ResponseMessage = message == "" ? (balance / 100m).ToString() : message, TransactionID = new Random().Next(100000, 999999), WalletBalance = 0, StockBalance = balance / 100m, PointsBalance = 0, DebtBalance = 0 }; if (request.ExtendedValues ?? false) { response.CheckingAccountBalance = Utils.GetAgentCheckingAccountBalance(request.AuthenticationData.Username); } return(response); } }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID) { if (sessionID.Equals("0")) { return new NotiwayResponseBody() { ResponseCode = 90, ResponseMessage = "error session", TransactionID = 0, StockBalance = 0m } } ; return(new NotiwayResponseBody() { }); } }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, string sessionID) { if (sessionID.Equals("0")) { return new GetTransactionResponseBody() { ResponseCode = 90, ResponseMessage = "error session", TransactionID = 0, Amount = 0m, Creditor = "", Debtor = "", Initiator = "", OriginalTransactionId = "", Recipient = "", TransactionDate = DateTime.Now, TransactionType = "" } } ; GetTransactionRequestBody request = requestObject as GetTransactionRequestBody; GetTransactionResponseBody response = null; try { SaleData saleData = null; string message = "", methodName = "saleState"; switch (request.ParameterType) { case GetTransactionRequestParameterType.ExternalTransactionReference: methodName = "saleStateByExternalId"; logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetTransactionProvider] [SEND-DATA] saleStateByExternalIdParameters {UserId=" + sessionID + ",ExternalId=" + request.ParameterValue + "}"); saleData = kinacuWS.SaleStateByExternalId(int.Parse(sessionID), request.ParameterValue, out message); response = MapKinacuTransactionResponseToGetTransactionResponseBody(saleData, message); break; case GetTransactionRequestParameterType.TransactionID: logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetTransactionProvider] [SEND-DATA] saleStateParameters {UserId=" + sessionID + ",IdTransaction=" + request.ParameterValue + ",Target=}"); int param; if (int.TryParse(request.ParameterValue, out param)) { saleData = kinacuWS.SaleState(int.Parse(sessionID), param, "", out message); response = MapKinacuTransactionResponseToGetTransactionResponseBody(saleData, message); } else { response = new GetTransactionResponseBody() { ResponseCode = 91, ResponseMessage = "Transaccion no encontrada", TransactionID = 0, TransactionResult = 0, OriginalTransactionId = "0", TransactionDate = DateTime.Now, TransactionType = "topup" } }; break; case GetTransactionRequestParameterType.TargetAgent: logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetTransactionProvider] [SEND-DATA] saleStateParameters {UserId=" + sessionID + ",IdTransaction=0,Target=" + request.ParameterValue + "}"); saleData = Utils.GetSaleStateByTargent(request.AuthenticationData.Username, request.ParameterValue, out message); //kinacuWS.SaleState(int.Parse(sessionID), 0, request.ParameterValue, out message); response = MapKinacuTransactionResponseToGetTransactionResponseBody(saleData, message); break; case GetTransactionRequestParameterType.TransactionType: logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetTransactionProvider] [SEND-DATA] saleStateParameters {UserId=" + sessionID + ",IdTransaction=0,Target=}"); saleData = kinacuWS.SaleState(int.Parse(sessionID), 0, "", out message); response = MapKinacuTransactionResponseToGetTransactionResponseBody(saleData, message); break; case GetTransactionRequestParameterType.LastTransaction: logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetTransactionProvider] [SEND-DATA] saleStateParameters {UserId=" + sessionID + ",IdTransaction=0,Target=" + request.ParameterValue + "}"); saleData = kinacuWS.SaleState(int.Parse(sessionID), 0, "", out message); response = MapKinacuTransactionResponseToGetTransactionResponseBody(saleData, message); break; case GetTransactionRequestParameterType.DistributionExternalTransactionReference: logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetTransactionProvider] [SEND-DATA] getDistributionState {Target=" + request.ParameterValue + "}"); response = MapDistributionToGetTransactionResponseBody(request); break; } if (saleData != null) { response.ResponseMessage = Movilway.API.Utils.ApiTicket.FormatSaledata(logger, "GetTransactionProvider", request, base.LOG_PREFIX, response.ResponseCode.Value == 0, response.TransactionID.Value, response.ResponseMessage); logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetTransactionProvider] [RECV-DATA] " + methodName + "Result {saleState={IdTransaction=" + saleData.IdTransaccion + ",Customer=" + saleData.Customer + ",Amount=" + saleData.Amount + ",Date=" + saleData.Date + ",ReloadState=" + saleData.ReloadState + ",ReloadStateCode=" + saleData.ReloadStateCode + "},message=" + message + "}"); } else { logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetTransactionProvider] [RECV-DATA] " + methodName + "Result {saleState={IdTransaction=,Customer=,Amount=,Date=,ReloadState=,ReloadStateCode=},message=" + message + "}"); } #region se incluye obtiene el saldo en caso de ser necesario //Se realiza la validacion afuera del metodo GetBalance //con el fin de no manejar valores nulos en los metodos //y asignar algun valor al triburo StockBlance de ser necesario if ( _GetBalance && request.DeviceType == Movilway.API.Core.cons.ACCESS_POS ) { response.StockBalance = GetBalance(request); } } catch (Exception ex) { logger.ErrorHigh(() => TagValue.New().MethodName("GetTransaction").Message(base.LOG_PREFIX + " ERROR BUSCANDO TRANSACCION CON REFERENCIA [" + request.ParameterValue + "]").Exception(ex)); if (ex.InnerException != null) { logger.ErrorHigh(() => TagValue.New().MethodName("GetTransaction").Message(base.LOG_PREFIX + " INNER EXCEPTION " + request.ParameterValue).Exception(ex.InnerException)); } response = new GetTransactionResponseBody() { ResponseCode = 99, ResponseMessage = "Error inesperado consultando la transaccion, consulte a su administrador.", TransactionID = 0, OriginalTransactionId = "", Amount = 0, Recipient = "", TransactionDate = DateTime.Now, TransactionResult = 99, TransactionType = "", Initiator = "", Debtor = "", Creditor = "" }; } #endregion return(response); }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID) { //if (sessionID.Equals("0")) // return new TopUpResponseBody() // { // ResponseCode = 90, // ResponseMessage = "error session", // TransactionID = 0, // ExternalTransactionReference = "", // PointBalance = 0m, // StockBalance = 0m, // WalletBalance = 0m // }; TopUpRequestBody request = requestObject as TopUpRequestBody; int timeOutSeconds = int.Parse(ConfigurationManager.AppSettings["DefaultTimeout"]); if (ConfigurationManager.AppSettings["TopUp_Timeout_" + request.MNO.ToLower()] != null) { timeOutSeconds = int.Parse(ConfigurationManager.AppSettings["TopUp_Timeout_" + request.MNO.ToLower()]); } kinacuWS.Timeout = timeOutSeconds * 1000; int transactionId; string saleData = ""; string message = ""; logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[TopUpProvider] [SEND-DATA] newSaleWithExternalIdParameters {UserId=" + sessionID + ",IdProduct=" + MapMNOtoProductId(request.MNO) + ",Customer=" + request.Recipient + ",Amount=" + (request.Amount * 100) + ",CommitSale=" + "1" + ",ExternalId=" + request.ExternalTransactionReference + ",PdvRepresented=" + (request.TerminalID ?? "") + "}"); TopUpResponseBody response = null; bool kinacuTopUpResponse = false; int _Amount = (int)(request.Amount * 100); if (_cacheSession.IsActiveCache()) { //logger.ErrorHigh(String.Concat("[API] ", LOG_PREFIX, "[KinacuProvider] [EXCEPTION] [", ex.GetType().Name.ToUpper(), "] ACCEDIENDO AL CACHE VALIDANDO SECURITY {message=", ex.Message, ",stackTrace=", ex.StackTrace, "}")); logger.InfoLow(String.Concat("[KIN] ", base.LOG_PREFIX, "CACHE ACTIVO TOPUP")); /// kinacuTopUpResponse = kinacuWS.NewSaleWithExternalId(int.Parse(sessionID), int.Parse(MapMNOtoProductId(request.MNO)), request.Recipient, //(int)(request.Amount * 100) _Amount , 1, request.ExternalTransactionReference, (request.TerminalID ?? ""), out transactionId, out saleData, out message); saleData = Movilway.API.Utils.ApiTicket.FormatSaledataTopUp(logger, this.GetType().Name, base.LOG_PREFIX, request, kinacuTopUpResponse, transactionId, saleData); response = new TopUpResponseBody() { ResponseCode = Utils.BuildResponseCode(kinacuTopUpResponse, message), ResponseMessage = kinacuTopUpResponse ? saleData : message, TransactionID = transactionId, ExternalTransactionReference = request.ExternalTransactionReference, Fee = 0 }; //CODIGO REPETIDO logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[TopUpProvider] [RECV-DATA] newSaleWithExternalIdResult {response=" + kinacuTopUpResponse + ",IdTransaction=" + transactionId + ",SaleData=" + saleData + ",message=" + message + "}"); bool errorSession = GetResponseCode(message) == 21; if (errorSession) { logger.InfoLow(String.Concat("[KIN] ", base.LOG_PREFIX, " TOP UP ID DE SESSION INVALIDO RECALCULAR SESSION")); //solicitar de nuevo session var sessionRequest = new GetSessionRequestBody() { Username = request.AuthenticationData.Username, Password = request.AuthenticationData.Password, DeviceType = request.DeviceType }; var getSessionResponse = new ServiceExecutionDelegator <GetSessionResponseBody, GetSessionRequestBody>().ResolveRequest( sessionRequest , ApiTargetPlatform.Kinacu, ApiServiceName.GetSession); sessionID = getSessionResponse.SessionID; logger.InfoLow(String.Concat("[KIN] ", base.LOG_PREFIX, " NUEVO ID ", IsValidId(sessionID))); //String llave = String.Concat(cons.CACHE_SESSION_PREFIX, request.AuthenticationData.Username); String llave = String.Concat(request.AuthenticationData.Username, " ", request.AuthenticationData.Password); _cacheSession.AddOrUpdate <String>(llave, sessionID); kinacuTopUpResponse = kinacuWS.NewSaleWithExternalId(int.Parse(sessionID), int.Parse(MapMNOtoProductId(request.MNO)), request.Recipient, //(int)(request.Amount * 100) _Amount , 1, request.ExternalTransactionReference, (request.TerminalID ?? ""), out transactionId, out saleData, out message); saleData = Movilway.API.Utils.ApiTicket.FormatSaledataTopUp(logger, this.GetType().Name, base.LOG_PREFIX, request, kinacuTopUpResponse, transactionId, saleData); response = new TopUpResponseBody() { ResponseCode = Utils.BuildResponseCode(kinacuTopUpResponse, message), ResponseMessage = kinacuTopUpResponse ? saleData : message, TransactionID = transactionId, ExternalTransactionReference = request.ExternalTransactionReference, Fee = 0 }; } } else { kinacuTopUpResponse = kinacuWS.NewSaleWithExternalId(int.Parse(sessionID), int.Parse(MapMNOtoProductId(request.MNO)), request.Recipient, //(int)(request.Amount * 100) _Amount , 1, request.ExternalTransactionReference, (request.TerminalID ?? ""), out transactionId, out saleData, out message); saleData = Movilway.API.Utils.ApiTicket.FormatSaledataTopUp(logger, this.GetType().Name, base.LOG_PREFIX, request, kinacuTopUpResponse, transactionId, saleData); response = new TopUpResponseBody() { ResponseCode = Utils.BuildResponseCode(kinacuTopUpResponse, message), ResponseMessage = kinacuTopUpResponse ? saleData : message, TransactionID = transactionId, ExternalTransactionReference = request.ExternalTransactionReference, Fee = 0 }; //CODIGO REPETIDO logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[TopUpProvider] [RECV-DATA] newSaleWithExternalIdResult {response=" + kinacuTopUpResponse + ",IdTransaction=" + transactionId + ",SaleData=" + saleData + ",message=" + message + "}"); } if (request.DeviceType == cons.ACCESS_H2H) { string llave = String.Concat(request.AuthenticationData.Username); decimal[] result = { 0.0m, 0.0m, 0.0m }; //try //{ // Func<decimal[]> callback = delegate()//null; // { // logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[TopUpProvider] CALLBACK SALDO"); // List<decimal> lista = new List<decimal>(); // AuthenticationData cascadeAuth = new AuthenticationData() // { // SessionID = sessionID // }; // GetBalanceResponseBody balanceResponse = new ServiceExecutionDelegator<GetBalanceResponseBody, GetBalanceRequestBody>().ResolveRequest(new GetBalanceRequestBody() // { // AuthenticationData = cascadeAuth, // DeviceType = request.DeviceType // }, ApiTargetPlatform.Kinacu, ApiServiceName.GetBalance); // lista.Add(balanceResponse.StockBalance.Value); // lista.Add(response.WalletBalance = balanceResponse.WalletBalance.Value); // lista.Add(response.PointBalance = balanceResponse.PointsBalance.Value); // return lista.ToArray<decimal>(); // }; // // ()=>{ // // new int[]{0,0,0}; // //}; // result = _cacheSaldo.GetValue<decimal[]>(llave, callback); //} //catch (Exception ex) //{ // logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[TopUpProvider] ERROR AL CONSULTAR CHACHE SALDO 1"); // // throw; //} try { //CUANDO SE RECARGA EL SALDO Func <decimal[]> callback = delegate() { logger.InfoLow(String.Concat("[KIN] ", base.LOG_PREFIX, "[TopUpProvider] SALDO NOT FOUND CACHE ")); return(new HandlerCacheSaldo().HandlerCache(new AuthenticationData() { SessionID = sessionID }, request)); }; bool inCache = false; //CUANDO SE ENCUENTRA EL SALDO EN CACHE //TODO plantear un accion por referencia //TODO se puede lanzar la actualizacion en cache asincrona Action <Object, Object> accion = delegate(Object key2, Object value) { inCache = true; logger.InfoLow(String.Concat("[KIN] ", base.LOG_PREFIX, "[TopUpProvider] SALDO FOUND CACHE [", key2, "]")); }; result = _cacheSaldo.GetValue <decimal[]>(llave, callback, accion); //si la respuesta es valid //if (inCache && response.ResponseCode == 0) //{ // result[0] -= _Amount; // logger.InfoLow(String.Concat("[KIN] ", base.LOG_PREFIX, "[TopUpProvider] ACTUALIZANDO STOCKBALANCE EN CACHE [", result[0], "]")); // _cacheSaldo.AddOrUpdate(llave, result); //} } catch (Exception ex) { logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[TopUpProvider] ERROR AL CONSULTAR CHACHE SALDO "); throw; } //AuthenticationData cascadeAuth = new AuthenticationData() //{ // SessionID = sessionID //}; //GetBalanceResponseBody balanceResponse = new ServiceExecutionDelegator<GetBalanceResponseBody, GetBalanceRequestBody>().ResolveRequest(new GetBalanceRequestBody() //{ // AuthenticationData = cascadeAuth, // DeviceType = request.DeviceType //}, ApiTargetPlatform.Kinacu, ApiServiceName.GetBalance); //if (response != null) //{ // response.StockBalance = balanceResponse.StockBalance.Value; // response.WalletBalance = balanceResponse.WalletBalance.Value; // response.PointBalance = balanceResponse.PointsBalance.Value; //} if (result.Length == 3) { response.StockBalance = result[0]; response.WalletBalance = result[1]; response.PointBalance = result[2]; } } else { AuthenticationData cascadeAuth = new AuthenticationData() { SessionID = sessionID }; GetBalanceResponseBody balanceResponse = new ServiceExecutionDelegator <GetBalanceResponseBody, GetBalanceRequestBody>().ResolveRequest(new GetBalanceRequestBody() { AuthenticationData = cascadeAuth, DeviceType = request.DeviceType }, ApiTargetPlatform.Kinacu, ApiServiceName.GetBalance); if (response != null) { response.StockBalance = balanceResponse.StockBalance.Value; response.WalletBalance = balanceResponse.WalletBalance.Value; response.PointBalance = balanceResponse.PointsBalance.Value; } } if (response.ResponseCode.Equals(0) && (ConfigurationManager.AppSettings["IncludeTopupMessageExtended"] ?? "").ToLower().Equals("true")) { // Acá concatenar el mensaje del macroproducto en caso de ser necesario response.ResponseMessage = String.Concat(response.ResponseMessage, new MacroProductDataManager().GetMacroProductMessage(int.Parse(ConfigurationManager.AppSettings["CountryID"]), int.Parse(MapMNOtoProductId(request.MNO)))); } return(response); }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID) { GetCutsResponseBody response = new GetCutsResponseBody(); if (sessionID.Equals("0")) { response.ResponseCode = 90; response.ResponseMessage = "error session"; response.TransactionID = 0; return(response); } try { GetCutsRequestBody request = requestObject as GetCutsRequestBody; //Código de transacción de corte manual //Código de usuario (Quien realizó el corte) //Nombre usuario //Código de Cliente (a quien se realizó la distribución) //Nombre del Cliente //Fecha y Hora de transacción de corte //Código de Producto //Descripción de Producto //Cantidad de Pines ( 1 PIN = 1 Dólar) – Total por operadora //Unidad (Fracción) //Ariel 2021-Ma-09 Comentado // response = Utils.GetConsolidatedCuts(request); } catch (Exception ex) { response.ResponseCode = 500; response.ResponseMessage = "ERROR INESPERADO " + ex.Message; response.TransactionID = 0; } return(response); }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID) { if (sessionID.Equals("0")) { return new GetScoreResponseBody() { ResponseCode = 90, ResponseMessage = "error session", TransactionID = 0, Score = new Score() } } ; GetScoreRequestBody request = requestObject as GetScoreRequestBody; GetScoreResponseBody response = null; if (sessionID.Equals("0")) { return response = new GetScoreResponseBody() { ResponseCode = 99, ResponseMessage = "Error de login", TransactionID = new Random().Next(100000, 999999), Score = null } } ; string agentId = ""; bool isChild = false; if (!String.IsNullOrEmpty(request.Agent)) { var getChildListResponse = new ServiceExecutionDelegator <GetChildListResponseBody, GetChildListRequestBody>().ResolveRequest( new GetChildListRequestBody() { AuthenticationData = new AuthenticationData() { Username = request.AuthenticationData.Username, Password = request.AuthenticationData.Password }, DeviceType = request.DeviceType, Agent = request.AuthenticationData.Username, Platform = "1" }, ApiTargetPlatform.Kinacu, ApiServiceName.GetChildList); if (getChildListResponse.ChildList != null && getChildListResponse.ChildList.Count(ch => ch.Agent == request.Agent) > 0) { agentId = request.Agent; isChild = true; } } if (!isChild) { agentId = new Provider.IBank.Utils().GetAgentId(request.AuthenticationData.Username).ToString(); } logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[GetScoreProvider] [SEND-DATA] getScoreParameters {agentId=" + agentId + "}"); response = new GetScoreResponseBody() { ResponseCode = 0, ResponseMessage = "exito", TransactionID = new Random().Next(100000, 999999), Score = Utils.GetScore(agentId) }; logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[GetScoreProvider] [RECV-DATA] getScoreResult {result{Score{BranchId=" + response.Score.BranchId + ",BranchName=" + response.Score.BranchName + ",LotteryType=" + response.Score.LotteryType + ",Confirmed=" + response.Score.Confirmed + ",YearToDate=" + response.Score.YearToDate + ",CurrentMonth=" + response.Score.CurrentMonth + ",Standard=" + response.Score.Standard + ",Bonus=" + response.Score.Bonus + ",Behaviour=" + response.Score.Behaviour + ",NetworkStandard=" + response.Score.NetworkStandard + ",NetworkBonus=" + response.Score.NetworkBonus + ",NetworkBehaviour=" + response.Score.NetworkBehaviour + ",Questionnaire=" + response.Score.Questionnaire + "}}}"); return(response); } } }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID) { if (sessionID.Equals("0")) { return new GetSalesSummaryResponseBody() { ResponseCode = 90, ResponseMessage = "error session", TransactionID = 0, FinalAmount = 0m, InitialAmount = 0m, Summaries = new SummaryItems(), SummaryDate = DateTime.Now } } ; GetSalesSummaryRequestBody request = requestObject as GetSalesSummaryRequestBody; GetSalesSummaryResponseBody response = null; ManagementInterface managementWS = new ManagementInterface(); LogisticsInterface logisticsWS = new LogisticsInterface(); string message; #region comentario //int voucherQtyDownload, retailerId; //string retailerName, retailerAddress, retailerLegalId, ticketHeader, currentTime; //if (!managementWS.GetRetailerInfo(int.Parse(sessionID), out retailerId, out retailerName, out retailerAddress, out retailerLegalId, out voucherQtyDownload, out ticketHeader, out currentTime, out message)) //{ // return new GetSalesSummaryResponseBody() // { // ResponseCode = 97, // ResponseMessage = message, // Summaries = null, // SummaryDate = request.Date, // TransactionID = new Random().Next(100000, 999999) // }; //} //int userId; //long timeOut; //string userName, userLastName, userAddress; //if (!managementWS.GetUserInfo(int.Parse(sessionID), out userId, out userName, out userLastName, out userAddress, out timeOut, out message)) //{ // return new GetSalesSummaryResponseBody() // { // ResponseCode = 98, // ResponseMessage = message, // Summaries = null, // SummaryDate = request.Date, // TransactionID = new Random().Next(100000, 999999) // }; //} #endregion /* Se comenta porque no hace nada (sólo reventar en caso de overflow * int amount, count; * * if (!kinacuWS.SaleCountBySeller(int.Parse(sessionID), out amount, out count, out message)) * { * return new GetSalesSummaryResponseBody() * { * ResponseCode = 99, * ResponseMessage = message, * Summaries = null, * SummaryDate = request.Date, * TransactionID = new Random().Next(100000, 999999) * }; * }*/ //long balance = kinacuWS.GetAccountBalance(int.Parse(sessionID), out message); SummaryItems summary = new SummaryItems(); decimal initialAmount, finalAmount; if (request.SummaryType == null || request.SummaryType.Equals(SummaryType.NotSpecified) || request.SummaryType.Equals(SummaryType.ByUser)) { summary = Utils.SalesSummary(request.AuthenticationData.Username, request.Date); response = new GetSalesSummaryResponseBody() { ResponseCode = 0, ResponseMessage = "OK", Summaries = summary, SummaryDate = request.Date, TransactionID = new Random().Next(100000, 999999) }; } else { summary = Utils.SalesSummaryByAgent(request.AuthenticationData.Username, request.Date, out initialAmount, out finalAmount); response = new GetSalesSummaryResponseBody() { ResponseCode = 0, ResponseMessage = "OK", Summaries = summary, SummaryDate = request.Date, TransactionID = new Random().Next(100000, 999999), InitialAmount = initialAmount, FinalAmount = finalAmount }; } // Asignar Nombre de agencia y fecha de impresion if (response != null) { response.BranchName = Utils.GetAgentName(request.AuthenticationData.Username); response.DatePrinter = Utils.GetLocalTimeZone().ToString("yyyy-MM-dd HH:mm:ss"); } //response.Summaries = new SummaryItems(); //if (request.WalletType == WalletType.Stock) // response.Summaries.Add(new SummaryItem() { TotalAmount = amount / 100m, TransactionCount = count, TransactionType = "Recargas y pines" }); //else // response.Summaries.Add(new SummaryItem() { TotalAmount = 0, TransactionCount = 0, TransactionType = "Recargas y pines" }); logger.InfoLow(() => TagValue.New().Message("[API] " + base.LOG_PREFIX + "[GetSalessSummaryResult]").Tag(" GetSalesSummaries ").Value(response.Summaries.Count)); return(response); } }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID) { if (sessionID.Equals("0")) { return new GetAgentInfoResponseBody() { ResponseCode = 90, ResponseMessage = "error session", TransactionID = 0, AgentInfo = new AgentInfo() } } ; GetAgentInfoRequestBody request = requestObject as GetAgentInfoRequestBody; GetAgentInfoResponseBody response = null; logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[GetAgentInfoProvider] [SEND-DATA] getAgentInfoParameters {agentReference=" + request.Agent + "}"); AgentInfo agentInfo = new AgentInfo(); string validatedEmail = ""; if (request.SearchById ?? false) { agentInfo = Utils.GetAgentInfoById(request.AgentId); validatedEmail = Utils.GetValidatedEmailById(request.AgentId); } else { agentInfo = Utils.GetAgentInfo(request.Agent); validatedEmail = Utils.GetValidatedEmailByLogin(request.Agent); } logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[GetAgentInfoProvider] [RECV-DATA] getAgentInfoResult {response={" + DataContract.Utils.logFormat(agentInfo) + "}}"); if (agentInfo.BranchID >= 0) //userInfo && retailerInfo) { response = new GetAgentInfoResponseBody() { ResponseCode = 0, ResponseMessage = "exito", TransactionID = 0, AgentInfo = new AgentInfo() { Agent = request.Agent, NationalIDType = agentInfo.NationalIDType, NationalID = agentInfo.NationalID, Address = agentInfo.Address, Name = agentInfo.Name, LegalName = agentInfo.LegalName, Email = String.IsNullOrEmpty(validatedEmail) ? agentInfo.Email : validatedEmail, // Elementos privados AgentID = agentInfo.AgentID, OwnerID = agentInfo.OwnerID, BranchID = agentInfo.BranchID, // Grupo de comisiones nuevo CommissionGroups = agentInfo.CommissionGroups, // Nuevo subniveles SubLevel = agentInfo.SubLevel, // Nuevo PDV Id PDVID = agentInfo.PDVID, PhoneNumber = agentInfo.PhoneNumber, TaxCategory = agentInfo.TaxCategory, TaxCategories = agentInfo.TaxCategories, SegmentId = agentInfo.SegmentId, SegmentList = agentInfo.SegmentList } }; } else { response = new GetAgentInfoResponseBody { ResponseCode = 99, ResponseMessage = "El agente consultado no existe" }; } return(response); } }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID) { if (sessionID.Equals("0")) { return new GetAgentDistributionListResponseBody() { ResponseCode = 90, ResponseMessage = "error session", TransactionID = 0, AgentDistributionList = new AgentDistributionList() } } ; GetAgentDistributionListRequestBody request = requestObject as GetAgentDistributionListRequestBody; GetAgentDistributionListResponseBody response = null; logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetAgentDistributionListProvider] [SEND-DATA] getChildRetailersParameters {UserId=" + sessionID + "} Agent =" + request.Agent + ", AgentChild= " + request.AgentChild + " ,CutInfo = " + request.CutInfo); //Ariel 2021-Ma-09 Comentado asigmanos null AgentDistributionList distributionList = null; // Utils.GetAgentDistributionList(request.Agent, request.AgentChild, request.CutInfo); response = new GetAgentDistributionListResponseBody() { ResponseCode = (distributionList.Count > 0 ? 0 : 99), ResponseMessage = (distributionList.Count > 0 ? "exito" : "No se encontraron agencias"), TransactionID = new Random().Next(100000, 999999), AgentDistributionList = distributionList }; return(response); } }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, string sessionID) { if (sessionID.Equals("0")) { return new GetLoanTokenResponseBody() { ResponseCode = 90, ResponseMessage = "error session", TransactionID = 0 } } ; GetLoanTokenRequestBody request = requestObject as GetLoanTokenRequestBody; //string message; logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetLoanTokenProvider] [SEND-DATA] GetLoanTokenParameters {UserId=" + sessionID + "}"); string id = Utils.GetAgentIdByAccessPosWeb(request.AuthenticationData.Username).ToString(); HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage webResponse = new HttpResponseMessage(); string data = ""; Token token = new Token() { token = "nill" }; logger.InfoLow(String.Concat("[MO] [SEND-DATA] agentId=", id)); webResponse = client.PostAsync(String.Concat(ConfigurationManager.AppSettings["URL_MO"], "token"), new StringContent("{\"external_id\":" + id + "}", Encoding.UTF8, "application/json")).Result; logger.InfoLow(String.Concat("[MO] [RESPONSE-CODE] HttpStatusCode: ", (int)webResponse.StatusCode)); JavaScriptSerializer JSserializer = new JavaScriptSerializer(); GetLoanTokenResponseBody response; try { data = webResponse.Content.ReadAsStringAsync().Result; if (webResponse.IsSuccessStatusCode) { token = JSserializer.Deserialize <Token>(data); logger.InfoLow(String.Concat("[MO] [RESPONSE-DATA] Raw Data: ", data)); logger.InfoLow(String.Concat("[MO] [RESPONSE-DATA] token: ", token.token)); response = new GetLoanTokenResponseBody() { ResponseCode = 0, ResponseMessage = "Exito", TransactionID = new Random().Next(100000, 999999), Token = token.token }; } else { logger.InfoLow(String.Concat("[MO] [RESPONSE-DATA] ERROR Raw Data: ", data)); response = new GetLoanTokenResponseBody() { ResponseCode = 98, ResponseMessage = "Error", TransactionID = new Random().Next(100000, 999999), Token = "" }; } } catch (Exception ex) { logger.ErrorLow(String.Concat(" [RECEIVED-DATA] Error recibiendo la data. ", ex.InnerException)); response = new GetLoanTokenResponseBody() { ResponseCode = 99, ResponseMessage = "Excepcion", TransactionID = new Random().Next(100000, 999999), Token = "" }; } //long balance = kinacuWS.GetAccountBalance(int.Parse(sessionID), out message); logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetLoanTokenProvider] [RECV-DATA] GetLoanTokenResult {response=Exito,message=ok,token=eyJjdXN0b21lcl9pZCI6MTU4fQ.DnrUTA.XHKdo08zgauO6JjwP-T2G6VjX6I}"); return(response); } }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID) { GetNewAgentsReportResponseBody response = new GetNewAgentsReportResponseBody() { ResponseCode = 99, ResponseMessage = "", TransactionID = 0 }; GetNewAgentsReportRequestBody request = requestObject as GetNewAgentsReportRequestBody; //Ariel 2021-Mar-09 //response = Movilway.API.Service.ExtendedApi.Provider.Kinacu.Utils.GetNewAgentsReport(request); response.ResponseCode = 0; response.ResponseMessage = "OK"; return(response); }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID) { if (sessionID.Equals("0")) { return new GetLastDistributionsResponseBody() { ResponseCode = 90, ResponseMessage = "error session", TransactionID = 0, Distributions = new DistributionList() } } ; GetLastDistributionsRequestBody request = requestObject as GetLastDistributionsRequestBody; GetLastDistributionsResponseBody response = null; logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[GetLastDistributionsProvider] [SEND-DATA] getLastDistributionsParameters {agentReference=" + request.Agent + ",count=" + request.Count + "}"); var agentId = new IBank.Utils().GetAgentId(request.AuthenticationData.Username); var result = new IBank.Utils().ListaSolicitudes(agentId, request.Count); response = new GetLastDistributionsResponseBody() { ResponseCode = 0, ResponseMessage = "OK", Distributions = result, //generateRandomDist(request.Count), TransactionID = 0 }; logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[GetLastDistributionsProvider] [RECV-DATA] getLastDistributionsResult {response={" + (response.Distributions == null || response.Distributions.Count == 0 ? "" : response.Distributions.ToString()) + "}}"); return(response); }
public GetPSEBankResponse ObtenerBancoPSE(GetPSEBankRequest request) { string methodName = string.Format("{0}", System.Reflection.MethodBase.GetCurrentMethod().Name); this.ProviderLogger.InfoLow(() => TagValue.New().MethodName(methodName).Message("Started")); GetPSEBankResponse response = new GetPSEBankResponse(); string sessionId = this.GetSessionId(request, response, out this.errorMessage); this.ProviderLogger.InfoLow(() => TagValue.New().MethodName(methodName) .Message("[" + sessionId + "] " + "Obteniendo Bancos")); if (this.errorMessage != ErrorMessagesMnemonics.None) { this.LogResponse(response); return(response); } //logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetBankListProvider] [SEND-DATA] getAccountBankParameters {UserId=" + sessionID + "}"); this.ProviderLogger.InfoLow(() => TagValue.New().MethodName(methodName) .Message("[" + sessionId + "] " + "Obteniendo Bancos")); BankAccount[] banks; string message; //banks = Movilway.API.Service.ExtendedApi.Provider.Kinacu.Utils.GetAccountBanks(request.AuthenticationData.Username, out message); SaleInterface kinacuWS = new SaleInterface(); // CONDIGURACION INTERFAZ int timeOutSeconds = int.Parse(ConfigurationManager.AppSettings["DefaultTimeout"]); kinacuWS.Timeout = timeOutSeconds * 1000; banks = kinacuWS.GetAccountBank(int.Parse(sessionId), out message); if (banks == null || banks.Length == 0) { this.ProviderLogger.InfoLow(() => TagValue.New().MethodName(methodName) .Message("[" + sessionId + "] " + "No posee cuentas")); return(new GetPSEBankResponse() { ResponseCode = 99, ResponseMessage = "No posee cuentas", TransactionID = 0 }); } else { this.ProviderLogger.InfoLow(() => TagValue.New().MethodName(methodName) .Message("[" + sessionId + "] " + "getAccountBankResult").Tag("bankCount").Value(banks.Length)); } response = new GetPSEBankResponse() { ResponseCode = 0, ResponseMessage = "exito", TransactionID = 0 }; String pseBankId = ConfigurationManager.AppSettings["PSEBankId"] ?? string.Empty; bool found = false; foreach (var bank in banks) { if (pseBankId.Equals(bank.BankId.ToString())) { found = true; this.ProviderLogger.InfoLow(() => TagValue.New().MethodName(methodName) .Message("[" + sessionId + "] " + " PSE Account found") .Tag("BankId").Value(bank.BankId) .Tag("BankName").Value(bank.BankName) .Tag("CBU").Value(bank.CBU) .Tag("Number").Value(bank.Number) .Tag("Id").Value(bank.Id) ); response.BankId = bank.BankId; response.BankName = bank.BankName; response.CBU = bank.CBU; response.Id = bank.Id; response.Number = bank.Number; break; } } if (found) { return(response); } else { this.ProviderLogger.InfoLow(() => TagValue.New().MethodName(methodName) .Message("[" + sessionId + "] " + "No posee cuenta PSE")); return(new GetPSEBankResponse() { ResponseCode = 99, ResponseMessage = "cuenta PSE no encontrada", TransactionID = 0 }); } }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID) { GetDailyCutReportResponseBody response = new GetDailyCutReportResponseBody() { ResponseCode = 99, ResponseMessage = "", TransactionID = 0 }; GetDailyCutReportRequestBody request = requestObject as GetDailyCutReportRequestBody; logger.InfoLow("[QRY] " + base.LOG_PREFIX + " [GetDailyCutReportProvider] [SEND-DATA] parameters {date=" + request.Date + "}"); try { //Ariel 2021-Ma-09 Comentado // response = Movilway.API.Service.ExtendedApi.Provider.Kinacu.Utils.GetDailyCutReport(request); response.ResponseCode = 0; response.ResponseMessage = "OK"; } catch (Exception ex) { response.ResponseCode = 99; response.ResponseMessage = ex.Message; logger.ErrorHigh(base.LOG_PREFIX + " " + ex.Message + " " + ex.GetType().FullName + " " + ex.StackTrace); } return(response); }
/// <summary> /// Inicia la ejecucion del metodo /// </summary> /// <param name="request"></param> /// <returns></returns> public IMovilwayApiResponse PerformOperation(IMovilwayApiRequest request) { IMovilwayApiResponse response = null; //DATOS DE AUTENTICACION try { #region antes // PREFIX //try //{ // LOG_PREFIX = HttpContext.Current.Session["LOG_PREFIX"].ToString() + "[" + new Random(DateTime.Now.Millisecond * 3).Next(100000000, 999999999) + "] "; //} //catch (Exception) //{ // LOG_PREFIX = ""; //} #endregion InitPrefix(); #region log data //try //{ // logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [INPUT] UserInfo {IP=" + HttpContext.Current.Request.UserHostAddress + ",Username="******"} " + request.ToString()); //} //catch (Exception) //{ // logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [INPUT] UserInfo {IP=" + "NULL" + ",Username="******"} " + request.ToString()); //} #endregion PrintLoginValues(request); #region antes //if (request.DeviceType == cons.ACCESS_H2H) //{ // if (!NetWorkSecurity.IpIsWithinRangeH2H(HttpContext.Current.Request.UserHostAddress)) // { // string message = String.Concat("[LA IP NO ESTA REGISTRADA EN EL RANGO PERMITIDO H2H (", HttpContext.Current.Request.UserHostAddress, ")]"); // logger.ErrorHigh(() => TagValue.New().Message("[ERROR DE PERMISOS H2H]").Message(message).Tag("[PARA ACCESO]").Value(request.AuthenticationData)); // throw new Exception(message); // } //} #endregion //si no se activa la optimizacion de seguridad //siempre ejecuta las validaciones de seguridad //if (!ApiConfiguration.API_SECURE_OPTIMIZATION) SecureValidation(request); //la restriccion se mantiene con el fin de que se pueda volver a validar el tiempo del session ID String sessionID = null; if (!(request is GetSessionRequestBody)) { sessionID = GetSessionID(request); } SaleInterface kinacuWS = new SaleInterface(); // CONDIGURACION INTERFAZ int timeOutSeconds = int.Parse(ConfigurationManager.AppSettings["DefaultTimeout"]); kinacuWS.Timeout = timeOutSeconds * 1000; response = PerformKinacuOperation(request, kinacuWS, sessionID); // no deberia lanzar second request deberia solo se responsabilidad #region secondrequest //if (!ValidateNumberOfExecution(request)) // response = PerformKinacuOperation(request, kinacuWS, sessionID); //else //{ // if (_delegateSecondExecution == null) // throw new Exception("NO SE HA DEFINIDO EL MANEJADOR PARA LA SEGUNDA PETICION"); // bool isNew = false; // Func<int> callback = delegate() // { // logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [DOUBLE REQUEST] [CALL BACK] [IS NEW]"); // isNew = true; // return 1; // }; // int hascode = request.GetHashCode(); // logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [DOUBLE REQUEST VALIDATION] [" + hascode + "] "+_cacheRequest.ToString()); // //Action<object,object> oncache= delegate(object k , object v) // // { // // logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [DOUBLE REQUEST] [CALL BACK] [IS DOUBLE]"); // // isNew = false; // // }; // _cacheRequest.GetValue<int>(hascode, callback);//, oncache); // if (isNew) // { // response = PerformKinacuOperation(request, kinacuWS, sessionID); // } // else // { // logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [SecondExecution]"); // response = _delegateSecondExecution (request, kinacuWS, sessionID); // } //} #endregion if (!(request is GetSessionRequestBody)) { if (bool.Parse(ConfigurationManager.AppSettings["LogoffAuto"] ?? "true")) { logger.InfoLow("[KIN] " + this.LOG_PREFIX + "[LogOffProvider] [SEND-DATA] logoffParameters {userid=" + sessionID + "}"); kinacuWS.LogOff(int.Parse(sessionID)); logger.InfoLow("[KIN] " + this.LOG_PREFIX + "[LogOffProvider] [RECV-DATA] logoffResult {nothing}"); } } logger.InfoLow("[API] " + LOG_PREFIX + "[KinacuProvider] [OUTPUT] " + response.ToString()); } catch (Exception e) { logger.ErrorLow("[API] " + LOG_PREFIX + "[KinacuProvider] [EXCEPTION] Exception trying to serve KINACU Operation {message=" + e.Message + ",stackTrace=" + e.StackTrace + "}"); //SE DELEGA EL MANEJO DE LA EXPECION A QUIEN LO INVOCA GENERALMENTE SERVICEEXECUTIONDELEGATOR throw; #region intento de respuesta anterior //Type a = this.GetType().GetMethod("PerformOperation").ReturnType; //response = new AGenericApiResponse() { ResponseCode = 99, ResponseMessage = e.Message, TransactionID = 0 }; //Type name = MethodBase.GetCurrentMethod().GetType(); //ProviderLogger.ExceptionLow(() => TagValue.New().Message("Exception trying to serve KINACU Operation").Exception(e)); #endregion } return(response); }
/// <summary> /// Retorna los Hijos de un agente dado el ID del agente padre /// Precondición: /// - Se han validado los permisos en el sistema /// Postcondición: /// Retorna la lista de BasicAgentInfo con los agentes Hijos /// </summary> /// <param name="requestObject"></param> /// <param name="kinacuWS"></param> /// <param name="sessionID"></param> /// <returns>retorna IMovilwayApiResponse con los datos del agente</returns> public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID) { GetChildListResponseBody response = new GetChildListResponseBody(); if (sessionID.Equals("0")) { response.ResponseCode = 90; response.ResponseMessage = "error session"; response.TransactionID = 0; return(response); } try { GetChildListRequestByIdBody request = requestObject as GetChildListRequestByIdBody; /* * dynamic data = new { AgeId = request.AgeId, Login = request.AuthenticationData.Username }; * if (!Utils.IsValidEditAgent(data)) * { * response.ResponseCode = 90; * response.ResponseMessage = "ERROR DE PERMISOS - NO TIENE PERMISOS PARA ACCEDER A LOS HIJOS DE ESTE AGENTE"; * response.TransactionID = 0; * return response; * }*/ logger.InfoLow(() => TagValue.New().Message("[KIN] " + base.LOG_PREFIX + "[GetChildListProviderById]").Tag("[SEND-DATA] getChildRetailersParameters ").Value(request)); bool extendedValues = request.ExtendedValues ?? false; List <BasicAgentInfo> results = Utils.GetChildsById(request.AgeId, extendedValues); response.ChildList.AddRange(results); response.ResponseCode = 0; response.ResponseMessage = "OK"; response.TransactionID = 0; } catch (Exception ex) { response.ResponseCode = 500; response.ResponseMessage = "ERROR INESPERADO " + ex.Message; response.TransactionID = 0; } return(response); }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID) { if (sessionID.Equals("0")) { return new InformPaymentResponseBody() { ResponseCode = 90, ResponseMessage = "error session", TransactionID = 0 } } ; InformPaymentRequestBody request = requestObject as InformPaymentRequestBody; InformPaymentResponseBody response = null; logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[InformPaymentProvider] [SEND-DATA] informPaymentParameters {amount=" + request.Amount + ",targentAgentId=" + request.TargetAgentId + ",hasDeposit=" + request.HasDeposit + ",accountId=" + request.AccountId + ",transactionReference=" + request.TransactionReference + ",transactionDate=" + request.TransactionDate + ",sucursalNumber=" + request.SucursalNumber + ",sucursalName=" + request.SucursalName + ",comment=" + request.Comment + ",immediatelyDistribute=" + request.ImmediatelyDistribute + "}"); string responseCode = "99", message = "error"; bool result = false; int usrId = new IBank.Utils().GetUserId(request.AuthenticationData.Username); if (request.TargetAgentId > 0) { if (!IsValid(request)) { return(new InformPaymentResponseBody() { ResponseCode = 80, ResponseMessage = "Datos incompletos", TransactionID = 0 }); } string bankAccount = new IBank.Utils().GetBankNumber(request.AccountId); if (request.ImmediatelyDistribute) { //result = new Movilway.API.Service.ExtendedApi.Provider.IBank.Utils().RegistroPago(decimal.Parse(request.TargetAgentId.ToString()), request.Amount, request.TransactionReference, request.TransactionDate, bankAccount, (request.HasDeposit ? "S" : "N"), ref responseCode, ref message, request.Comment, decimal.Parse(request.TransactionReference), DateTime.UtcNow.AddHours(new Movilway.API.Service.ExtendedApi.Provider.IBank.Utils().GetTimeZone())); result = new IBank.Utils().RegistroDepositoAcreditaSaldo(decimal.Parse(request.TargetAgentId.ToString()), usrId, request.Amount, request.TransactionReference, request.TransactionDate, bankAccount, ref responseCode, ref message, request.Comment, DateTime.UtcNow.AddHours(new IBank.Utils().GetTimeZone()), request.SucursalNumber.ToString(), request.SucursalName); } else { result = new IBank.Utils().RegistrarDeposito(request.TargetAgentId, usrId, request.Amount, request.TransactionReference, request.TransactionDate, bankAccount, request.Comment, ref responseCode, ref message, DateTime.UtcNow.AddHours(new IBank.Utils().GetTimeZone()), request.SucursalNumber.ToString(), request.SucursalName); } } else { //int ageId = new IBank.Utils().GetAgentId(request.AuthenticationData.Username); int prodcut = -1; String res = ""; KinacuLogisticsWebService.LogisticsInterface logisticsInterface = new KinacuLogisticsWebService.LogisticsInterface(); result = logisticsInterface.CreateProductRequest(Convert.ToInt32(sessionID), 0, (int)request.Amount * 100, out prodcut, out res); if (result) { responseCode = "00"; message = "TRANSACCION OK"; } else { responseCode = Movilway.API.Core.UtilResut.StrErrorCode(1); message = res; } //result = new IBank.Utils().RegistrarSolicitudProducto(ageId, request.Amount, request.TransactionDate, ref responseCode, ref message); } response = new InformPaymentResponseBody() { ResponseCode = int.Parse(responseCode), ResponseMessage = message, TransactionID = 0 }; logger.InfoLow("[QRY] " + base.LOG_PREFIX + "[InformPaymentProvider] [RECV-DATA] informPaymentResult {ResponseCode=" + responseCode + ",ResponseMessage=" + message + ",TransactionID=" + 0 + "}"); return(response); }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID) { if (sessionID.Equals("0")) { return new TransferResponseBody() { ResponseCode = 90, ResponseMessage = "error session", TransactionID = 0, StockBalance = 0m } } ; TransferRequestBody request = requestObject as TransferRequestBody; TransferResponseBody response = null; if (request.AuthenticationData.Username != ConfigurationManager.AppSettings["ProincoUser"]) { return new TransferResponseBody() { Fee = 0, ResponseCode = 99, ResponseMessage = "fallo", TransactionID = 0 } } ; string myAgent = new IBank.Utils().GetAgentPdv(request.Recipient); var distributionResponse = new IBank.Utils().ExecuteDistribution(ConfigurationManager.AppSettings["id_net"], request.ExternalTransactionReference, DateTime.Now, myAgent, request.Amount, ConfigurationManager.AppSettings["AccountProinco"]); if (int.Parse(distributionResponse.responseCode) == 0) { response = new TransferResponseBody() { Fee = 0, ResponseCode = 0, ResponseMessage = distributionResponse.Message, TransactionID = 0 }; } else { response = new TransferResponseBody() { Fee = 0, ResponseCode = 99, ResponseMessage = "fallo", TransactionID = 0 }; } return(response); } } }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID) { if (sessionID.Equals("0")) { return new GetBankListResponseBody() { ResponseCode = 90, ResponseMessage = "error session", TransactionID = 0, BankList = new BankList() } } ; GetBankListRequestBody request = requestObject as GetBankListRequestBody; GetBankListResponseBody response = null; string message; logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetBankListProvider] [SEND-DATA] getAccountBankParameters {UserId=" + sessionID + "}"); BankAccount[] banks; if (request.ParentValues ?? false) { banks = Utils.GetAccountBanks(request.Agent, out message); } else { banks = kinacuWS.GetAccountBank(int.Parse(sessionID), out message); } if (banks == null || banks.Length == 0) { logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetBankListProvider] [RECV-DATA] getAccountBankResult {No posee cuentas" + (banks == null ? " (null)" : String.Empty) + "}"); } else { logger.InfoLow("[KIN] " + base.LOG_PREFIX + "[GetBankListProvider] [RECV-DATA] getAccountBankResult {response={Count=" + banks.Length + "}}"); } response = new GetBankListResponseBody() { ResponseCode = 0, ResponseMessage = "exito", TransactionID = 0 }; response.BankList = new BankList(); string[] ignoreList = string.IsNullOrEmpty(ConfigurationManager.AppSettings["BankIgnoreList"]) ? new string[0] : ConfigurationManager.AppSettings["BankIgnoreList"].ToString().Split(','); foreach (var bank in banks) { if (!ignoreList.Contains(bank.BankId.ToString())) { //if(response.BankList.Count(b => b.Key == bank.BankId) == 0) response.BankList.Add(bank.Id, bank.BankName + " - " + bank.Number); } } return(response); } }
public override IMovilwayApiResponse PerformKinacuOperation(IMovilwayApiRequest requestObject, SaleInterface kinacuWS, String sessionID) { SetAgentCloseRequestBody request = requestObject as SetAgentCloseRequestBody; SetAgentCloseResponseBody response = new SetAgentCloseResponseBody() { ResponseCode = 99, ResponseMessage = "OK", TransactionID = 0 }; logger.BeginHigh("[KIN] " + base.LOG_PREFIX + "[SetAgentCloseProvider] [SEND-DATA] getChildRetailersParameters {UserId=" + sessionID + "} Agent =" + request.Agent + ", IdMax= " + request.IdMax + " ,IdMin = " + request.IdMin + " ,Type = " + request.Type); //Ariel 2021-Ma-09 Comentado asignamos true bool result = true; // Movilway.API.Service.ExtendedApi.Provider.Kinacu.Utils.SetAgentCloseProvider(request); response.ResponseCode = result ? 0 : 99; response.ResponseMessage = result ? "OK" : ""; return(response); }