Exemplo n.º 1
0
 // GET api/invoice/5
 public HttpResponseMessage GetUpcoming(string id, bool upcoming, int organizationId)
 {
     this.OrganizationId = organizationId;
     try
     {
         if (this.UserIsAdminOfOrganization)
         {
             var           invoiceService = new StripeInvoiceService();
             StripeInvoice response;
             if (upcoming)
             {
                 var invoice = subscriptionService.GetUpcomingInvoice(id);
                 return(Request.CreateResponse(HttpStatusCode.OK, invoice));
             }
             else
             {
                 response = invoiceService.Get(id);
             }
             return(Request.CreateResponse(HttpStatusCode.OK, response));
         }
     }
     catch (StripeException ex)
     {
         emailHelper.SendStripeError(ex);
     }
     catch (Exception e)
     {
         emailHelper.SendErrorEmail(e);
     }
     return(Request.CreateResponse(HttpStatusCode.BadRequest));
 }
Exemplo n.º 2
0
        public static StripeInvoice GetInvoice(string Id)
        {
            var invoiceSevice = new StripeInvoiceService();

            try
            {
                return(invoiceSevice.Get(Id));
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
Exemplo n.º 3
0
        public ActionResult Payment(string id)
        {
            if (String.IsNullOrEmpty(id))
            {
                return(HttpNotFound());
            }

            if (!id.StartsWith("in_"))
            {
                id = "in_" + id;
            }

            var           invoiceService = new StripeInvoiceService();
            StripeInvoice invoice        = invoiceService.Get(id);

            if (invoice == null)
            {
                return(HttpNotFound());
            }

            Organization org = _repository.GetByStripeCustomerId(invoice.CustomerId);

            if (org == null)
            {
                return(HttpNotFound());
            }

            if (!CanAccessOrganization(org.Id))
            {
                return(HttpNotFound());
            }

            return(View(new InvoiceModel {
                Invoice = invoice, Organization = org
            }));
        }
        public IHttpActionResult GetInvoice(string id)
        {
            if (!id.StartsWith("in_"))
            {
                id = "in_" + id;
            }

            var invoiceService = new StripeInvoiceService();
            var stripeInvoice  = invoiceService.Get(id);

            if (stripeInvoice == null || String.IsNullOrEmpty(stripeInvoice.CustomerId))
            {
                return(NotFound());
            }

            var organization = _repository.GetByStripeCustomerId(stripeInvoice.CustomerId);

            if (organization == null || !IsInOrganization(organization.Id))
            {
                return(NotFound());
            }

            var invoice = new Invoice {
                Id               = stripeInvoice.Id.Substring(4),
                OrganizationId   = organization.Id,
                OrganizationName = organization.Name,
                Date             = stripeInvoice.Date.GetValueOrDefault(),
                Paid             = stripeInvoice.Paid.GetValueOrDefault(),
                Total            = stripeInvoice.Total.GetValueOrDefault() / 100.0
            };

            foreach (var line in stripeInvoice.StripeInvoiceLines.StripeInvoiceItems)
            {
                var item = new InvoiceLineItem {
                    Amount = line.Amount.GetValueOrDefault() / 100.0
                };

                if (line.Plan != null)
                {
                    item.Description = String.Format("Exceptionless - {0} Plan ({1}/{2})", line.Plan.Name, (line.Plan.Amount / 100.0).ToString("c"), line.Plan.Interval);
                }
                else
                {
                    item.Description = line.Description;
                }

                if (line.Period.Start.GetValueOrDefault() == line.Period.End.GetValueOrDefault())
                {
                    item.Date = line.Period.Start.GetValueOrDefault().ToShortDateString();
                }
                else
                {
                    item.Date = String.Format("{0} - {1}", line.Period.Start.GetValueOrDefault().ToShortDateString(), line.Period.End.GetValueOrDefault().ToShortDateString());
                }

                invoice.Items.Add(item);
            }

            var coupon = stripeInvoice.StripeDiscount != null ? stripeInvoice.StripeDiscount.StripeCoupon : null;

            if (coupon != null)
            {
                double discountAmount = coupon.AmountOff ?? stripeInvoice.Subtotal.GetValueOrDefault() * (coupon.PercentOff.GetValueOrDefault() / 100.0);
                string description    = String.Format("{0} {1}", coupon.Id, coupon.PercentOff.HasValue ? String.Format("({0}% off)", coupon.PercentOff.Value) : String.Format("({0} off)", (coupon.AmountOff.GetValueOrDefault() / 100.0).ToString("C")));

                invoice.Items.Add(new InvoiceLineItem {
                    Description = description, Amount = discountAmount
                });
            }

            return(Ok(invoice));
        }
Exemplo n.º 5
0
        public async Task <IHttpActionResult> GetInvoiceAsync(string id)
        {
            if (!Settings.Current.EnableBilling)
            {
                return(NotFound());
            }

            if (!id.StartsWith("in_"))
            {
                id = "in_" + id;
            }

            StripeInvoice stripeInvoice = null;

            try {
                var invoiceService = new StripeInvoiceService(Settings.Current.StripeApiKey);
                stripeInvoice = invoiceService.Get(id);
            } catch (Exception ex) {
                _logger.Error().Exception(ex).Message("An error occurred while getting the invoice: " + id).Identity(ExceptionlessUser.EmailAddress).Property("User", ExceptionlessUser).SetActionContext(ActionContext).Write();
            }

            if (String.IsNullOrEmpty(stripeInvoice?.CustomerId))
            {
                return(NotFound());
            }

            var organization = await _repository.GetByStripeCustomerIdAsync(stripeInvoice.CustomerId);

            if (organization == null || !CanAccessOrganization(organization.Id))
            {
                return(NotFound());
            }

            var invoice = new Invoice {
                Id               = stripeInvoice.Id.Substring(3),
                OrganizationId   = organization.Id,
                OrganizationName = organization.Name,
                Date             = stripeInvoice.Date.GetValueOrDefault(),
                Paid             = stripeInvoice.Paid,
                Total            = stripeInvoice.Total / 100.0
            };

            foreach (var line in stripeInvoice.StripeInvoiceLineItems.Data)
            {
                var item = new InvoiceLineItem {
                    Amount = line.Amount / 100.0
                };

                if (line.Plan != null)
                {
                    item.Description = $"Exceptionless - {line.Plan.Name} Plan ({(line.Plan.Amount / 100.0).ToString("c")}/{line.Plan.Interval})";
                }
                else
                {
                    item.Description = line.Description;
                }

                if (stripeInvoice.PeriodStart == stripeInvoice.PeriodEnd)
                {
                    item.Date = stripeInvoice.PeriodStart.ToShortDateString();
                }
                else
                {
                    item.Date = $"{stripeInvoice.PeriodStart.ToShortDateString()} - {stripeInvoice.PeriodEnd.ToShortDateString()}";
                }

                invoice.Items.Add(item);
            }

            var coupon = stripeInvoice.StripeDiscount?.StripeCoupon;

            if (coupon != null)
            {
                if (coupon.AmountOff.HasValue)
                {
                    double discountAmount = coupon.AmountOff.GetValueOrDefault() / 100.0;
                    string description    = $"{coupon.Id} ({discountAmount.ToString("C")} off)";
                    invoice.Items.Add(new InvoiceLineItem {
                        Description = description, Amount = discountAmount
                    });
                }
                else
                {
                    double discountAmount = (stripeInvoice.Subtotal / 100.0) * (coupon.PercentOff.GetValueOrDefault() / 100.0);
                    string description    = $"{coupon.Id} ({coupon.PercentOff.GetValueOrDefault()}% off)";
                    invoice.Items.Add(new InvoiceLineItem {
                        Description = description, Amount = discountAmount
                    });
                }
            }

            return(Ok(invoice));
        }
        public IHttpActionResult GetInvoice(string id)
        {
            if (!Settings.Current.EnableBilling)
            {
                return(NotFound());
            }

            if (!id.StartsWith("in_"))
            {
                id = "in_" + id;
            }

            StripeInvoice stripeInvoice = null;

            try {
                var invoiceService = new StripeInvoiceService();
                stripeInvoice = invoiceService.Get(id);
            } catch (Exception ex) {
                Log.Error().Exception(ex).Message("An error occurred while getting the invoice: " + id).Write();
            }

            if (stripeInvoice == null || String.IsNullOrEmpty(stripeInvoice.CustomerId))
            {
                return(NotFound());
            }

            var organization = _repository.GetByStripeCustomerId(stripeInvoice.CustomerId);

            if (organization == null || !IsInOrganization(organization.Id))
            {
                return(NotFound());
            }

            var invoice = new Invoice {
                Id               = stripeInvoice.Id.Substring(3),
                OrganizationId   = organization.Id,
                OrganizationName = organization.Name,
                Date             = stripeInvoice.Date.GetValueOrDefault(),
                Paid             = stripeInvoice.Paid,
                Total            = stripeInvoice.Total / 100.0
            };

            foreach (var line in stripeInvoice.StripeInvoiceLineItems.Data)
            {
                var item = new InvoiceLineItem {
                    Amount = line.Amount / 100.0
                };

                if (line.Plan != null)
                {
                    item.Description = String.Format("Exceptionless - {0} Plan ({1}/{2})", line.Plan.Name, (line.Plan.Amount / 100.0).ToString("c"), line.Plan.Interval);
                }
                else
                {
                    item.Description = line.Description;
                }

                if (stripeInvoice.PeriodStart == stripeInvoice.PeriodEnd)
                {
                    item.Date = stripeInvoice.PeriodStart.ToShortDateString();
                }
                else
                {
                    item.Date = String.Format("{0} - {1}", stripeInvoice.PeriodStart.ToShortDateString(), stripeInvoice.PeriodEnd.ToShortDateString());
                }

                invoice.Items.Add(item);
            }

            var coupon = stripeInvoice.StripeDiscount != null ? stripeInvoice.StripeDiscount.StripeCoupon : null;

            if (coupon != null)
            {
                double discountAmount = coupon.AmountOff ?? stripeInvoice.Subtotal * (coupon.PercentOff.GetValueOrDefault() / 100.0);
                string description    = String.Format("{0} {1}", coupon.Id, coupon.PercentOff.HasValue ? String.Format("({0}% off)", coupon.PercentOff.Value) : String.Format("({0} off)", (coupon.AmountOff.GetValueOrDefault() / 100.0).ToString("C")));

                invoice.Items.Add(new InvoiceLineItem {
                    Description = description, Amount = discountAmount
                });
            }

            return(Ok(invoice));
        }
Exemplo n.º 7
0
 public StripeInvoice Get(string invoiceId)
 {
     return(_stripeInvoiceService.Get(invoiceId));
 }
Exemplo n.º 8
0
        public StripeInvoice GetInvoice(string invoiceId)
        {
            var invoiceService = new StripeInvoiceService();

            return(invoiceService.Get(invoiceId));
        }