1

1


/// <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()}";
        }

Report Page