29 lines
928 B
C#
29 lines
928 B
C#
using Hutopy.Modules.Memberships.Contracts;
|
|
using Stripe;
|
|
|
|
namespace Hutopy.Infrastructure.Payments.Stripe.Services;
|
|
|
|
public sealed class MembershipCancellationProcessor
|
|
: IMembershipCancellationProcessor
|
|
{
|
|
public async Task<DateTimeOffset?> 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;
|
|
}
|
|
}
|