public async Task <ActionResult> Purchase(long paymentId, bool isUpgrade = false) { var payment = await _paymentAppService.GetPaymentAsync(paymentId); if (payment.Status != SubscriptionPaymentStatus.NotPaid) { throw new ApplicationException("This payment is processed before"); } var model = new StripePurchaseViewModel { PaymentId = payment.Id, Amount = payment.Amount, Description = payment.Description, IsRecurring = payment.IsRecurring, Configuration = _stripeConfiguration, UpdateSubscription = isUpgrade }; if (payment.IsRecurring) { if (isUpgrade) { return(View("UpdateSubscription", model)); } return(View("Subscribe", model)); } return(View(model)); }
public async Task <ActionResult> Purchase(long paymentId) { var payment = await _paymentAppService.GetPaymentAsync(paymentId); if (payment.Status != SubscriptionPaymentStatus.NotPaid) { throw new ApplicationException("This payment is processed before"); } var model = new StripePurchaseViewModel { PaymentId = payment.Id, Amount = payment.Amount, Description = payment.Description, IsRecurring = payment.IsRecurring, Configuration = _stripeConfiguration, UpdateSubscription = payment.EditionPaymentType == EditionPaymentType.Upgrade }; var sessionId = await StripePaymentAppService.CreatePaymentSession(new StripeCreatePaymentSessionInput() { PaymentId = paymentId, SuccessUrl = _webUrlService.GetSiteRootAddress().EnsureEndsWith('/') + "Stripe/GetPaymentResult", CancelUrl = _webUrlService.GetSiteRootAddress().EnsureEndsWith('/') + "Stripe/PaymentCancel", }); if (payment.IsRecurring && payment.EditionPaymentType == EditionPaymentType.Upgrade) { model.IsRecurring = false; } model.SessionId = sessionId; return(View(model)); }