public SubscriptionItemServiceTest() { this.service = new SubscriptionItemService(); this.createOptions = new SubscriptionItemCreateOptions { PlanId = "plan_123", Quantity = 1, SubscriptionId = "sub_123", }; this.updateOptions = new SubscriptionItemUpdateOptions { Metadata = new Dictionary <string, string> { { "key", "value" }, }, }; this.listOptions = new SubscriptionItemListOptions { Limit = 1, SubscriptionId = "sub_123", }; }
public SubscriptionItemServiceTest( StripeMockFixture stripeMockFixture, MockHttpClientFixture mockHttpClientFixture) : base(stripeMockFixture, mockHttpClientFixture) { this.service = new SubscriptionItemService(this.StripeClient); this.createOptions = new SubscriptionItemCreateOptions { Plan = "plan_123", Quantity = 1, Subscription = "sub_123", }; this.deleteOptions = new SubscriptionItemDeleteOptions { ClearUsage = true, }; this.updateOptions = new SubscriptionItemUpdateOptions { Metadata = new Dictionary <string, string> { { "key", "value" }, }, }; this.listOptions = new SubscriptionItemListOptions { Limit = 1, Subscription = "sub_123", }; }
public async Task <SubscriptionItem> UpdateSubscriptionItemMetaData(string subscriptionItemId, Dictionary <string, string> metadata) { var service = new SubscriptionItemService(); var response = await service.UpdateAsync(subscriptionItemId, new SubscriptionItemUpdateOptions { Metadata = metadata }); return(response); }
public StripePaymentProcessor(StripeSettings settings, Plans plans, ILogger <StripePaymentProcessor> logger) { RequestOptions = new RequestOptions() { ApiKey = settings.SecretKey }; Customers = new CustomerService(); Subscriptions = new SubscriptionService(); SubscriptionItems = new SubscriptionItemService(); Sources = new SourceService(); this.plans = plans; this.logger = logger; }
public SubscriptionService( StripeSubscriptionItemService stripeSubscriptionItemService, StripeSubscriptionService subscriptionService, IStripeService stripeService, IServiceProvider serviceProvider, ILogger <SubscriptionService> logger) : base(serviceProvider) { _stripeSubscriptionItemService = stripeSubscriptionItemService; _subscriptionService = subscriptionService; _stripeService = stripeService; _logger = logger; _organizationRepository = UnitOfWork.RepositoryAsync <Organization>(); _plans = UnitOfWork.RepositoryAsync <StripePlan>(); _itemRepository = UnitOfWork.RepositoryAsync <StripeSubscriptionItem>(); }
public SubscriptionItemServiceTest( StripeMockFixture stripeMockFixture, MockHttpClientFixture mockHttpClientFixture) : base(stripeMockFixture, mockHttpClientFixture) { this.service = new SubscriptionItemService(this.StripeClient); this.createOptions = new SubscriptionItemCreateOptions { PriceData = new SubscriptionItemPriceDataOptions { Currency = "usd", Product = "prod_123", Recurring = new SubscriptionItemPriceDataRecurringOptions { Interval = "day", IntervalCount = 15, }, UnitAmountDecimal = 0.01234567890m, // Ensure decimals work }, Quantity = 1, Subscription = "sub_123", }; this.deleteOptions = new SubscriptionItemDeleteOptions { ClearUsage = true, }; this.updateOptions = new SubscriptionItemUpdateOptions { Metadata = new Dictionary <string, string> { { "key", "value" }, }, }; this.listOptions = new SubscriptionItemListOptions { Limit = 1, Subscription = "sub_123", }; }
public async Task AdjustStorageAsync(IStorableSubscriber storableSubscriber, int additionalStorage, string storagePlanId) { var subscriptionItemService = new SubscriptionItemService(); var subscriptionService = new SubscriptionService(); var sub = await subscriptionService.GetAsync(storableSubscriber.GatewaySubscriptionId); if (sub == null) { throw new GatewayException("Subscription not found."); } Func <bool, Task <SubscriptionItem> > subUpdateAction = null; var storageItem = sub.Items?.FirstOrDefault(i => i.Plan.Id == storagePlanId); var subItemOptions = sub.Items.Where(i => i.Plan.Id != storagePlanId) .Select(i => new InvoiceSubscriptionItemOptions { Id = i.Id, PlanId = i.Plan.Id, Quantity = i.Quantity, }).ToList(); if (additionalStorage > 0 && storageItem == null) { subItemOptions.Add(new InvoiceSubscriptionItemOptions { PlanId = storagePlanId, Quantity = additionalStorage, }); subUpdateAction = (prorate) => subscriptionItemService.CreateAsync( new SubscriptionItemCreateOptions { PlanId = storagePlanId, Quantity = additionalStorage, SubscriptionId = sub.Id, Prorate = prorate }); } else if (additionalStorage > 0 && storageItem != null) { subItemOptions.Add(new InvoiceSubscriptionItemOptions { Id = storageItem.Id, PlanId = storagePlanId, Quantity = additionalStorage, }); subUpdateAction = (prorate) => subscriptionItemService.UpdateAsync(storageItem.Id, new SubscriptionItemUpdateOptions { PlanId = storagePlanId, Quantity = additionalStorage, Prorate = prorate }); } else if (additionalStorage == 0 && storageItem != null) { subItemOptions.Add(new InvoiceSubscriptionItemOptions { Id = storageItem.Id, Deleted = true }); subUpdateAction = (prorate) => subscriptionItemService.DeleteAsync(storageItem.Id); } var invoicedNow = false; if (additionalStorage > 0) { invoicedNow = await PreviewUpcomingInvoiceAndPayAsync( storableSubscriber, storagePlanId, subItemOptions, 400); } await subUpdateAction(!invoicedNow); }