Files
jobtrackingapp/JobTrackerApi/Services/StripeBillingGateway.cs
T
cesnimda 191de69c48
CI and Deploy / test (pull_request) Successful in 5m27s
CI and Deploy / deploy (pull_request) Has been skipped
test(billing): prove downgrade lifecycle
2026-08-15 20:28:23 +02:00

36 lines
1.8 KiB
C#

using Stripe;
namespace JobTrackerApi.Services;
public interface IStripeBillingGateway
{
Task<Stripe.Checkout.Session> CreateCheckoutAsync(string secretKey, Stripe.Checkout.SessionCreateOptions options, CancellationToken cancellationToken);
Task<Stripe.BillingPortal.Session> CreatePortalAsync(string secretKey, Stripe.BillingPortal.SessionCreateOptions options, CancellationToken cancellationToken);
Event ConstructEvent(string json, string signature, string webhookSecret);
Task<Subscription> GetSubscriptionAsync(string secretKey, string subscriptionId, CancellationToken cancellationToken);
}
public sealed class StripeBillingGateway : IStripeBillingGateway
{
public Task<Stripe.Checkout.Session> CreateCheckoutAsync(
string secretKey,
Stripe.Checkout.SessionCreateOptions options,
CancellationToken cancellationToken)
=> new Stripe.Checkout.SessionService(new StripeClient(secretKey))
.CreateAsync(options, cancellationToken: cancellationToken);
public Task<Stripe.BillingPortal.Session> CreatePortalAsync(
string secretKey,
Stripe.BillingPortal.SessionCreateOptions options,
CancellationToken cancellationToken)
=> new Stripe.BillingPortal.SessionService(new StripeClient(secretKey))
.CreateAsync(options, cancellationToken: cancellationToken);
public Event ConstructEvent(string json, string signature, string webhookSecret)
=> EventUtility.ConstructEvent(json, signature, webhookSecret);
public Task<Subscription> GetSubscriptionAsync(string secretKey, string subscriptionId, CancellationToken cancellationToken)
=> new SubscriptionService(new StripeClient(secretKey))
.GetAsync(subscriptionId, cancellationToken: cancellationToken);
}