public async Task <IActionResult> Check() { string endpointSecret = _stripeService.GetWebhookSecret(); var json = await new StreamReader(HttpContext.Request.Body).ReadToEndAsync(); try { var stripeEvent = EventUtility.ConstructEvent(json, Request.Headers["Stripe-Signature"], endpointSecret); if (stripeEvent.Type == Events.ChargeSucceeded) { Charge charge = stripeEvent.Data.Object as Charge; DonationTransaction dt = new DonationTransaction() { CashAmount = Convert.ToInt32(charge.Metadata["CashAmount"]), Price = Convert.ToInt32(charge.Metadata["Price"]), PaymentMethod = "Stripe", GatewayTransactionId = charge.Id }; _donationTransactionService.CreateAndDeliver(dt, charge.Metadata["Email"], charge.Metadata["Nickname"]); } else { return(BadRequest()); } return(Ok()); } catch (StripeException e) { Console.WriteLine(e.Message); return(BadRequest()); } }