예제 #1
0
        private ProxyTiempoAire.TResponse CheckTransaction(string requestId)
        {
            ProxyTiempoAire.TResponse tResponse = null;
            int  cont = 0;
            bool superamosLosIntentos = false;

            while (cont <= this.credenciales.NumeroIntentos)
            {
                try
                {
                    tResponse = transact.CheckTransaction(requestId, this.credenciales.UserName);
                }
                catch (Exception)
                {
                }
                if (tResponse.rcode != 2)
                {
                    cont = this.credenciales.NumeroIntentos;
                }
                else
                {
                    System.Threading.Thread.Sleep(5000);
                }
                cont++;
                if (cont >= this.credenciales.NumeroIntentos)
                {
                    superamosLosIntentos = true;
                }
            }
            if (superamosLosIntentos)
            {
                return(null);
            }
            return(tResponse);
        }
예제 #2
0
 /// <summary>
 /// Metodo para agregar tiempo aire
 /// </summary>
 /// <param name="tiempoAireRequest">Petición de Tiempo Aire</param>
 /// <param name="sku">SKU</param>
 /// <param name="folio">Folio de la Venta</param>
 /// <returns></returns>
 public ResponseBussiness <OperationResponse> AddTiempoAire(TiempoAireRequest tiempoAireRequest, int sku, string folio)
 {
     return(tryCatch.SafeExecutor(() =>
     {
         OperationResponse operation = new OperationResponse();
         ProxyTiempoAire.TResponse tResponse = new ProxyTiempoAire.TResponse();
         string requestId = string.Empty;
         requestId = GetRequestId(0);
         if (requestId != "")
         {
             tResponse = GetDto(requestId, tiempoAireRequest.SkuCode, tiempoAireRequest.Telefono, tiempoAireRequest.Monto);
             string result = "";
             if (tResponse != null)
             {
                 if (tResponse.rcode < 3)
                 {
                     result = this.Doa(requestId, tResponse.op_authorization);
                 }
                 else
                 {
                     result = tResponse.rcode_description;
                 }
             }
             else
             {
                 result = "Transacción Fallida por timeout";
             }
             operation.CodeDescription = result;
         }
         else
         {
             operation.CodeDescription = "Error del Web Service, contactar a Administrador del Sistema";
         }
         if (operation.CodeDescription.ToUpper() == "<DoAResponse>OK</DoAResponse>".ToUpper())
         {
             repository.RegistrarAutorizacionPagoTiempoAire(tiempoAireRequest.SkuCode, sku, folio, tResponse.op_authorization);
             operation.CodeNumber = "1";
             operation.CodeDescription = requestId;
         }
         else
         {
             operation.CodeNumber = "0";
         }
         return operation;
     }));
 }
예제 #3
0
 private ProxyTiempoAire.TResponse GetDto(string requestId, string skuCode, string oppAcount, float monto)
 {
     ProxyTiempoAire.TResponse tResponse = null;
     try
     {
         tResponse = transact.DoT(requestId, this.credenciales.UserName, skuCode, oppAcount, monto, null);
         if (tResponse.rcode == 2)
         {
             tResponse = this.CheckTransaction(requestId);
         }
     }
     catch (Exception)
     {
         return(this.CheckTransaction(requestId));
     }
     return(tResponse);
 }