Esempio n. 1
0
        public async Task <IActionResult> ConfirmPayment([FromQuery] string payerId, [FromQuery] string paymentId)
        {
            var execute = new PayPalExecutePayment {
                PayerId = payerId, PaymentId = paymentId
            };
            await _payPalService.ExecutePaymentAsync(execute);

            var payment = await _paymentsUnitOfWork.PaymentRepository.GetPayments()
                          .Where(x => x.ExternalId == paymentId)
                          .SingleOrDefaultAsync();

            payment.PaymentStatus = PaymentStatus.Executed;
            _paymentsUnitOfWork.PaymentRepository.Update(payment);
            await _paymentsUnitOfWork.SaveAsync();

            //todo show success page
            return(Ok());
        }
Esempio n. 2
0
        public async Task ExecutePaymentAsync(PayPalExecutePayment payment)
        {
            var url            = ExecutePaymentUrl(payment.PaymentId);
            var request        = new HttpRequestMessage(HttpMethod.Post, url);
            var executeRequest = new PayPalPaymentExecuteRequest
            {
                PayerId = payment.PayerId
            };

            request.Content = new StringContent(JsonConvert.SerializeObject(executeRequest), Encoding.UTF8,
                                                "application/json");

            var response = await _http.SendAsync(request);

            var content = await response.Content.ReadAsStringAsync();

            PayPalPaymentExecutedResponse executedPayment =
                JsonConvert.DeserializeObject <PayPalPaymentExecutedResponse>(content);

            if (!String.IsNullOrWhiteSpace(executedPayment.ErrorName))
            {
                throw new PaypalException(executedPayment.ErrorMessage, null, executedPayment.InformationLink);
            }
        }