Beispiel #1
0
        public ActionResult Seleccionar(string form, string pais, int plan, string user)
        {
            string baseUrlBillingService   = configurationRepository.GetConfig("BaseUrlBillingService");
            string methodUrlBillingService = configurationRepository.GetConfig("MethodUrlBillingService");

            // Obtengo el formulario
            var formulario = productsFormsRepository.GetProductForm(form);

            // URLS
            string FreemiumUrlOk      = formulario.Products.BillingUrlOk;
            string FreemiumUrlError   = formulario.Products.BillingUrlError;
            string FreemiumUrlNotify  = configurationRepository.GetConfig("FreemiumUrlNotify"); //notifica a freemium sobre la suscripcion
            string FreemiumCommerceId = configurationRepository.GetConfig("FreemiumCommerceId");

            if (formulario.Products.DemoMode == true)
            {
                // En caso de que el propduicto esté en modo demo, abre la pantalla de pago de prueba
                return(RedirectToAction("Index", "FormularioPago", new { form = form, plan = plan, user = user }));
            }

            // Se invoca InitTransaction del Motor de pagos
            Wach.WachHelper billingService = new Wach.WachHelper(baseUrlBillingService);

            // Creo un codExternal con los datos obtenidos
            string codExternal = pais + "-" + plan + "-" + user + "-" + formulario.Products.Token;

            var content = new FormUrlEncodedContent(
                new List <KeyValuePair <string, string> >
            {
                new KeyValuePair <string, string>("idUserExternal", user),
                new KeyValuePair <string, string>("codExternal", codExternal),        // requiere trx de wp
                new KeyValuePair <string, string>("urlOk", FreemiumUrlOk),
                new KeyValuePair <string, string>("urlError", FreemiumUrlError),
                new KeyValuePair <string, string>("urlNotify", FreemiumUrlNotify),
                new KeyValuePair <string, string>("commerceID", FreemiumCommerceId),
                new KeyValuePair <string, string>("amount", "0")
            });

            //new EventLogRepository().SetLog("Seleccion planes", "Realizando POST a " + methodUrlBillingService+ " / COD ANALYTICS: "+formulario.Products.CodeAnalytics);

            var respuesta = billingService.PostSimple <RetornoInit>(methodUrlBillingService, content);

            //new EventLogRepository().SetLog("Selección planes", "Respuesta: [" + respuesta.errNumber + "]:" + respuesta.errMessage);

            if (respuesta.code == 0)
            {
                //return Redirect(respuesta.urlFrmPago.Replace("{TRX}",respuesta.trx).Replace("{COMM}",FreemiumCommerceId));
            }
            else
            {
                // El motor retorna error
                return(Content(respuesta.message));
            }

            return(Content("Error, no se pudo redireccionar"));
        }
Beispiel #2
0
        public List <PlanesCobros> GetCobros(int idAplicacion)
        {
            Wach.WachHelper server = new Wach.WachHelper("http://54.94.143.29/");

            List <PlanesCobros> cobros = new List <PlanesCobros>();

            try
            {
                //string subscripcion = server.Get<string>("subscriptions/Hhd7s56ag$/4");

                cobros = server.Get <List <PlanesCobros> >("servicio.json");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                cobros = null;
            }

            return(cobros);
        }
