예제 #1
0
        public async Task <PaymentInfo> ProcessPaymentAsync(int userId, string reference)
        {
            var uri = new Uri(
                new Uri(_paymentServiceBaseUrl),
                string.Format(ThirdPartyServices.Payment.PerformPayment(), userId, reference));

            var request  = new HttpRequestMessage(HttpMethod.Post, uri);
            var response = await _httpClient.SendAsync(request);

            response.EnsureSuccessStatusCode();
            return(PaymentInfoTranslator.Translate(await response.Content.ReadAsStringAsync()));
        }
        public async Task <PaymentInfo> ProcessPaymentAsync(int userId, string reference)
        {
            var uri = new Uri(
                new Uri(_paymentServiceBaseUrl),
                string.Format(ThirdPartyServices.Payment.PerformPayment(), userId, reference));

            var request = new HttpRequestMessage(HttpMethod.Post, uri);

            var chaosSettings = await _generalChaosSettingFactory.Value;
            var context       = new Context(OperationKeys.PaymentApi.ToString()).WithChaosSettings(chaosSettings);
            var response      = await _httpClient.SendAsync(request, context);

            response.EnsureSuccessStatusCode();
            return(PaymentInfoTranslator.Translate(await response.Content.ReadAsStringAsync()));
        }
예제 #3
0
        public async Task <PaymentInfo> ProcessPaymentAsync(int userId, string reference)
        {
            var response = await _httpInvoker.InvokeAsync(async() =>
            {
                var client  = new RestClient(_paymentServiceBaseUrl);
                var request = new RestRequest(ThirdPartyServices.Payment.PerformPayment(), Method.POST);
                request.AddUrlSegment(nameof(userId), userId);
                request.AddUrlSegment(nameof(reference), reference);

                return(await client.ExecuteTaskAsync(request));
            });

            if (response.StatusCode != HttpStatusCode.OK)
            {
                throw new InvalidOperationException("There was an error trying to perform the payment.", response.ErrorException);
            }

            return(PaymentInfoTranslator.Translate(response.Content));
        }