public async Task <PaymentResponse> SendAsync(PaymentRequest request, CancellationToken cancellationToken = default)
        {
            if (request is null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            string baseUri = ApiBaseUri.Get(request.Mode);

            string requestUri = $"{baseUri}/request.json";
            string json       = request.ToJson();
            var    content    = new StringContent(json, Encoding.UTF8, "application/json");

            using var httpClient = new HttpClient();

            var response = await httpClient.PostAsync(requestUri, content, cancellationToken);

            json = await response.Content.ReadAsStringAsync();

            var model = JObject.Parse(json);

            return(PaymentResponse(model, request.Mode));
        }