Beispiel #3
0
        /// <summary>Inicializa transacción con Motor de Pagos</summary>
        /// <param name="productToken">Token del producto en Freemium</param>
        /// <param name="pais">Sigla (2 dígitos) que representa al país</param>
        /// <param name="user">ID usuario externo del 3rd party</param>
        /// <param name="m">Monto (valor) codificado de la transacción</param>
        /// <param name="idPerfil">(opcional) Recibe el perfil que debe ser seteado (para flujo distinto)</param>
        /// <returns>ActionResult, redirección hacia ruta correspondiente</returns>
        public ActionResult PagarPerfilPremium(string productToken, string pais, string user, string m, string idPerfil)
        {
            string baseUrlBillingService   = configurationRepository.GetConfig("BaseUrlBillingService");
            string methodUrlBillingService = configurationRepository.GetConfig("MethodUrlBillingService");

            // Descodifico el monto recibido
            byte[] data          = Convert.FromBase64String(m);
            string decodedString = Encoding.UTF8.GetString(data);

            string[] arrAmount  = decodedString.Split('@'); // valor multiplicado @ ghost @ multiplicador
            int      total      = Convert.ToInt32(arrAmount[0]);
            int      multiplier = Convert.ToInt32(arrAmount[arrAmount.Length - 1]);
            int      amount     = total / multiplier;

            // Obtengo el producto
            var product_id    = productsRepository.GetProductId(productToken); // productToken = idApp
            var product       = productsRepository.GetProduct(product_id);
            var perfilPremium = profilesRepository.GetPaidProfiles(product_id).FirstOrDefault();

            //URLS
            string FreemiumUrlOk     = product.BillingUrlOk;
            string FreemiumUrlError  = product.BillingUrlError;
            string FreemiumUrlNotify = configurationRepository.GetConfig("FreemiumUrlNotify"); //notifica a freemium sobre la suscripcion


            string FreemiumCommerceId = configurationRepository.GetConfig("FreemiumCommerceId");

            if (product_id == 1) // MG
            {
                FreemiumCommerceId = configurationRepository.GetConfig("FreemiumCommerceIdMG");
            }
            else if (product_id == 2) // SSZ
            {
                FreemiumCommerceId = configurationRepository.GetConfig("FreemiumCommerceIdSSZ");
            }
            else if (product_id == 5) // Zana
            {
                FreemiumCommerceId = configurationRepository.GetConfig("FreemiumCommerceIdZana");
            }

            if (product.DemoMode == true)
            {
                //en caso de que el propduicto esté en modo demo, abre la pantalla de pago de prueba
                //return RedirectToAction("Index", "FormularioPago", new { form = form, plan = plan, user = user });
            }

            // Llamado a InitTransaction del Motor de Pagos
            Wach.WachHelper billingService = new Wach.WachHelper(baseUrlBillingService);

            // Creo un codExternal con los datos obtenidos
            Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
            // idUserExternal, idPlan, idApp son requeridos para notify billing
            string idPerfilX = idPerfil == null?perfilPremium.IdProfile.ToString() : idPerfil;

            string codExternal = product_id + "-"
                                 + idPerfilX + "-"          // idPlan (perfil)
                                 + user + "-"               // idUserExternal
                                 + productToken + "-"       // idApp
                                 + unixTimestamp.ToString();

            var content = new FormUrlEncodedContent(
                new List <KeyValuePair <string, string> >
            {
                new KeyValuePair <string, string>("idUserExternal", user),
                new KeyValuePair <string, string>("codExternal", codExternal),        // requiere trx de wp
                new KeyValuePair <string, string>("urlOk", FreemiumUrlOk),
                new KeyValuePair <string, string>("urlError", FreemiumUrlError),
                new KeyValuePair <string, string>("urlNotify", FreemiumUrlNotify),
                new KeyValuePair <string, string>("commerceID", FreemiumCommerceId),
                new KeyValuePair <string, string>("amount", amount.ToString())
            });


            // Respuesta del motor de pagos
            var respuesta = billingService.PostSimple <RetornoInit>(methodUrlBillingService, content);

            new EventLogRepository().SetLog("Seleccion planes", "Realizando POST a " + respuesta.message);

            if (respuesta.code == 0)
            {
                // Transacción inicializada correctamente en el motor de pagos
                // Redirecciona a formulario de pago con valor de transacción
                return(Redirect(respuesta.paymentForm + respuesta.result));
            }
            else
            {
                // El motor retorna error
                return(Content(respuesta.message));
            }
        }