using SPWorldsApi.Types.Interfaces; using SPWorldsApi.Utils; using System.Text.Json; using System.Text.Json.Nodes; namespace SPWorldsApi.Payments { internal interface IPaymentWrapper { HttpClient.HttpRequest client { get; set; } internal async Task SendRequest(string endpoint, HttpMethod method = null, object body = null) { return await client.SendRequest(endpoint, method, body); } /// /// Get card from spworlds /// /// public async Task GetCard() => (await SendRequest("card")).Deserialize(); /// /// Create transaction /// /// receiver card /// amount of AR /// comment to transaction /// balance of card public async Task CreateTransaction(string receiver, int amount, string comment) { var transitionInfo = new Dictionary { { "receiver", receiver }, { "amount", amount }, { "comment", comment } }; var response = JsonNode.Parse(await SendRequest(endpoint: "transactions", body: transitionInfo)); return (int)response["balance"]; } public async Task InitPayment(IPaymentItems[] items, string redirectUrl, string webhookUrl, string data) { var paymentInfo = new Dictionary { { "items", JsonSerializer.Serialize(items).ToLower()}, { "redirectUrl", redirectUrl }, { "webhookUrl", webhookUrl }, { "data", data } }; var payment = JsonObject.Parse(await SendRequest(endpoint: $"payment", body: paymentInfo)); var url = payment["url"]; return (string)url; } /// /// Create payment url /// /// /// public async Task InitPayment(IPaymentData paymentData) { var payment = JsonObject.Parse(await SendRequest(endpoint: $"payment", body: JsonSerializer.Serialize(paymentData))); return (string)payment["url"]; } } }