diff --git a/BillingCore/BillingService.cs b/BillingCore/BillingService.cs index 967247a..4b09da2 100644 --- a/BillingCore/BillingService.cs +++ b/BillingCore/BillingService.cs @@ -32,7 +32,7 @@ namespace Teknik.BillingCore public abstract Subscription GetSubscription(string subscriptionId); public abstract Subscription CreateSubscription(string customerId, string priceId); public abstract Subscription EditSubscriptionPrice(string subscriptionId, string priceId); - public abstract bool CancelSubscription(string subscriptionId); + public abstract bool CancelSubscription(string subscriptionId, bool atEndOfPeriod); public abstract CheckoutSession CreateCheckoutSession(string customerId, string priceId, string successUrl, string cancelUrl); public abstract CheckoutSession GetCheckoutSession(string sessionId); diff --git a/BillingCore/StripeService.cs b/BillingCore/StripeService.cs index 41d1977..71428ea 100644 --- a/BillingCore/StripeService.cs +++ b/BillingCore/StripeService.cs @@ -230,17 +230,31 @@ namespace Teknik.BillingCore return null; } - public override bool CancelSubscription(string subscriptionId) + public override bool CancelSubscription(string subscriptionId, bool atEndOfperiod) { if (!string.IsNullOrEmpty(subscriptionId)) { - var cancelOptions = new SubscriptionCancelOptions() + if (atEndOfperiod) { - InvoiceNow = true - }; - var subscriptionService = new SubscriptionService(); - var subscription = subscriptionService.Cancel(subscriptionId, cancelOptions); - return subscription.Status == "canceled"; + var cancelOptions = new SubscriptionUpdateOptions() + { + CancelAtPeriodEnd = true + }; + var subscriptionService = new SubscriptionService(); + var subscription = subscriptionService.Update(subscriptionId, cancelOptions); + return subscription.CancelAtPeriodEnd; + } + else + { + var cancelOptions = new SubscriptionCancelOptions() + { + + InvoiceNow = true + }; + var subscriptionService = new SubscriptionService(); + var subscription = subscriptionService.Cancel(subscriptionId, cancelOptions); + return subscription.Status == "canceled"; + } } return false; } diff --git a/Teknik/Areas/TOS/Views/TOS/Index.cshtml b/Teknik/Areas/TOS/Views/TOS/Index.cshtml index b3eca6e..08ead67 100644 --- a/Teknik/Areas/TOS/Views/TOS/Index.cshtml +++ b/Teknik/Areas/TOS/Views/TOS/Index.cshtml @@ -27,13 +27,13 @@
  • Subscription benifits may change at any time
  • Any benifits applied to an account will stay for the lifetime of the subscription
  • -

    Refund Policy

    +

    Cancellation Policy

    Email