public async Task <IActionResult> CustomerPortal([FromBody] CustomerPortalRequest req) { // This ID is typically stored with the authenticated // user in your database. For demonstration purposes, we're // pulling this value from environment variables. var stripeCustomerId = req.CustomerId; // This is the URL to which your customer will return after // they are done managing billing in the Customer Portal. var returnUrl = this.options.Value.Domain; var options = new Stripe.BillingPortal.SessionCreateOptions { Customer = stripeCustomerId, ReturnUrl = returnUrl, }; var service = new Stripe.BillingPortal.SessionService(this.client); var session = await service.CreateAsync(options); return(Ok(session)); }
public async Task <IActionResult> CustomerPortal([FromBody] CustomerPortalRequest req) { // For demonstration purposes, we're using the Checkout session to retrieve the customer ID. // Typically this is stored alongside the authenticated user in your database. var checkoutSessionId = req.SessionId; var checkoutService = new SessionService(this.client); var checkoutSession = await checkoutService.GetAsync(checkoutSessionId); // This is the URL to which your customer will return after // they are done managing billing in the Customer Portal. var returnUrl = this.options.Value.Domain; var options = new Stripe.BillingPortal.SessionCreateOptions { Customer = checkoutSession.CustomerId, ReturnUrl = returnUrl, }; var service = new Stripe.BillingPortal.SessionService(this.client); var session = await service.CreateAsync(options); return(Ok(session)); }
public async Task <IActionResult> CustomerPortal([FromBody] CustomerPortalRequest req) { try { ClaimsPrincipal principal = HttpContext.User as ClaimsPrincipal; var claim = principal.Claims.FirstOrDefault(c => c.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"); var userFromDb = await _userManager.FindByNameAsync(claim.Value); if (userFromDb == null) { return(BadRequest()); } var options = new Stripe.BillingPortal.SessionCreateOptions { Customer = userFromDb.CustomerId, ReturnUrl = req.ReturnUrl, }; var service = new Stripe.BillingPortal.SessionService(); var session = await service.CreateAsync(options); return(Ok(new { url = session.Url })); } catch (StripeException e) { Console.WriteLine(e.StripeError.Message); return(BadRequest(new ErrorResponse { ErrorMessage = new ErrorMessage { Message = e.StripeError.Message, } })); } }