GAMEOVER 501 Опубликовано: 19 апр 2021 И так, сразу к делу. Отступление Я предоставил весь код и комментарии к нему внутри, на случай если какая-то часть будет непонятна. Код можно улучшать и "прокачивать". Все в ваших руках 🙂 А да, язык на котором мы все пишем - 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. Выводит средства с кошелька. Всем профитов, друзья! 0 Поделиться сообщением Ссылка на сообщение
chikago 5 Опубликовано: 19 апр 2021 так все легко и просто 0 Поделиться сообщением Ссылка на сообщение