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