public IActionResult BatchDetails(string id) { id = _dataProtector.UnprotectString(id); ErrorViewModel errorModel = new ErrorViewModel(); GetTransactionRequestBody requestBody = BuildGetTransactionsRequestBody(id); ResponseDetails response = _apiHelper.SendPaymentApiRequest(requestBody); if (response.Success) { GetTransactionResponseBody responseBody = JsonConvert.DeserializeObject <GetTransactionResponseBody> (response.Data.ToString()); if (responseBody.Messages.ResultCode.ToLower() == "ok") { BatchDetailsModel model = new BatchDetailsModel() { SettledTransactions = responseBody.Transactions }; model.SettledTransactions = ProtectTransactionId(model.SettledTransactions); return(View(model)); } else { errorModel.Message = "No records found"; } } else { errorModel.Message = response.Data.ToString(); } return(View("Error", errorModel)); }
private GetTransactionResponseBody MapDistributionToGetTransactionResponseBody(GetTransactionRequestBody request) { GetTransactionResponseBody result = new GetTransactionResponseBody(); // try { if (request.AuthenticationData == null || string.IsNullOrEmpty(request.AuthenticationData.Username)) { result.ResponseCode = 92; result.ResponseMessage = "EL REQUEST DEBE TENER ASIGNADO EL LOGIN DEL USUARIO."; result.TransactionID = 0; result.TransactionResult = 92; result.TransactionType = "Distribution"; result.TransactionDate = DateTime.Now; result.Amount = 0; result.Recipient = ""; result.Initiator = ""; result.Debtor = ""; result.Creditor = ""; return(result); } logger.InfoLow(base.LOG_PREFIX + "[GetTransactionProvider] Obtener distribucion de BD Target=" + request.ParameterValue + ""); var _dictionary = Utils.GetDistributionByExternalIdRequest(request); if (_dictionary != null && _dictionary.Count > 0 && _dictionary.Keys.Count > 0) { logger.InfoLow(base.LOG_PREFIX + "[GetTransactionProvider] MAPEANDO DATOS"); int sprId = Convert.ToInt32(_dictionary["sprId"]); var sprImporteSolicitud = Convert.ToDecimal(_dictionary["sprImporteSolicitud"]); var sprEstado = _dictionary["sprEstado"]; var sprFechaAprobacion = (DateTime?)_dictionary["sprFechaAprobacion"]; var sltId = _dictionary["sltId"]; var envId = _dictionary["envId"]; var envEstado = _dictionary["envEstado"]; var envFechaEnvio = _dictionary["envFechaEnvio"]; var envFechaRecepcion = _dictionary["envFechaRecepcion"]; var envNumeroRemito = _dictionary["envNumeroRemito"]; var envObservaciones = _dictionary["envObservaciones"]; int ageIdBodegaOrigen = Convert.ToInt32(_dictionary["ageIdBodegaOrigen"]); var ageIdBodegaDestino = Convert.ToInt32(_dictionary["ageIdBodegaDestino"]); var AgenteSolicitante = (string)_dictionary["AgenteSolicitante"]; var AgenteDestinatario = (string)_dictionary["AgenteDestinatario"]; var sltDescripcion = _dictionary["sltDescripcion"]; result.ResponseCode = 0; result.TransactionID = sprId; result.OriginalTransactionId = request.ParameterValue; result.TransactionResult = sprEstado.Equals("CE") ? 0 : 99; result.TransactionType = "Distribution"; result.TransactionDate = sprFechaAprobacion.Value; result.Amount = sprImporteSolicitud; result.Recipient = AgenteDestinatario; result.Initiator = ""; result.Debtor = ""; result.Creditor = ""; var message = "Distribucion por " + sprImporteSolicitud.ToString("0.##", (CultureInfo.InvariantCulture)); message += (result.TransactionResult == 0 ? " exitosa " : " fallida ") + "."; message += "Numero de transaccion " + sprId + "."; message += envObservaciones; result.ResponseMessage = message; } else { result.ResponseCode = 93; result.ResponseMessage = "NO EXISTE DISTRIBUCION CON REFERENCIA " + request.ParameterValue + "."; result.TransactionID = 0; result.TransactionResult = 93; result.TransactionType = "Distribution"; result.TransactionDate = DateTime.Now; result.Amount = 0; result.Recipient = ""; result.Initiator = ""; result.Debtor = ""; result.Creditor = ""; } } catch (Exception ex) { logger.ErrorHigh(() => TagValue.New().MethodName("GetDistributionByExternalIdRequest").Message(base.LOG_PREFIX + " ERROR BUSCANDO DISTRIBUCION CON REFERENCIA " + request.ParameterValue).Exception(ex)); if (ex.InnerException != null) { logger.ErrorHigh(() => TagValue.New().MethodName("GetDistributionByExternalIdRequest").Message(base.LOG_PREFIX + " INNER EXCEPTION " + request.ParameterValue).Exception(ex.InnerException)); } result.ResponseCode = 94; result.ResponseMessage = "ERROR BUSCANDO DISTRIBUCION CON REFERENCIA " + request.ParameterValue; result.TransactionID = 0; result.TransactionResult = 94; result.TransactionType = "Distribution"; result.TransactionDate = DateTime.Now; result.Amount = 0; result.Recipient = ""; result.Initiator = ""; result.Debtor = ""; result.Creditor = ""; } return(result); }
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 PerformUtibaOperation(IMovilwayApiRequest requestObject, UMarketSCClient utibaClientProxy, string sessionID) { GetTransactionRequestBody request = requestObject as GetTransactionRequestBody; GetTransactionResponseBody response = null; queryTransactionResponse utibaQueryTransactionResponse = null; switch (request.ParameterType) { case GetTransactionRequestParameterType.ExternalTransactionReference: logger.InfoLow("[UTI] " + base.LOG_PREFIX + "[GetTransactionProvider] [SEND-DATA] queryTransactionRequest {sessionId=" + sessionID + ",device_type=" + request.DeviceType + ",hostTransRef=" + (request.ParameterValue ?? "") + "}"); utibaQueryTransactionResponse = utibaClientProxy.queryTransaction(new queryTransaction() { queryTransactionRequest = new queryTransactionRequestType() { sessionid = sessionID, device_type = request.DeviceType, hostTransRef = request.ParameterValue ?? "" } }); logger.InfoLow("[UTI] " + base.LOG_PREFIX + "[GetTransactionProvider] [RECV-DATA] queryTransactionResponse {transid=" + utibaQueryTransactionResponse.queryTransactionReturn.transid + ",result=" + utibaQueryTransactionResponse.queryTransactionReturn.result + ",result_namespace=" + utibaQueryTransactionResponse.queryTransactionReturn.result_namespace + ",result_message=" + utibaQueryTransactionResponse.queryTransactionReturn.result_message + ",initiator=" + utibaQueryTransactionResponse.queryTransactionReturn.initiator + ",creditor=" + utibaQueryTransactionResponse.queryTransactionReturn.creditor + ",debtor=" + utibaQueryTransactionResponse.queryTransactionReturn.debtor + ",amount=" + utibaQueryTransactionResponse.queryTransactionReturn.amount + ",type=" + utibaQueryTransactionResponse.queryTransactionReturn.type + ",external=" + utibaQueryTransactionResponse.queryTransactionReturn.external + ",date=" + utibaQueryTransactionResponse.queryTransactionReturn.date + ",state=" + utibaQueryTransactionResponse.queryTransactionReturn.state + ",trans_result=" + utibaQueryTransactionResponse.queryTransactionReturn.trans_result + ",trans_result_namespace=" + utibaQueryTransactionResponse.queryTransactionReturn.trans_result_namespace + ",transaction_type=" + utibaQueryTransactionResponse.queryTransactionReturn.transaction_type + ",recipient=" + utibaQueryTransactionResponse.queryTransactionReturn.recipient + "}"); response = MapUtibaQueryTransactionResponseToGetTransactionResponseBody(utibaQueryTransactionResponse); break; case GetTransactionRequestParameterType.TransactionID: logger.InfoLow("[UTI] " + base.LOG_PREFIX + "[GetTransactionProvider] [SEND-DATA] queryTransactionRequest {sessionId=" + sessionID + ",device_type=" + request.DeviceType + ",ID=" + (request.ParameterValue ?? "") + "}"); utibaQueryTransactionResponse = utibaClientProxy.queryTransaction(new queryTransaction() { queryTransactionRequest = new queryTransactionRequestType() { sessionid = sessionID, device_type = request.DeviceType, ID = request.ParameterValue ?? "" } }); logger.InfoLow("[UTI] " + base.LOG_PREFIX + "[GetTransactionProvider] [RECV-DATA] queryTransactionResponse {transid=" + utibaQueryTransactionResponse.queryTransactionReturn.transid + ",result=" + utibaQueryTransactionResponse.queryTransactionReturn.result + ",result_namespace=" + utibaQueryTransactionResponse.queryTransactionReturn.result_namespace + ",result_message=" + utibaQueryTransactionResponse.queryTransactionReturn.result_message + ",initiator=" + utibaQueryTransactionResponse.queryTransactionReturn.initiator + ",creditor=" + utibaQueryTransactionResponse.queryTransactionReturn.creditor + ",debtor=" + utibaQueryTransactionResponse.queryTransactionReturn.debtor + ",amount=" + utibaQueryTransactionResponse.queryTransactionReturn.amount + ",type=" + utibaQueryTransactionResponse.queryTransactionReturn.type + ",external=" + utibaQueryTransactionResponse.queryTransactionReturn.external + ",date=" + utibaQueryTransactionResponse.queryTransactionReturn.date + ",state=" + utibaQueryTransactionResponse.queryTransactionReturn.state + ",trans_result=" + utibaQueryTransactionResponse.queryTransactionReturn.trans_result + ",trans_result_namespace=" + utibaQueryTransactionResponse.queryTransactionReturn.trans_result_namespace + ",transaction_type=" + utibaQueryTransactionResponse.queryTransactionReturn.transaction_type + ",recipient=" + utibaQueryTransactionResponse.queryTransactionReturn.recipient + "}"); response = MapUtibaQueryTransactionResponseToGetTransactionResponseBody(utibaQueryTransactionResponse); break; case GetTransactionRequestParameterType.TargetAgent: logger.InfoLow("[UTI] " + base.LOG_PREFIX + "[GetTransactionProvider] [SEND-DATA] queryTransactionRequest {sessionId=" + sessionID + ",device_type=" + request.DeviceType + ",targetMSISDN=" + request.ParameterValue + ",transactionType=buy}"); utibaQueryTransactionResponse = utibaClientProxy.queryTransaction(new queryTransaction() { queryTransactionRequest = new queryTransactionRequestType() { sessionid = sessionID, device_type = request.DeviceType, targetMSISDN = request.ParameterValue, transactionType = "buy" } }); logger.InfoLow("[UTI] " + base.LOG_PREFIX + "[GetTransactionProvider] [RECV-DATA] queryTransactionResponse {transid=" + utibaQueryTransactionResponse.queryTransactionReturn.transid + ",result=" + utibaQueryTransactionResponse.queryTransactionReturn.result + ",result_namespace=" + utibaQueryTransactionResponse.queryTransactionReturn.result_namespace + ",result_message=" + utibaQueryTransactionResponse.queryTransactionReturn.result_message + ",initiator=" + utibaQueryTransactionResponse.queryTransactionReturn.initiator + ",creditor=" + utibaQueryTransactionResponse.queryTransactionReturn.creditor + ",debtor=" + utibaQueryTransactionResponse.queryTransactionReturn.debtor + ",amount=" + utibaQueryTransactionResponse.queryTransactionReturn.amount + ",type=" + utibaQueryTransactionResponse.queryTransactionReturn.type + ",external=" + utibaQueryTransactionResponse.queryTransactionReturn.external + ",date=" + utibaQueryTransactionResponse.queryTransactionReturn.date + ",state=" + utibaQueryTransactionResponse.queryTransactionReturn.state + ",trans_result=" + utibaQueryTransactionResponse.queryTransactionReturn.trans_result + ",trans_result_namespace=" + utibaQueryTransactionResponse.queryTransactionReturn.trans_result_namespace + ",transaction_type=" + utibaQueryTransactionResponse.queryTransactionReturn.transaction_type + ",recipient=" + utibaQueryTransactionResponse.queryTransactionReturn.recipient + "}"); response = MapUtibaQueryTransactionResponseToGetTransactionResponseBody(utibaQueryTransactionResponse); break; case GetTransactionRequestParameterType.TransactionType: logger.InfoLow("[UTI] " + base.LOG_PREFIX + "[GetTransactionProvider] [SEND-DATA] queryTransactionRequest {sessionId=" + sessionID + ",device_type=" + request.DeviceType + ",targetMSISDN=" + request.AuthenticationData.Username + ",transactionType=" + request.ParameterValue + "}"); utibaQueryTransactionResponse = utibaClientProxy.queryTransaction(new queryTransaction() { queryTransactionRequest = new queryTransactionRequestType() { sessionid = sessionID, device_type = request.DeviceType, targetMSISDN = request.AuthenticationData.Username, transactionType = request.ParameterValue } }); logger.InfoLow("[UTI] " + base.LOG_PREFIX + "[GetTransactionProvider] [RECV-DATA] queryTransactionResponse {transid=" + utibaQueryTransactionResponse.queryTransactionReturn.transid + ",result=" + utibaQueryTransactionResponse.queryTransactionReturn.result + ",result_namespace=" + utibaQueryTransactionResponse.queryTransactionReturn.result_namespace + ",result_message=" + utibaQueryTransactionResponse.queryTransactionReturn.result_message + ",initiator=" + utibaQueryTransactionResponse.queryTransactionReturn.initiator + ",creditor=" + utibaQueryTransactionResponse.queryTransactionReturn.creditor + ",debtor=" + utibaQueryTransactionResponse.queryTransactionReturn.debtor + ",amount=" + utibaQueryTransactionResponse.queryTransactionReturn.amount + ",type=" + utibaQueryTransactionResponse.queryTransactionReturn.type + ",external=" + utibaQueryTransactionResponse.queryTransactionReturn.external + ",date=" + utibaQueryTransactionResponse.queryTransactionReturn.date + ",state=" + utibaQueryTransactionResponse.queryTransactionReturn.state + ",trans_result=" + utibaQueryTransactionResponse.queryTransactionReturn.trans_result + ",trans_result_namespace=" + utibaQueryTransactionResponse.queryTransactionReturn.trans_result_namespace + ",transaction_type=" + utibaQueryTransactionResponse.queryTransactionReturn.transaction_type + ",recipient=" + utibaQueryTransactionResponse.queryTransactionReturn.recipient + "}"); response = MapUtibaQueryTransactionResponseToGetTransactionResponseBody(utibaQueryTransactionResponse); break; default: logger.InfoLow("[UTI] " + base.LOG_PREFIX + "[GetTransactionProvider] [SEND-DATA] queryTransactionRequest {sessionId=" + sessionID + "}"); utibaQueryTransactionResponse = utibaClientProxy.queryTransaction(new queryTransaction() { queryTransactionRequest = new queryTransactionRequestType() { sessionid = sessionID } }); logger.InfoLow("[UTI] " + base.LOG_PREFIX + "[GetTransactionProvider] [RECV-DATA] queryTransactionResponse {transid=" + utibaQueryTransactionResponse.queryTransactionReturn.transid + ",result=" + utibaQueryTransactionResponse.queryTransactionReturn.result + ",result_namespace=" + utibaQueryTransactionResponse.queryTransactionReturn.result_namespace + ",result_message=" + utibaQueryTransactionResponse.queryTransactionReturn.result_message + ",initiator=" + utibaQueryTransactionResponse.queryTransactionReturn.initiator + ",creditor=" + utibaQueryTransactionResponse.queryTransactionReturn.creditor + ",debtor=" + utibaQueryTransactionResponse.queryTransactionReturn.debtor + ",amount=" + utibaQueryTransactionResponse.queryTransactionReturn.amount + ",type=" + utibaQueryTransactionResponse.queryTransactionReturn.type + ",external=" + utibaQueryTransactionResponse.queryTransactionReturn.external + ",date=" + utibaQueryTransactionResponse.queryTransactionReturn.date + ",state=" + utibaQueryTransactionResponse.queryTransactionReturn.state + ",trans_result=" + utibaQueryTransactionResponse.queryTransactionReturn.trans_result + ",trans_result_namespace=" + utibaQueryTransactionResponse.queryTransactionReturn.trans_result_namespace + ",transaction_type=" + utibaQueryTransactionResponse.queryTransactionReturn.transaction_type + ",recipient=" + utibaQueryTransactionResponse.queryTransactionReturn.recipient + "}"); response = MapUtibaQueryTransactionResponseToGetTransactionResponseBody(utibaQueryTransactionResponse); break; } return(response); }