private string BuildGetTransactionResponseMessage(queryTransactionResponse utibaQueryResponse) { return("::Movilway:: ;; Agente Afiliado: " + utibaQueryResponse.queryTransactionReturn.initiator + "; Fecha: " + UtibaUtils.FromEpochToLocalTime(utibaQueryResponse.queryTransactionReturn.date).ToString("dd-MM-yyyy hh:mm:ss tt") + "; Transaccion: " + (String.IsNullOrEmpty(utibaQueryResponse.queryTransactionReturn.result_message) ? "" : Clean(utibaQueryResponse.queryTransactionReturn.result_message.Split(' ').Last())) + "; Tipo: " + utibaQueryResponse.queryTransactionReturn.transaction_type + "; Producto: " + utibaQueryResponse.queryTransactionReturn.creditor + ";; ::Gracias por Utilizar ; Movilway::;;"); }
public void TestQueryTransactionResponse() { queryTransaction query = new queryTransaction(); query.id = "myId"; query.reportGroup = "myReportGroup"; query.origId = "12345"; query.origActionType = actionTypeEnum.D; query.origCnpTxnId = 54321; var mock = new Mock <Communications>(); mock.Setup(Communications => Communications.HttpPost(It.IsRegex(".*<queryTransaction.*", RegexOptions.Singleline))) .Returns("<cnpOnlineResponse version='10.10' response='0' message='Valid Format' xmlns='http://www.vantivcnp.com/schema'><queryTransactionResponse id='FindAuth' reportGroup='Mer5PM1' customerId='1'><response>000</response><responseTime>2015-12-03T10:30:02</responseTime><message>Original transaction found</message><results_max10><authorizationResponse id='1' reportGroup='defaultReportGroup'><cnpTxnId>756027696701750</cnpTxnId><orderId>GenericOrderId</orderId><response>000</response><responseTime>2015-04-14T12:04:59</responseTime><postDate>2015-04-14</postDate><message>Approved</message><authCode>055858</authCode></authorizationResponse><authorizationResponse id='1' reportGroup='defaultReportGroup'><cnpTxnId>756027696701751</cnpTxnId><orderId>GenericOrderId</orderId><response>000</response><responseTime>2015-04-14T12:04:59</responseTime><postDate>2015-04-14</postDate><message>Approved</message><authCode>055858</authCode></authorizationResponse><captureResponse><response>000</response><message>Deposit approved</message></captureResponse></results_max10><location>sandbox</location></queryTransactionResponse></cnpOnlineResponse>"); Communications mockedCommunication = mock.Object; cnp.SetCommunication(mockedCommunication); transactionTypeWithReportGroup response = (transactionTypeWithReportGroup)cnp.QueryTransaction(query); queryTransactionResponse queryTransactionResponse = (queryTransactionResponse)response; Assert.NotNull(queryTransactionResponse); Assert.AreEqual("sandbox", queryTransactionResponse.location); Assert.AreEqual("000", queryTransactionResponse.response); Assert.AreEqual(3, queryTransactionResponse.results_max10.Count); Assert.AreEqual("Original transaction found", queryTransactionResponse.message); Assert.AreEqual("000", ((authorizationResponse)queryTransactionResponse.results_max10[0]).response); Assert.AreEqual("Approved", ((authorizationResponse)queryTransactionResponse.results_max10[0]).message); Assert.AreEqual(756027696701750, ((authorizationResponse)queryTransactionResponse.results_max10[0]).cnpTxnId); Assert.AreEqual("000", ((authorizationResponse)queryTransactionResponse.results_max10[1]).response); Assert.AreEqual("Approved", ((authorizationResponse)queryTransactionResponse.results_max10[1]).message); Assert.AreEqual(756027696701751, ((authorizationResponse)queryTransactionResponse.results_max10[1]).cnpTxnId); Assert.AreEqual("000", ((authorizationResponse)queryTransactionResponse.results_max10[1]).response); Assert.AreEqual("Approved", ((authorizationResponse)queryTransactionResponse.results_max10[1]).message); Assert.AreEqual(756027696701751, ((authorizationResponse)queryTransactionResponse.results_max10[1]).cnpTxnId); Assert.AreEqual("000", ((captureResponse)queryTransactionResponse.results_max10[2]).response); Assert.AreEqual("Deposit approved", ((captureResponse)queryTransactionResponse.results_max10[2]).message); }
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); }
private GetTransactionResponseBody MapUtibaQueryTransactionResponseToGetTransactionResponseBody(queryTransactionResponse utibaQueryResponse) { return(new GetTransactionResponseBody() { ResponseCode = Utils.BuildResponseCode(utibaQueryResponse.queryTransactionReturn.result, utibaQueryResponse.queryTransactionReturn.result_namespace), ResponseMessage = String.IsNullOrEmpty(utibaQueryResponse.queryTransactionReturn.result_message) ? "N/A" : BuildGetTransactionResponseMessage(utibaQueryResponse), TransactionID = utibaQueryResponse.queryTransactionReturn.transid, OriginalTransactionId = String.IsNullOrEmpty(utibaQueryResponse.queryTransactionReturn.result_message) ? "" : Clean(utibaQueryResponse.queryTransactionReturn.result_message.Split(' ').Last()), Amount = utibaQueryResponse.queryTransactionReturn.amount, Recipient = utibaQueryResponse.queryTransactionReturn.recipient, TransactionDate = UtibaUtils.FromEpochToLocalTime(utibaQueryResponse.queryTransactionReturn.date), TransactionResult = Utils.BuildResponseCode(utibaQueryResponse.queryTransactionReturn.trans_result, utibaQueryResponse.queryTransactionReturn.result_namespace), TransactionType = utibaQueryResponse.queryTransactionReturn.transaction_type, Initiator = utibaQueryResponse.queryTransactionReturn.initiator, Debtor = utibaQueryResponse.queryTransactionReturn.debtor, Creditor = utibaQueryResponse.queryTransactionReturn.creditor }); }
internal GetTransactionResponseInternal GetTransactionInternal(GetTransactionRequestInternal getTransactionRequest) { Log(Logger.LogMessageType.Info, "-> -------------------- Comienza la ejecución del método Sales.GetTransactionInternal", Logger.LoggingLevelType.Medium); GetTransactionResponseInternal responseInternal = null; try { UMarketSCClient utibaClient = new UMarketSCClient(); queryTransactionResponse utibaQueryTransactionResponse = null; using (OperationContextScope scope = new OperationContextScope(utibaClient.InnerChannel)) { HttpRequestMessageProperty messageProperty = new HttpRequestMessageProperty(); messageProperty.Headers.Add(HttpRequestHeader.UserAgent, UserAgent); OperationContext.Current.OutgoingMessageProperties.Add(HttpRequestMessageProperty.Name, messageProperty); Log(Logger.LogMessageType.Info, "-> -------------------- " + String.Format("Parámetros Recibidos Sales.GetTransactionInternal: " + "SessionID={0}, DeviceType={1}, ParameterType={2}, ParameterValue={3}", getTransactionRequest.SessionID, getTransactionRequest.DeviceType, getTransactionRequest.ParameterType, getTransactionRequest.ParameterValue), Logger.LoggingLevelType.Low); Log(Logger.LogMessageType.Info, "-> -------------------- " + String.Format("Parámetros Enviados Sales.GetTransactionInternal: " + "SessionID={0}, DeviceType={1}, ParameterType={2}, ParameterValue={3}", getTransactionRequest.SessionID, getTransactionRequest.DeviceType, getTransactionRequest.ParameterType, getTransactionRequest.ParameterValue), Logger.LoggingLevelType.Low); switch (getTransactionRequest.ParameterType) { case GetTransactionRequestInternalParameterType.HostReference: utibaQueryTransactionResponse = utibaClient.queryTransaction(new queryTransaction() { queryTransactionRequest = new queryTransactionRequestType() { sessionid = getTransactionRequest.SessionID, device_type = getTransactionRequest.DeviceType, hostTransRef = getTransactionRequest.ParameterValue } }); break; case GetTransactionRequestInternalParameterType.OperatorReference: utibaQueryTransactionResponse = utibaClient.queryTransaction(new queryTransaction() { queryTransactionRequest = new queryTransactionRequestType() { sessionid = getTransactionRequest.SessionID, device_type = getTransactionRequest.DeviceType, targetMSISDN = getTransactionRequest.ParameterValue } }); break; case GetTransactionRequestInternalParameterType.TransID: utibaQueryTransactionResponse = utibaClient.queryTransaction(new queryTransaction() { queryTransactionRequest = new queryTransactionRequestType() { sessionid = getTransactionRequest.SessionID, device_type = getTransactionRequest.DeviceType, ID = getTransactionRequest.ParameterValue } }); break; } } if (utibaQueryTransactionResponse != null) { responseInternal = new GetTransactionResponseInternal() { Amount = utibaQueryTransactionResponse.queryTransactionReturn.amount, Recipient = utibaQueryTransactionResponse.queryTransactionReturn.recipient, ResponseCode = utibaQueryTransactionResponse.queryTransactionReturn.result, ResponseMessage = utibaQueryTransactionResponse.queryTransactionReturn.result_message, TransactionDate = FromEpochToLocalTime(utibaQueryTransactionResponse.queryTransactionReturn.date), TransactionID = utibaQueryTransactionResponse.queryTransactionReturn.transid, TransactionResult = utibaQueryTransactionResponse.queryTransactionReturn.trans_result, TransactionType = utibaQueryTransactionResponse.queryTransactionReturn.transaction_type, Initiator = utibaQueryTransactionResponse.queryTransactionReturn.initiator, Debtor = utibaQueryTransactionResponse.queryTransactionReturn.debtor, Creditor = utibaQueryTransactionResponse.queryTransactionReturn.creditor }; } Log(Logger.LogMessageType.Info, "-> -------------------- " + String.Format("Resultado Obtenido Sales.GetTransactionInternal: ResponseCode={0}, ResponseMessage={1}, TransactionID={2}, " + "Amount={3}, Recipient={4}, TransactionDate={5}, TransactionResult={6}", responseInternal.ResponseCode, responseInternal.ResponseMessage, responseInternal.TransactionID, responseInternal.Amount, responseInternal.Recipient, responseInternal.TransactionDate, responseInternal.TransactionResult), Logger.LoggingLevelType.Low); } catch (Exception ex) { Log(Logger.LogMessageType.Error, "Ocurrio una exception procesando el metodo Sales.GetTransaction, los detalles son: " + ex.ToString(), Logger.LoggingLevelType.Low); return(null); } Log(Logger.LogMessageType.Info, "-> -------------------- Termina la ejecución del método Sales.GetTransactionInternal", Logger.LoggingLevelType.Medium); return(responseInternal); }