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); }
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"); } }