Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        public static string Alipay(UserDeposit deposit)
        {
            string param     = "customerid={0}&sdcustomno={1}&ordermoney={2}&cardno=34&faceno=zfb&noticeurl={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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        public static string Weixin(UserDeposit deposit)
        {
            string param     = "customerid={0}&sdcustomno={1}&orderAmount={2}&cardno=32&noticeurl={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);
        }
Esempio n. 6
0
        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>"));
        }
Esempio n. 7
0
        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));
        }
Esempio n. 8
0
 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()
            });
        }