using Hutopy.Modules.Memberships.Contracts; using Stripe; namespace Hutopy.Infrastructure.Payments.Stripe.Services; public sealed class MembershipCancellationProcessor : IMembershipCancellationProcessor { public async Task CancelAsync( string subscriptionId, CancellationToken ct = default) { SubscriptionService subscriptionService = new(); // Stripe - Cancel Subscription immediately // var subscription = await subscriptionService.CancelAsync( // subscriptionId, // cancellationToken: ct); // Stripe - Cancel Subscription AtPeriodEnd Subscription? subscription = await subscriptionService.UpdateAsync( subscriptionId, new SubscriptionUpdateOptions { CancelAtPeriodEnd = true }, cancellationToken: ct); return subscription.CancelAt ?? subscription.CanceledAt; } }