public async Task <IActionResult> Index() { var json = await new StreamReader(HttpContext.Request.Body).ReadToEndAsync(); try { // var stripeEvent = EventUtility.ConstructEvent(json, // Request.Headers["Stripe-Signature"], _endpointSecret); var stripeEvent = EventUtility.ParseEvent(json, false); // Handle the event var paymentIntent = stripeEvent.Data.Object as PaymentIntent; // Always log all! _paymentService.UpdatePayment(new PaymentStatusResponse { PaymentId = paymentIntent.Id, Amount = paymentIntent.Amount.Value, Created = paymentIntent.Created, PaymentStatus = paymentIntent.Status, ErrorMessage = paymentIntent.LastPaymentError?.ToString() }); // Only fullfilment when succes if (stripeEvent.Type == Events.PaymentIntentSucceeded) { await _voucherService.HandleFulfillment(paymentIntent.Id); } return(Ok()); } catch (Exception e) { Log.Error($"{e}"); return(BadRequest()); } }