コード例 #1
0
        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());
            }
        }