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