コード例 #1
0
        // GET: Admin/Dashboard
        public ActionResult Index()
        {
            var customerService = new StripeCustomerService();
            var customers       = customerService.List();

            var balanceService = new StripeBalanceService();
            var balance        = balanceService.Get();

            var chargeService = new StripeChargeService();
            var charges       = chargeService.List().Where(c => c.Dispute != null);

            var sc    = customers as StripeCustomer[] ?? customers.ToArray();
            var model = new DashboardViewModel
            {
                CustomerCount           = sc.Count(),
                AccountAvailableBalance = balance.Available.Sum(b => b.Amount),
                AccountPendingBalance   = balance.Pending.Sum(b => b.Amount),
                MonthlyCustomerValue    = sc.Sum(c => c.StripeSubscriptionList.Data.Sum(s => s.StripePlan.Amount)),
                DisputedChargeCount     = charges.Sum(c => c.Dispute.Amount.GetValueOrDefault()),
                TrialCustomerCount      = sc.Count(c => c.StripeSubscriptionList.Data.Any(s => s.Status.Equals("trialing"))),
                ActiveCustomerCount     = sc.Count(c => c.StripeSubscriptionList.Data.Any(s => s.Status.Equals("active"))),
                PastDueCustomerCount    = sc.Count(c => c.StripeSubscriptionList.Data.Any(s => s.Status.Equals("past_due"))),
                CanceledCustomerCount   = sc.Count(c => c.StripeSubscriptionList.Data.Any(s => s.Status.Equals("canceled"))),
                UnpaidCustomerCount     = sc.Count(c => c.StripeSubscriptionList.Data.Any(s => s.Status.Equals("unpaid"))),
            };

            return(View(model));
        }
コード例 #2
0
        public void it_should_have_the_total_count()
        {
            var result = new StripeBalanceService(Cache.ApiKey).List(new StripeBalanceTransactionListOptions {
                IncludeTotalCount = true
            });

            result.TotalCount.Should().BeGreaterOrEqualTo(4);
            result.Data.Count.Should().BeGreaterOrEqualTo(4);
        }
コード例 #3
0
        public StripeBalanceServiceTest()
        {
            this.service = new StripeBalanceService();

            this.listOptions = new StripeBalanceTransactionListOptions()
            {
                Limit = 1,
            };
        }
コード例 #4
0
ファイル: StripeWorker.cs プロジェクト: michellelkuehn/opa
        public static List <Transaction> GetDonorBoxTransactions(string apiKey, DateTime startDate, DateTime endDate)
        {
            StripeConfiguration.SetApiKey(apiKey);
            var transactions = new List <Transaction>();

            var balanceClient = new StripeBalanceService();
            var parameters    = new StripeBalanceTransactionListOptions();

            var chargeClient = new StripeChargeService();
            var refundClient = new StripeRefundService();

            parameters.Created = new StripeDateFilter
            {
                GreaterThanOrEqual = startDate,
                LessThanOrEqual    = endDate
            };

            parameters.Limit = 100;

            foreach (var balanceTransaction in balanceClient.List(parameters).Where(t => t.Type != "payout"))
            {
                StripeCharge charge = null;

                if (balanceTransaction.Type == "charge" || balanceTransaction.Type == "payment")
                {
                    charge = chargeClient.Get(balanceTransaction.SourceId);
                }
                else if (balanceTransaction.Type == "refund")
                {
                    var chargeId = refundClient.Get(balanceTransaction.SourceId).ChargeId;
                    charge = chargeClient.Get(chargeId);
                }

                if (charge?.Status == "succeeded")
                {
                    transactions.Add(StripeMapping.MapToTransaction(balanceTransaction, charge));
                }
            }

            return(transactions);
        }
コード例 #5
0
        public void Balance(string Api_Key, ref string Response, ref string Errors, ref int ErrorCode)
        {
            try
            {
                StripeConfiguration.SetApiKey(Api_Key);

                var balanceService = new StripeBalanceService();
                var balance        = balanceService.Get();

                var response = balance.StripeResponse;
                Response  = response.ResponseJson;
                ErrorCode = 0;
            }
            catch (StripeException e)
            {
                ErrorCode = 1;
                Serializer  serializer  = new Serializer();
                StripeError stripeError = e.StripeError;
                Errors = serializer.Serialize <StripeError>(stripeError);
            }
        }
コード例 #6
0
        public UpdatePayoutsData()
        {
            try
            {
                // Get active Stripe keys
                var getStripeKeys = db.stripes.GroupBy(s => s.SecretKey).Select(x => x.FirstOrDefault()).ToList();

                foreach (var stripe in getStripeKeys)
                {
                    StripeConfiguration.SetApiKey(stripe.SecretKey);
                    // Get Payouts
                    var payoutService = new StripePayoutService();
                    StripeList <StripePayout> payoutItems = payoutService.List(
                        new StripePayoutListOptions()
                    {
                        Limit = 100
                    }
                        );
                    foreach (var payout in payoutItems)
                    {
                        if (payout.Status == "paid")
                        {
                            var checkPayout = db.stripepayouts.Where(p => p.StripePayoutID == payout.Id).ToList();
                            if (checkPayout.Count == 0)
                            {
                                // Insert Payout
                                stripepayout insertPayout = new stripepayout();
                                insertPayout.StripePayoutID = payout.Id;
                                insertPayout.PaidDate       = payout.ArrivalDate;
                                insertPayout.PropertyID     = stripe.PropertyID;
                                db.stripepayouts.Add(insertPayout);
                                db.SaveChanges();

                                // Get Payouts Payments
                                var balanceService = new StripeBalanceService();
                                StripeList <StripeBalanceTransaction> balanceTransactions = balanceService.List(
                                    new StripeBalanceTransactionListOptions()
                                {
                                    Limit    = 100,
                                    PayoutId = payout.Id
                                }
                                    );
                                foreach (var transaction in balanceTransactions)
                                {
                                    if (transaction.Description != "STRIPE PAYOUT")
                                    {
                                        stripepayoutdetail payoutDetails = new stripepayoutdetail();
                                        payoutDetails.AmountGross    = (transaction.Amount / 100.0M);
                                        payoutDetails.Fee            = (transaction.Fee / 100.0M);
                                        payoutDetails.AmountNet      = (transaction.Net / 100.0M);
                                        payoutDetails.Description    = transaction.Description;
                                        payoutDetails.StripePayoutID = insertPayout.ID;
                                        db.stripepayoutdetails.Add(payoutDetails);
                                        db.SaveChanges();
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                SendUsEmail error = new SendUsEmail();
                error.sendError(e.ToString(), "Error getting iRent Payouts");
            }
        }