public ActionResult Payment([FromBody] BalanceInput input) { if (!ModelState.IsValid) { return(BadRequest()); } var user = accountService.GetCurrentUserForContext(HttpContext); if (user == null || user.Id != input.UserId) { // User should only be able to alter its own balance return(Unauthorized()); } var transaction = new BalanceTransaction { UserId = user.Id, Amount = input.Amount }; dbcontext.BalanceTransaction.Add(transaction); user.Balance += transaction.Amount; dbcontext.Update(user); dbcontext.SaveChanges(); return(Ok()); }
internal static BalanceTransaction TransformStripeBalanceTransactionToBalanceTransaction(StripeBalanceTransaction stripeBalanceTransaction) { try { var balanceTransaction = new BalanceTransaction { BalanceTransactionID = stripeBalanceTransaction.Id, Amount = Sahara.Core.Common.Methods.Billing.ConvertStripeAmountToDecimals(stripeBalanceTransaction.Amount.ToString()), Net = Sahara.Core.Common.Methods.Billing.ConvertStripeAmountToDecimals(stripeBalanceTransaction.Net.ToString()), Fee = Sahara.Core.Common.Methods.Billing.ConvertStripeAmountToDecimals(stripeBalanceTransaction.Fee.ToString()), Type = stripeBalanceTransaction.Type, Status = stripeBalanceTransaction.Status, Created = stripeBalanceTransaction.Created, Available = stripeBalanceTransaction.AvailableOn }; if (balanceTransaction.Type == "transfer") { balanceTransaction.Amount = Math.Abs(balanceTransaction.Amount); balanceTransaction.Net = Math.Abs(balanceTransaction.Net); } return(balanceTransaction); } catch { return(null); } }
public static balanceTransaction Map(this balanceTransaction uiTransaction, BalanceTransaction dbTransaction) { uiTransaction.balanceTransactionID = dbTransaction.BalanceTransactionID; uiTransaction.transactionDate = dbTransaction.TransactionDate.ToString(); uiTransaction.incomingAmount = dbTransaction.IncomingAmount; uiTransaction.outgoingAmount = dbTransaction.OutgoingAmount; uiTransaction.outstandingBalance = dbTransaction.OutstandingBalance; uiTransaction.comments = dbTransaction.Description; uiTransaction.transactionTypeID = dbTransaction.TransactionTypeID; uiTransaction.customerID = dbTransaction.CustomerID; if (dbTransaction.TransactionTypeID == (int)TransactionTypeEnum.Cheque) { uiTransaction.chequeDate = dbTransaction.ChequeDate.ToString(); uiTransaction.chequeCustomerName = dbTransaction.ChequeCustomerName; uiTransaction.chequeIssuerBank = dbTransaction.ChequeIssuerBank; uiTransaction.chequeNumber = dbTransaction.ChequeNumber; uiTransaction.chequeStatusID = dbTransaction.ChequeStatusID; uiTransaction.chequeDepositedDate = dbTransaction.ChequeDepositedDate.HasValue ? dbTransaction.ChequeDepositedDate.Value.ToString() : string.Empty; //uiTransaction.isChequePassed = dbTransaction.IsChequePassed; uiTransaction.chequeActionDate = dbTransaction.ChequeActionDate.HasValue? dbTransaction.ChequeActionDate.Value.ToString():string.Empty; //uiTransaction.isChequeFailed = dbTransaction.IsChequeFailed; uiTransaction.chequeFailureComments = dbTransaction.ChequeFailureComments; } else if (dbTransaction.TransactionTypeID == (int)TransactionTypeEnum.Online) { uiTransaction.onlineReferernceID = dbTransaction.OnlineReferernceID; } if (dbTransaction.Customer != null) { uiTransaction.customer = new customer().Map(dbTransaction.Customer); } return(uiTransaction); }
public async Task <IActionResult> UpdateTransaction(Transaction transaction) { int accountId = 0; double newAmount = transaction.TransactionAmount; DateTime newDate = transaction.TransactionDate; transaction = await _context.Transactions.FirstOrDefaultAsync(tran => tran.Id == transaction.Id); List <BalanceTransaction> affectedBalances = await _context.BalanceTransactions.Where(bt => bt.TransactionId == transaction.Id).ToListAsync(); affectedBalances.ForEach(b => { Balance balance = _context.Balances.FirstOrDefault(bal => bal.Id == b.BalanceId); accountId = balance.AccountNumber; balance.BalanceAmount -= transaction.TransactionAmount; b.Balance = null; _context.Entry(b).State = EntityState.Modified; _context.Remove(b); }); Account account = _context.Accounts.Single(account => account.Id == accountId); List <Balance> balanses = _context.Balances.Where(b => b.BalanceDate >= newDate && b.Account.Id == account.Id).ToList(); if (balanses.Count != 0) { balanses.ForEach(b => { b.BalanceAmount += newAmount; BalanceTransaction balanceTransaction = new BalanceTransaction { Balance = b, Transaction = transaction, BalanceId = b.Id, TransactionId = transaction.Id }; if (b.BalanceTransactions == null) { b.BalanceTransactions = new List <BalanceTransaction>(); } b.BalanceTransactions.Add(balanceTransaction); _context.Entry(b).State = EntityState.Modified; }); } else { transaction.IsFuture = true; transaction.AccountId = account.Id; _context.Entry(transaction).State = EntityState.Modified; } transaction.TransactionAmount = newAmount; transaction.TransactionDate = newDate; _context.Entry(transaction).State = EntityState.Modified; await _context.SaveChangesAsync(); return(Ok(account.Id)); }
/// <summary> /// /// 本示例介绍对余额提现和查看用户余额明细对象/对象列表 /// 余额的消费、退款请查看 OrderDemo 示例 /// 查看用户当前余额请使用查看 User 对象接口 /// /// </summary> public static void Example(string appId) { var uid = "test_user_001"; var orParams = new Dictionary <string, object> { { "app", appId }, { "uid", uid }, { "merchant_order_no", new Random().Next(1, 999999999) }, { "channel", "wx" }, // 充值接口需要设置支付渠道 { "amount", 1 }, { "currency", "cny" }, { "client_ip", "127.0.0.1" }, { "subject", "Your Subject" }, { "body", "Your Body" }, { "description", "Your description" }, }; var wdParams = new Dictionary <string, object> { { "amount", 1 }, { "order_no", "20160829133002" }, { "description", "withdraw request" }, { "extra", new Dictionary <string, object> { { "card_number", "6225210207073918" }, { "user_name", "姓名" }, { "open_bank_code", "0102" }, { "prov", "上海" }, { "city", "上海" } } }, }; Console.WriteLine("****创建提现 Withdrawal 对象(发起提现申请)****"); var wd = Withdrawal.Request(appId, wdParams); Console.WriteLine(wd); Console.WriteLine(); Console.WriteLine("****提现完成 Withdrawal 对象****"); Console.WriteLine(Withdrawal.Confirm(appId, wd.Id)); Console.WriteLine(); Console.WriteLine("****查看用户交易明细 Balance Transaction 对象列表****"); var balanceList = BalanceTransaction.List(appId); Console.WriteLine(balanceList); Console.WriteLine(); Console.WriteLine("****查看用户交易明细 Balance Transaction 对象****"); Console.WriteLine(BalanceTransaction.Retrieve(appId, balanceList.Data.First().Id)); Console.WriteLine(); }
/// <summary> /// 本示例展示 用户账户交易明细 查询列表,明细 /// </summary> /// <param name="appId"></param> public static void Example(string appId) { var listParams = new Dictionary <string, object> { { "page", 1 }, { "per_page", 10 }, }; var list = BalanceTransaction.List(appId, listParams); Console.WriteLine("****查询 balance_transactions 列表****"); Console.WriteLine(list); Console.WriteLine(); Console.WriteLine("****查询 balance_transactions 明细****"); Console.WriteLine(BalanceTransaction.Retrieve(appId, "310217032213081700008201")); Console.WriteLine(); }
public async Task <IActionResult> Post(int accountId, Transaction transaction) { Account account = _context.Accounts.Single(account => account.Id == accountId); List <Balance> balanses = _context.Balances.Where(b => b.BalanceDate >= transaction.TransactionDate && b.Account.Id == account.Id).ToList(); if (balanses.Count != 0) { balanses.ForEach(b => { b.BalanceAmount += transaction.TransactionAmount; BalanceTransaction balanceTransaction = new BalanceTransaction { Balance = b, Transaction = transaction, BalanceId = b.Id, TransactionId = transaction.Id }; if (b.BalanceTransactions == null) { b.BalanceTransactions = new List <BalanceTransaction>(); } b.BalanceTransactions.Add(balanceTransaction); _context.Entry(b).State = EntityState.Modified; }); } else { transaction.IsFuture = true; transaction.AccountId = account.Id; _context.Transactions.Add(transaction); } _context.Attach(account); await _context.SaveChangesAsync(); return(Ok(account.Id)); }
public static BalanceTransaction Map(this BalanceTransaction dbTransaction, balanceTransaction uiTransaction, bool isEdit) { DateTime transactionDate; if (DateTime.TryParse(uiTransaction.transactionDate, out transactionDate)) { dbTransaction.TransactionDate = transactionDate; } else { dbTransaction.TransactionDate = DateTime.Now; } dbTransaction.IncomingAmount = uiTransaction.incomingAmount; dbTransaction.OutgoingAmount = uiTransaction.outgoingAmount; dbTransaction.TransactionTypeID = uiTransaction.transactionTypeID; dbTransaction.Description = uiTransaction.comments; if (uiTransaction.transactionTypeID == (int)TransactionTypeEnum.Cheque) { DateTime chequeDate; if (DateTime.TryParse(uiTransaction.chequeDate, out chequeDate)) { dbTransaction.ChequeDate = chequeDate; } dbTransaction.ChequeNumber = uiTransaction.chequeNumber; dbTransaction.ChequeCustomerName = uiTransaction.chequeCustomerName; dbTransaction.ChequeIssuerBank = uiTransaction.chequeIssuerBank; dbTransaction.ChequeStatusID = (int)ChequeStatusEnum.NotInitiated; dbTransaction.OnlineReferernceID = null; } else if (uiTransaction.transactionTypeID == (int)TransactionTypeEnum.Online) { dbTransaction.OnlineReferernceID = uiTransaction.onlineReferernceID; dbTransaction.ChequeDate = null; dbTransaction.ChequeNumber = null; dbTransaction.ChequeCustomerName = null; dbTransaction.ChequeIssuerBank = null; dbTransaction.ChequeStatusID = null; } else { dbTransaction.ChequeDate = null; dbTransaction.ChequeNumber = null; dbTransaction.ChequeCustomerName = null; dbTransaction.ChequeIssuerBank = null; dbTransaction.ChequeStatusID = null; dbTransaction.OnlineReferernceID = null; } if (isEdit) { dbTransaction.LastUpdatedDateTime = DateTime.Now; } else { dbTransaction.CreatedDateTime = DateTime.Now; //dbTransaction.CustomerID = uiTransaction.customerID; } return(dbTransaction); }