public async Task <ActionResult> ProductAsync(string product, string user) { var prod = await _stripeService.GetProductAsync(product); var price = await _stripeService.GetPriceAsync(product); var sessionparameter = "?session={CHECKOUT_SESSION_ID}"; var successPage = prod.Metadata.Keys.Contains("Success") ? prod.Metadata["Success"] : "Success"; var successUrl = $"{Url.Action(successPage, "Pay", new { }, Request.Scheme)}{sessionparameter}"; var cancelUrl = Url.Action("Cancel", "Pay", new { }, Request.Scheme); var stripeSessionId = _stripeService.StartPayment( prod, price, user, successUrl, cancelUrl ); var result = new JsonResult(new { id = stripeSessionId }); return(result); }