public IHttpActionResult GetInvoices(string id, string before = null, string after = null, int limit = 12) { var organization = GetModel(id); if (organization == null) { return(NotFound()); } if (String.IsNullOrWhiteSpace(organization.StripeCustomerId)) { return(Ok(new List <InvoiceGridModel>())); } if (!String.IsNullOrEmpty(before) && !before.StartsWith("in_")) { before = "in_" + before; } if (!String.IsNullOrEmpty(after) && !after.StartsWith("in_")) { after = "in_" + after; } var invoiceService = new StripeInvoiceService(); var invoices = invoiceService.List(new StripeInvoiceListOptions { CustomerId = organization.StripeCustomerId, Limit = limit + 1, EndingBefore = before, StartingAfter = after }).Select(Mapper.Map <InvoiceGridModel>).ToList(); return(OkWithResourceLinks(invoices.Take(limit).ToList(), invoices.Count > limit, i => i.Id)); }
public IHttpActionResult GetInvoices(string id, string before = null, string after = null, int limit = 12) { if (String.IsNullOrWhiteSpace(id) || !CanAccessOrganization(id)) { return(NotFound()); } Organization organization = _repository.GetById(id, true); if (organization == null) { return(NotFound()); } if (String.IsNullOrWhiteSpace(organization.StripeCustomerId)) { return(Ok(new List <InvoiceGridModel>())); } var invoiceService = new StripeInvoiceService(); var invoices = invoiceService.List(new StripeInvoiceListOptions { CustomerId = organization.StripeCustomerId, Limit = limit + 1, EndingBefore = before, StartingAfter = after }).Select(Mapper.Map <InvoiceGridModel>).ToList(); return(OkWithResourceLinks(invoices.Take(limit).ToList(), invoices.Count > limit, i => i.Id)); }
public IEnumerable <StripeInvoice> ListInvoices(int companyId) { var subscription = GetSubscription(companyId); if (subscription.StripeCustomerId != null) { var invoiceService = new StripeInvoiceService(); var stripeInvoiceListOptions = new StripeInvoiceListOptions { CustomerId = subscription.StripeCustomerId }; return(invoiceService.List(stripeInvoiceListOptions)); } return(new List <StripeInvoice>()); }
public static List <StripeInvoice> GetInvoices(string custId) { var invoiceSevice = new StripeInvoiceService(); try { StripeList <StripeInvoice> invoiceItems = invoiceSevice.List(new StripeInvoiceListOptions() { CustomerId = custId, Limit = 50 }); return(invoiceItems.ToList()); } catch (Exception ex) { return(null); } }
static void Main(string[] args) { // Set Stripe Api Key StripeConfiguration.SetApiKey(AppConfiguration.StripeApiKey); using (var subscriptionBookingRepository = new SubscriptionBookingRepository()) { var subscriptionBookingList = subscriptionBookingRepository.SubscriptionBookingsList.ToList(); var invoiceService = new StripeInvoiceService(); var invoiceItems = invoiceService.List( new StripeInvoiceListOptions { Limit = Int32.MaxValue } ).ToList(); invoiceItems.ForEach(invoice => { var subscription = subscriptionBookingList .FirstOrDefault(sb => sb.StripeSubscriptionId.Equals(invoice.SubscriptionId, StringComparison.OrdinalIgnoreCase)); if (subscription == null) { try { var subscriptionService = new StripeSubscriptionService(); var stripeSubscription = subscriptionService.Cancel(invoice.SubscriptionId); Console.WriteLine("Cancel - " + invoice.SubscriptionId); } catch (Exception ex) { Console.WriteLine("Error - " + ex.Message); } } }); Console.WriteLine("Done!!!"); Console.ReadLine(); } }
public async Task <IHttpActionResult> GetInvoicesAsync(string id, string before = null, string after = null, int limit = 12) { if (!Settings.Current.EnableBilling) { return(NotFound()); } var organization = await GetModelAsync(id); if (organization == null) { return(NotFound()); } if (String.IsNullOrWhiteSpace(organization.StripeCustomerId)) { return(Ok(new List <InvoiceGridModel>())); } if (!String.IsNullOrEmpty(before) && !before.StartsWith("in_")) { before = "in_" + before; } if (!String.IsNullOrEmpty(after) && !after.StartsWith("in_")) { after = "in_" + after; } var invoiceService = new StripeInvoiceService(Settings.Current.StripeApiKey); var invoiceOptions = new StripeInvoiceListOptions { CustomerId = organization.StripeCustomerId, Limit = limit + 1, EndingBefore = before, StartingAfter = after }; var invoices = (await MapCollectionAsync <InvoiceGridModel>(invoiceService.List(invoiceOptions), true)).ToList(); return(OkWithResourceLinks(invoices.Take(limit).ToList(), invoices.Count > limit, i => i.Id)); }
public PagedResult <InvoiceGridModel> Payments(string id, int page = 1, int pageSize = 12) { if (String.IsNullOrWhiteSpace(id) || !User.CanAccessOrganization(id)) { throw new HttpResponseException(BadRequestErrorResponseMessage()); } int skip = (page - 1) * pageSize; if (skip < 0) { skip = 0; } if (pageSize < 1) { pageSize = 10; } Organization organization = _repository.GetByIdCached(id); if (organization == null || String.IsNullOrWhiteSpace(organization.StripeCustomerId)) { return(new PagedResult <InvoiceGridModel>()); } var invoiceService = new StripeInvoiceService(); List <InvoiceGridModel> invoices = invoiceService.List(pageSize, skip, organization.StripeCustomerId).Select(Mapper.Map <InvoiceGridModel>).ToList(); return(new PagedResult <InvoiceGridModel>(invoices) { Page = page, PageSize = pageSize, TotalCount = invoices.Count // TODO: Return the total count. }); }
static void Main(string[] args) { // Set Stripe Api Key StripeConfiguration.SetApiKey(AppConfiguration.StripeApiKey); using (var subscriptionBookingRepository = new SubscriptionBookingRepository()) { var subscriptionBookingList = subscriptionBookingRepository.SubscriptionBookingsList.ToList(); // Each Subscription Bookings subscriptionBookingList.ForEach(subscriptionBookings => { var customerInfos = subscriptionBookingRepository.CustomerInfoList .FirstOrDefault(ci => ci.CustomerId == subscriptionBookings.CustomerId); // Customer Infos if (customerInfos != null) { var subscriptionService = new StripeSubscriptionService(); StripeSubscription subscription = subscriptionService.Get(subscriptionBookings.StripeSubscriptionId); DateTime?canceledDate = subscription.CanceledAt; var invoiceService = new StripeInvoiceService(); // All Invoices of Customer var invoiceItems = invoiceService.List(new StripeInvoiceListOptions { CustomerId = customerInfos.StripeCustomerId } ).OrderBy(ic => ic.Date).ToList(); short cycleNumber = 0; invoiceItems.ForEach(invoice => { if (invoice.SubscriptionId.Equals(subscriptionBookings.StripeSubscriptionId, StringComparison.InvariantCulture)) { cycleNumber++; double totalCharge = (double)invoice.Total / 100; if (!totalCharge.Equals(subscriptionBookings.TotalPrice)) { subscriptionBookings.Price = totalCharge; } DateTime?periodStart = invoice.PeriodStart; DateTime?periodEnd = invoice.PeriodEnd; try { if (periodStart.Value.Date == periodEnd.Value.Date) { periodEnd = periodEnd.Value.AddDays(30); } periodStart = invoice.StripeInvoiceLineItems.Data[0].StripePeriod.Start; periodEnd = invoice.StripeInvoiceLineItems.Data[0].StripePeriod.End; } catch (Exception) { } var subscriptionCycle = new SubscriptionCycles { SubscriptionBookingId = subscriptionBookings.Id, StartDate = periodStart, EndDate = periodEnd, CancelDate = subscriptionBookings.CancelDate, Status = subscriptionBookings.Status, LastUpdatedDate = subscriptionBookings.LastUpdatedDate, LastUpdatedBy = subscriptionBookings.LastUpdatedBy, Price = totalCharge.Equals(0) && subscriptionBookings.PayByCredit > 0 ? subscriptionBookings.PayByCredit : totalCharge, MerchantPrice = subscriptionBookings.MerchantPrice, PayByCredit = subscriptionBookings.PayByCredit, TotalPrice = totalCharge, Quantity = subscriptionBookings.Quantity, StripeInvoiceId = invoice.Id, StripeChargeId = invoice.ChargeId, StripeCouponId = subscriptionBookings.StripeCouponId, CycleNumber = cycleNumber }; var param = new AddSubscriptionCycleParams { CanceledDate = canceledDate, SubscriptionCyclesObject = subscriptionCycle, SubscriptionInvoices = new List <SubscriptionInvoices>() }; SubscriptionInvoices subscriptionInvoice; // Paid Charge if (invoice.Paid) { if (!string.IsNullOrEmpty(invoice.ChargeId)) { var chargeService = new StripeChargeService(); StripeCharge charge = chargeService.Get(invoice.ChargeId); subscriptionInvoice = new SubscriptionInvoices { SubscriptionCyclesId = subscriptionCycle.Id, BookingStatus = subscriptionCycle.Status, Quantity = subscriptionBookings.Quantity, Price = (double)charge.Amount / 100, MerchantPrice = subscriptionBookings.MerchantPrice, PayByCredit = subscriptionBookings.PayByCredit, TotalPrice = (double)charge.Amount / 100, InvoiceStatus = (int)Enums.InvoiceStatus.Charge, StripeChargeId = charge.Id, ChargeAmount = (double)charge.Amount / 100, StripeRefundId = string.Empty, RefundAmount = 0, RefundCreditAmount = 0, StripeCouponId = subscriptionBookings.StripeCouponId, CreatedDate = DateTime.UtcNow, CreatedBy = 1 }; param.SubscriptionInvoices.Add(subscriptionInvoice); // Charge with Refunded if (charge.Refunded || charge.AmountRefunded > 0) { var refundList = charge.Refunds; for (int i = 0; i < refundList.Data.Count; i++) { var refundItem = charge.Refunds.Data[i]; var subscriptionInvoiceRefunded = new SubscriptionInvoices { SubscriptionCyclesId = subscriptionCycle.Id, BookingStatus = subscriptionCycle.Status, Quantity = subscriptionBookings.Quantity, Price = (double)charge.Amount / 100 - (double)refundItem.Amount / 100, MerchantPrice = subscriptionBookings.MerchantPrice, PayByCredit = subscriptionBookings.PayByCredit, TotalPrice = subscriptionBookings.MerchantPrice - (double)refundItem.Amount / 100 - subscriptionBookings.PayByCredit, InvoiceStatus = refundItem.Amount < charge.Amount ? (int)Enums.InvoiceStatus.PartialRefund : (int)Enums.InvoiceStatus.FullRefund, StripeChargeId = charge.Id, ChargeAmount = (double)charge.Amount / 100, StripeRefundId = refundItem.Id, RefundAmount = (double)refundItem.Amount / 100, RefundCreditAmount = 0, StripeCouponId = subscriptionBookings.StripeCouponId, CreatedDate = DateTime.UtcNow, CreatedBy = 1 }; param.SubscriptionInvoices.Add(subscriptionInvoiceRefunded); param.SubscriptionCyclesObject.Price = subscriptionInvoiceRefunded.Price; param.SubscriptionCyclesObject.TotalPrice = subscriptionInvoiceRefunded.TotalPrice; } } } else { // Charge but have Coupon and use DayAxe Credit so Amount = 0 subscriptionInvoice = new SubscriptionInvoices { SubscriptionCyclesId = subscriptionCycle.Id, BookingStatus = subscriptionCycle.Status, Quantity = subscriptionBookings.Quantity, Price = 0, MerchantPrice = subscriptionBookings.MerchantPrice, PayByCredit = subscriptionBookings.PayByCredit, TotalPrice = 0, InvoiceStatus = (int)Enums.InvoiceStatus.Charge, StripeChargeId = string.Empty, ChargeAmount = 0, StripeRefundId = string.Empty, RefundAmount = 0, RefundCreditAmount = 0, StripeCouponId = subscriptionBookings.StripeCouponId, CreatedDate = DateTime.UtcNow, CreatedBy = 1 }; param.SubscriptionInvoices.Add(subscriptionInvoice); } } else { // Closed Charge subscriptionInvoice = new SubscriptionInvoices { SubscriptionCyclesId = subscriptionCycle.Id, BookingStatus = subscriptionCycle.Status, Quantity = subscriptionBookings.Quantity, Price = totalCharge, MerchantPrice = subscriptionBookings.MerchantPrice, PayByCredit = subscriptionBookings.PayByCredit, TotalPrice = totalCharge, InvoiceStatus = (int)Enums.InvoiceStatus.Charge, StripeChargeId = invoice.ChargeId, ChargeAmount = totalCharge, StripeRefundId = string.Empty, RefundAmount = 0, RefundCreditAmount = 0, StripeCouponId = subscriptionBookings.StripeCouponId, CreatedDate = DateTime.UtcNow, CreatedBy = 1 }; param.SubscriptionInvoices.Add(subscriptionInvoice); } subscriptionBookingRepository.AddSubscriptionCycle(param); Console.WriteLine("Update - " + invoice.SubscriptionId); } }); } }); Console.WriteLine("Done!!!"); Console.ReadLine(); } }
public List <StripeInvoice> List(string customerId) { return(_stripeInvoiceService.List(new StripeInvoiceListOptions { CustomerId = customerId }).ToList()); }