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