public override Deposit Insert(Deposit deposit) { var userDeposit = new UserDeposit { UserAccountId = deposit.AccountId, UserWalletId = deposit.WalletId, FromType = deposit.FromType, FromAddress = deposit.FromAddress, FromTag = deposit.FromTag, ToAddress = deposit.ToAddress, ToTag = deposit.ToTag, Amount = deposit.Amount, Status = deposit.Status, Timestamp = deposit.Timestamp, OrderNo = deposit.OrderNo, TransactionId = deposit.TransactionId, RequestId = deposit.RequestId, SelfPlatform = false, Remark = null, CryptoCode = deposit.CryptoCode }; userDeposit = new UserDepositDAC().Insert(userDeposit); deposit.Id = userDeposit.Id; return(deposit); }
public UserDeposit Insert(UserDeposit userDeposit) { const string sql = @"INSERT INTO [dbo].[UserDeposits] ([UserAccountId],[UserWalletId],[FromType],[FromAddress],[FromTag],[ToAddress],[ToTag],[Amount],[Status],[Timestamp],[Remark],[OrderNo],[TransactionId],[SelfPlatform],[RequestId],[CryptoCode]) VALUES (@UserAccountId,@UserWalletId,@FromType,@FromAddress,@FromTag,@ToAddress,@ToTag,@Amount,@Status,@Timestamp,@Remark,@OrderNo,@TransactionId,@SelfPlatform,@RequestId,@CryptoCode); SELECT SCOPE_IDENTITY()"; using (var conn = WriteConnection()) { userDeposit.Id = conn.ExecuteScalar <long>(sql, userDeposit); return(userDeposit); } }
public static string Alipay(UserDeposit deposit) { string param = "customerid={0}&sdcustomno={1}&ordermoney={2}&cardno=34&faceno=zfb¬iceurl={3}&endcustomer={4}&endip={5}&remarks={6}&mark={7}"; string notifyUrl = LocalUrl + "/Payment/Alipay"; param = string.Format(param, CustId, deposit.FlowNum, deposit.Amount, HttpUtility.UrlEncode(notifyUrl), deposit.UserId, deposit.IP, "Charge", "Charge"); string sign = StringHelper.MD5Hash(param + "&key=" + PaymentKey).ToUpper(); string url = string.Format("{0}?{1}&sign={2}&superid=101651", AlipayUrl, param, sign); return(url); }
public async Task <UserDeposit> GetLastDeposit() { UserDeposit result = null; var request = GetRequest("api/Deposit/GetLastDeposit"); var response = await Client.SendAsync(request); if (response.StatusCode == HttpStatusCode.OK) { var responseText = await response.Content.ReadAsStringAsync(); result = JSSerializer.Deserialize <UserDeposit>(responseText); } return(result); }
public static string Weixin(UserDeposit deposit) { string param = "customerid={0}&sdcustomno={1}&orderAmount={2}&cardno=32¬iceurl={3}&backurl={4}"; string notifyUrl = LocalUrl + "/Payment/Weixin"; string backUrl = LocalUrl + "/User/PaymentSuccess"; //金额以分为单位 param = string.Format(param, CustId, deposit.FlowNum, (int)(deposit.Amount * 100), notifyUrl, backUrl); string sign = StringHelper.MD5Hash(param + PaymentKey).ToUpper(); string url = string.Format("{0}?{1}&sign={2}&superid=101651&mark=charge", WeixinUrl, param, sign); return(url); }
public ActionResult Weixin() { bool suc = Request["state"] == "1"; var deposit = new UserDeposit { GatewayOrderNum = Request["sd51no"], FlowNum = Request["sdcustomno"], Amount = decimal.Parse(Request["ordermoney"]), Gateway = "weixinpay", UserId = int.Parse(Request["sdcustomno"].Substring(8, 5)), Params = Request.Url.Query, Status = suc ? 1 : 0, CreateTime = DateTime.Now }; var ur = new UserRepository(); ur.CreateDeposity(deposit); if (suc) { var user = ur.Get(deposit.UserId); if (user != null) { user.TotalScore += deposit.Amount; ur.Update(user); } var score = new UserScore { CreateTime = DateTime.Now, UserId = user.Id, Num = deposit.FlowNum, ChargeFee = 0, Score = deposit.Amount, TypeId = 2, //充值 Status = 1, UserPath = user.RefUserPath }; ur.CreateUserScore(score); } return(Content("<result>1</result>")); }
public ActionResult Deposit(string gateway, decimal amount) { string url = string.Empty; var deposit = new UserDeposit(); deposit.UserId = CurrentUser.Id; deposit.IP = Request.UserIP(); deposit.Amount = amount; deposit.Gateway = gateway; deposit.FlowNum = DateTime.Now.ToString("yyyyMMdd") + CurrentUser.Id + DateTime.Now.Ticks; if (gateway == "alipay") { url = PaymentHelper.Alipay(deposit); } else if (gateway == "wechatpay") { url = PaymentHelper.Weixin(deposit); } if (string.IsNullOrEmpty(url)) { return(View()); } return(Redirect(url)); }
public void CreateDeposity(UserDeposit deposit) { new UserDepositRepository().Create(deposit); }
private WithdrawOM WithdrawalToUserAccount(UserWallet fromWallet, UserWithdrawal fromWithdraw, UserWallet toWallet) { var mastSettings = new MasterSettingDAC().SelectByGroup("UserWithdrawal"); UserDeposit model = new UserDeposit(); using (var scope = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 0, 1, 30))) { fromWithdraw.Status = TransactionStatus.Confirmed; fromWithdraw.TransactionId = toWallet.UserAccountId.ToString("N"); fromWithdraw.SelfPlatform = true;//平台内提币 fromWithdraw.Id = new UserWithdrawalDAC().Create(fromWithdraw); new UserTransactionDAC().Insert(new UserTransaction { Id = Guid.NewGuid(), AccountId = fromWithdraw.UserAccountId, CryptoId = fromWallet.CryptoId, CryptoCode = fromWallet.CryptoCode, Type = UserTransactionType.Withdrawal, DetailId = fromWithdraw.Id.ToString(), Status = (byte)fromWithdraw.Status, Timestamp = fromWithdraw.Timestamp, Amount = fromWithdraw.Amount, OrderNo = fromWithdraw.OrderNo }); var fromWithdrawFee = new UserWithdrawalFee { Amount = fromWithdraw.Amount, WithdrawalId = fromWithdraw.Id, Fee = fromWithdraw.Amount * Convert.ToDecimal(mastSettings.First(e => e.Name == "UserWithdrawal_ToUser").Value), Timestamp = DateTime.UtcNow }; new UserWithdrawalFeeDAC().Create(fromWithdrawFee); new UserWalletDAC().Decrease(fromWallet.Id, fromWithdraw.Amount); new UserWalletStatementDAC().Insert(new UserWalletStatement { WalletId = fromWallet.Id, Action = MerchantWalletStatementAction.Withdrawal, Amount = -fromWithdraw.Amount, Balance = fromWallet.Balance - fromWithdraw.Amount, FrozenAmount = 0, FrozenBalance = fromWallet.FrozenBalance, Timestamp = DateTime.UtcNow }); //充币 var amount = fromWithdraw.Amount - fromWithdrawFee.Fee; if (amount <= 0) { throw new CommonException(ReasonCode.GENERAL_ERROR, MessageResources.ArrivalAmountError); } new UserWalletDAC().Increase(toWallet.Id, amount); new UserWalletStatementDAC().Insert(new UserWalletStatement { WalletId = toWallet.Id, Action = UserWalletStatementAction.Deposit, Amount = amount, Balance = toWallet.Balance + amount, FrozenAmount = 0, FrozenBalance = toWallet.FrozenBalance, Timestamp = DateTime.UtcNow }); model = new UserDepositDAC().Insert(new UserDeposit { UserAccountId = toWallet.UserAccountId, UserWalletId = toWallet.Id, FromAddress = fromWallet.Address, FromTag = fromWallet.Tag, ToAddress = toWallet.Address, ToTag = toWallet.Tag, Amount = amount, Status = TransactionStatus.Confirmed, Timestamp = DateTime.UtcNow, OrderNo = IdentityHelper.OrderNo(), TransactionId = fromWallet.UserAccountId.ToString("N"), SelfPlatform = true, CryptoCode = fromWallet.CryptoCode }); new UserTransactionDAC().Insert(new UserTransaction { Id = Guid.NewGuid(), AccountId = model.UserAccountId, CryptoId = fromWallet.CryptoId, CryptoCode = fromWallet.CryptoCode, Type = UserTransactionType.Deposit, DetailId = model.Id.ToString(), Status = (byte)model.Status, Timestamp = model.Timestamp, Amount = model.Amount, OrderNo = model.OrderNo }); scope.Complete(); } UserMSMQ.PubUserWithdrawCompleted(fromWithdraw.Id, 0); UserMSMQ.PubUserDeposit(model.Id, 0); return(new WithdrawOM { OrderId = fromWithdraw.Id, OrderNo = fromWithdraw.OrderNo, Timestamp = fromWithdraw.Timestamp.ToUnixTime().ToString() }); }