예제 #1
0
        static Cache365RequestPaymentResponseType Create(double amount, string phone, string btcAddr, ProxySettingsItem proxy)
        {
            Random  r     = new Random();
            Cash365 model = new Cash365();

            if (proxy != null)
            {
                model.httpRequest.Proxy = proxy.CreateProxyClient();
            }

            if (App.settings.cache365.accounts.Count() > 0)
            {
                var free = App.accountsStack.GetFree();
                App.accountsStack.MarkBusy(free);

                bool isLogin = model.Login(free.login, free.passwrd);
                if (!isLogin)
                {
                    throw new Exception("can`t login " + free.login);
                }

                Thread.Sleep(
                    r.Next(
                        App.settings.cache365.delay_after_login_from,
                        App.settings.cache365.delay_after_login_to
                        )
                    );
            }

            string email = GenerateEmail(phone);

            App.actionsLog.Append(new ActionDataItem(phone, "GenerateEmail: " + email));

            CreateTicketStruct created = model.CreateTicket(phone, amount, btcAddr, email);

            App.actionsLog.Append(new ActionDataItem(phone, "completed create ticket, try parse final page"));

            ParseFinalPage parser = new ParseFinalPage(created.content);

            var finalPage = new Cache365RequestPaymentResponseType()
            {
                account    = created.qiwiNumber,
                btc_amount = parser.GetBtcAmount(),
                comment    = parser.GetNumberTicket(),
                ip         = proxy == null ? "" : proxy.ip,
                email      = email
            };

            App.actionsLog.Append(new ActionDataItem(phone, "Final page: " + finalPage.toJson()));

            return(finalPage);
        }
예제 #2
0
        public void CreateTicketTest()
        {
            Random  r     = new Random();
            Cash365 model = new Cash365();

            ProxySettingsItem usedProxyInCreate = null;

            //model.ChangeProxyOnNoBan(
            //    new ProxyLog()
            //            .Load()
            //            .GetBlacklistHosts(),
            //    ref usedProxyInCreate
            //);
            //Thread.Sleep(r.Next(App.settings.cache365.delay_before_each_step_from, App.settings.cache365.delay_before_each_step_to));

            var free = App.accountsStack.GetFree();

            App.accountsStack.MarkBusy(free);

            Assert.IsTrue(
                model.Login(
                    free.login,
                    free.passwrd
                    ), "Не получается залогиниться " + free.login
                );

            Thread.Sleep(
                r.Next(
                    App.settings.cache365.delay_after_login_from,
                    App.settings.cache365.delay_after_login_to
                    )
                );

            CreateTicketStruct created = model.CreateTicket("+7912345678", 5000, "bc1q3zm4x7d4032gp8ghqsmf79dzmnrmtggp2e7mae");

            Assert.IsNotEmpty(created.content, "Заявка не создается");
            Assert.IsNotEmpty(created.qiwiNumber, "QIWI кошелек не возвращается");

            ParseFinalPage parser = new ParseFinalPage(created.content);

            Assert.IsNotEmpty(parser.GetStatus(), "Не работает парсинг статуса по только что созданной заявке, " + created.content);
            Assert.IsNotEmpty(parser.GetNumberTicket(), "Не работает парсинг номера заявки по только что созданной заявке, " + created.content);
            Assert.IsNotEmpty(parser.GetRubAmount(), "Не работает парсинг суммы руб по только что созданной заявке, " + created.content);
            Assert.IsNotEmpty(parser.GetBtcAmount(), "Не работает парсинг суммы btc по только что созданной заявке, " + created.content);
            Assert.IsNotEmpty(parser.GetBtcAddr(), "Не работает парсинг адреса btc по только что созданной заявке, " + created.content);
            Assert.IsNotEmpty(parser.GetCardId(), "Не работает парсинг id кошелька по только что созданной заявке, " + created.content);
        }