/// <summary>
        /// 一键充值 响应
        /// </summary>
        /// <param name="msg"></param>
        private static void WithholdingRecharge(WithholdingRechargeRespMsg msg)
        {
            try
            {
                //检查请求处理结果
                if (msg.CheckResult())
                {
                    //检查签名
                    if (msg.CheckSignature())
                    {
#if !DEBUG
                        //同步返回平台不做处理
                        if (msg.Result.Equals("00001")) return;
#endif
                        Agp2pDataContext context = new Agp2pDataContext();
                        //查找对应的交易流水
                        var trans = context.li_bank_transactions.SingleOrDefault(u => u.no_order == msg.RequestId);
                        if (trans != null)
                        {
                            if (trans.status == (int)Agp2p.Common.Agp2pEnums.BankTransactionStatusEnum.Acting)
                            {
                                context.ConfirmBankTransaction(trans.id, null);
                                //一键充值后自动更新银行卡类型(同卡进出只能使用绑定卡提现)
                                var charger = trans.dt_users;
                                var bindCardLastNo = msg.BankAccount.Substring(msg.BankAccount.Length - 4, 4);//快捷充值卡的后四位
                                var bindCardFristNo = msg.BankAccount.Substring(0, 4);//快捷充值卡的前四位 
                                if (charger.li_bank_accounts.Any())
                                {
                                    charger.li_bank_accounts.ForEach(b =>
                                    {
                                        if (b.account.Substring(0, 4).Equals(bindCardFristNo) &&
                                            b.account.Substring(b.account.Length - 4, 4).Equals(bindCardLastNo))
                                        {
                                            b.type = (int)Agp2pEnums.BankAccountType.QuickPay;
                                        }
                                        else
                                        {
                                            b.type = (int) Agp2pEnums.BankAccountType.WebBank;
                                        }
                                    });
                                    context.SubmitChanges();
                                }

                                //TODO 检查用户资金信息 
                                msg.HasHandle = true;
                            }
                        }
                        else
                        {
                            msg.Remarks = "没有找到平台交易流水记录,交易流水号为:" + msg.RequestId;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                msg.Remarks = "内部错误:" + ex.Message;
            }
        }
示例#2
0
        public static void MakeSureHaveIdleMoney(string userName, decimal amount)
        {
            var context = new Agp2pDataContext();
            var wallet  = context.li_wallets.Single(w => w.dt_users.user_name == userName);

            if (wallet.idle_money < amount)
            {
                Debug.WriteLine($"为用户 {wallet.dt_users.GetFriendlyUserName()} 充值 {amount - wallet.idle_money}");
                var btr = context.Charge(wallet.user_id, amount - wallet.idle_money, Agp2pEnums.PayApiTypeEnum.ManualAppend);
                context.ConfirmBankTransaction(btr.id, null);
            }
        }
        //批量确认/取消
        protected void btnConfirmCancel_Click(object sender, EventArgs e)
        {
            try
            {
                var doConfirm = ((LinkButton)sender).ID == "btnConfirm";
                ChkAdminLevel("manage_bank_transaction_charge", (doConfirm ? DTEnums.ActionEnum.Confirm : DTEnums.ActionEnum.Cancel).ToString());

                var ecpssService       = new API.Payment.Ecpss.Service(false);
                var preSaveTransaction = new List <li_bank_transactions>();

                for (int i = 0; i < rptList.Items.Count; i++)
                {
                    CheckBox cb = (CheckBox)rptList.Items[i].FindControl("chkId");
                    if (!cb.Checked)
                    {
                        continue;
                    }
                    int    id       = Convert.ToInt32(((HiddenField)rptList.Items[i].FindControl("hidId")).Value);
                    string no_order = ((Label)rptList.Items[i].FindControl("lb_order_no")).Text;
                    string pay_type = ((Label)rptList.Items[i].FindControl("lb_pay_type")).Text;
                    //TODO 丰付支付能否手动审核?
                    if (doConfirm)
                    {
                        //调用汇潮接口查询订单是否已到账
                        if (pay_type != Utils.GetAgp2pEnumDes(Agp2pEnums.PayApiTypeEnum.Ecpss) || ecpssService.CheckRechargeOrder(no_order))
                        {
                            preSaveTransaction.Add(context.ConfirmBankTransaction(id, GetAdminInfo().id, false));
                        }
                    }
                    else
                    {
                        if (pay_type != Utils.GetAgp2pEnumDes(Agp2pEnums.PayApiTypeEnum.Ecpss) || !ecpssService.CheckRechargeOrder(no_order))
                        {
                            preSaveTransaction.Add(context.CancelBankTransaction(id, GetAdminInfo().id, false));
                        }
                    }
                }
                context.SubmitChanges();
                preSaveTransaction.ForEach(t => MessageBus.Main.Publish(new BankTransactionFinishedMsg(t)));
                AddAdminLog(DTEnums.ActionEnum.Delete.ToString(), "审批成功 " + preSaveTransaction.Count + " 条,失败 0 条"); //记录日志
                JscriptMsg("审批成功" + preSaveTransaction.Count + "条,失败 0 条!",
                           Utils.CombUrlTxt("bank_transaction_charging_list.aspx", "status={0}&page={1}", rblBankTransactionStatus.SelectedValue, page.ToString()), "Success");
            }
            catch (Exception)
            {
                JscriptMsg("审批失败!", Utils.CombUrlTxt("bank_transaction_charging_list.aspx", "status={0}&page={1}", rblBankTransactionStatus.SelectedValue, page.ToString()), "Failure");
            }
        }
 protected void btnConfirm_OnClick(object sender, EventArgs e)
 {
     try
     {
         int bankTransactionId = Convert.ToInt32(((Button)sender).CommandArgument);
         var bt = context.ConfirmBankTransaction(bankTransactionId, GetAdminInfo().id);
         var bankTransactionType = (Agp2pEnums.BankTransactionTypeEnum)Convert.ToByte(bt.type);
         var remark = (bankTransactionType == Agp2pEnums.BankTransactionTypeEnum.Withdraw
             ? ("确认银行账户 " + bt.li_bank_accounts.account)
             : ("确认用户 " + bt.dt_users.user_name)) + " " + Utils.GetAgp2pEnumDes(bankTransactionType) + "成功, 涉及金额: " + bt.value;
         AddAdminLog(DTEnums.ActionEnum.Confirm.ToString(), remark); //记录日志
         JscriptMsg(remark, Utils.CombUrlTxt("bank_transaction_list_all.aspx", "user_id={0}", user_id), "Success");
     }
     catch (Exception ex)
     {
         JscriptMsg("确认银行账户交易失败!" + ex.Message, Utils.CombUrlTxt("bank_transaction_list_all.aspx", "user_id={0}", user_id), "Failure");
     }
 }
        /// <summary>
        /// 网银充值 响应
        /// </summary>
        /// <param name="msg"></param>
        private static void Recharge(RechargeRespMsg msg)
        {
            try
            {
                //检查请求处理结果
                if (msg.CheckResult())
                {
                    //检查签名
                    if (msg.CheckSignature())
                    {
#if !DEBUG
                        //同步返回平台不做处理
                        if (msg.Result.Equals("00001")) return;
#endif
                        Agp2pDataContext context = new Agp2pDataContext();
                        //查找对应的交易流水
                        var trans = context.li_bank_transactions.SingleOrDefault(u => u.no_order == msg.RequestId);
                        if (trans != null)
                        {
                            if (trans.status == (int)Agp2p.Common.Agp2pEnums.BankTransactionStatusEnum.Acting)
                            {
                                context.ConfirmBankTransaction(trans.id, null);
                                //TODO 检查用户资金信息
                                msg.HasHandle = true;
                            }
                        }
                        else
                        {
                            msg.Remarks = "没有找到平台交易流水记录,交易流水号为:" + msg.RequestId;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                msg.Remarks = "内部错误:" + ex.Message;
            }
        }
示例#6
0
        //批量确认/取消
        protected void btnConfirmCancel_Click(object sender, EventArgs e)
        {
            try
            {
                var doConfirm = ((LinkButton)sender).ID == "btnConfirm";
                ChkAdminLevel("manage_bank_transaction_withdraw", (doConfirm ? DTEnums.ActionEnum.Confirm : DTEnums.ActionEnum.Cancel).ToString());
                var preSaveTransaction = new List <li_bank_transactions>();
                for (int i = 0; i < rptList.Items.Count; i++)
                {
                    CheckBox cb = (CheckBox)rptList.Items[i].FindControl("chkId");
                    if (!cb.Checked)
                    {
                        continue;
                    }
                    int id = Convert.ToInt32(((HiddenField)rptList.Items[i].FindControl("hidId")).Value);
                    if (doConfirm)
                    {
                        preSaveTransaction.Add(context.ConfirmBankTransaction(id, GetAdminInfo().id, false));
                    }
                    else
                    {
                        preSaveTransaction.Add(context.CancelBankTransaction(id, GetAdminInfo().id, false));
                    }
                }
                context.SubmitChanges();
                preSaveTransaction.ForEach(t => MessageBus.Main.Publish(new BankTransactionFinishedMsg(t)));

                AddAdminLog(DTEnums.ActionEnum.Delete.ToString(), "审批成功 " + preSaveTransaction.Count + " 条,失败 0 条"); //记录日志
                JscriptMsg("审批成功" + preSaveTransaction.Count + "条,失败 0 条!",
                           Utils.CombUrlTxt("bank_transaction_withdrawing_list.aspx", "status={0}&page={1}", rblBankTransactionStatus.SelectedValue, page.ToString()), "Success");
            }
            catch (Exception)
            {
                JscriptMsg("审批失败!", Utils.CombUrlTxt("bank_transaction_withdrawing_list.aspx", "status={0}&page={1}", rblBankTransactionStatus.SelectedValue, page.ToString()), "Failure");
            }
        }
示例#7
0
        protected void excBtn_OnClick(object sender, EventArgs e)
        {
            string requestId = ((LinkButton)sender).CommandArgument;
            var    request   = context.li_pay_request_log.SingleOrDefault(r => r.id == requestId);

            if (request != null)
            {
                var project = context.li_projects.SingleOrDefault(p => p.id == request.project_id);
                switch (request.api)
                {
#if DEBUG
                //个人自动账户/银行还款开通
                case (int)Agp2pEnums.SumapayApiEnum.AcReO:
                case (int)Agp2pEnums.SumapayApiEnum.AbReO:
                    if (project != null)
                    {
                        project.autoRepay = true;
                        context.SubmitChanges();
                    }
                    break;

                //个人自动还款取消
                case (int)Agp2pEnums.SumapayApiEnum.ClRep:
                    if (project != null)
                    {
                        project.autoRepay = false;
                        context.SubmitChanges();
                    }
                    break;

                //个人网银/一键充值
                case (int)Agp2pEnums.SumapayApiEnum.WeRec:
                case (int)Agp2pEnums.SumapayApiEnum.WhRec:
                case (int)Agp2pEnums.SumapayApiEnum.WhReM:
                    var trans = context.li_bank_transactions.SingleOrDefault(u => u.no_order == requestId);
                    if (trans?.status == (int)Agp2pEnums.BankTransactionStatusEnum.Acting)
                    {
                        context.ConfirmBankTransaction(trans.id, null);
                    }
                    break;

                //个人提现
                case (int)Agp2pEnums.SumapayApiEnum.Wdraw:
                case (int)Agp2pEnums.SumapayApiEnum.WdraM:
                    var transT = context.li_bank_transactions.SingleOrDefault(u => u.no_order == requestId);
                    if (transT?.status == (int)Agp2pEnums.BankTransactionStatusEnum.Acting)
                    {
                        context.ConfirmBankTransaction(transT.id, null);
                    }
                    break;

                //普通/集合项目放款
                case (int)Agp2pEnums.SumapayApiEnum.ALoan:
                case (int)Agp2pEnums.SumapayApiEnum.CLoan:
                    if (project != null)
                    {
                        if (project.IsHuoqiProject())
                        {
                            TransactionFacade.MakeLoan(context, DateTime.Now, project, project.li_risks.li_loaners.user_id);
                        }
                        else
                        {
                            context.StartRepayment(project.id);
                        }
                    }
                    break;

                //个人自动还款普通/集合项目
                case (int)Agp2pEnums.SumapayApiEnum.AcRep:
                case (int)Agp2pEnums.SumapayApiEnum.AbRep:
                    if (!string.IsNullOrEmpty(request.remarks))
                    {
                        if (project != null && !project.IsHuoqiProject() && !project.IsNewbieProject1())
                        {
                            var dic       = Utils.UrlParamToData(request.remarks);
                            int repayId   = Utils.StrToInt(dic["repayTaskId"], 0);
                            var repayTask = context.li_repayment_tasks.SingleOrDefault(r => r.id == repayId);
                            if (repayTask != null)
                            {
                                context.GainLoanerRepayment(DateTime.Now, repayId, (int)request.user_id, repayTask.repay_principal + repayTask.repay_interest);
                            }
                        }
                    }
                    break;

                //普通/集合项目本息到账
                case (int)Agp2pEnums.SumapayApiEnum.RetPt:
                case (int)Agp2pEnums.SumapayApiEnum.RetCo:
                    if (project != null && !project.IsHuoqiProject() && !project.IsNewbieProject1())
                    {
                        if (!string.IsNullOrEmpty(request.remarks))
                        {
                            var dic     = Utils.UrlParamToData(request.remarks);
                            int repayId = Utils.StrToInt(dic["repayTaskId"], 0);
                            context.ExecuteRepaymentTask(repayId);
                        }
                    }
                    break;
#endif
                default:
                    throw new NotImplementedException("该接口操作暂不能在平台单方面执行。");
                }
            }
        }
        /// <summary>
        /// 提现响应处理
        /// </summary>
        /// <param name="msg"></param>
        private static void WithDraw(WithdrawRespMsg msg)
        {
            try
            {
                Agp2pDataContext context = new Agp2pDataContext();
                //同步返回是正在提现申请受理(忽略),异步返回才是提现处理
#if DEBUG
                if (msg.Sync)
                {
#endif
#if !DEBUG
                if (!msg.Sync)
                {
#endif
                    if (msg.CheckResult())
                    {
                        if (msg.CheckSignature())
                        {
                            //当noticeType=0时,00000代表受理成功;当noticeType=1时,00000代表提现成功;
                            if (msg.NoticeType == "1")
                            {
                                //查找对应的交易流水
                                var trans = context.li_bank_transactions.SingleOrDefault(u => u.no_order == msg.RequestId);
                                if (trans != null)
                                {
                                    context.ConfirmBankTransaction(trans.id, null);//TODO 检查用户资金信息
                                    msg.HasHandle = true;
                                }
                                else
                                {
                                    msg.Remarks = "提现已处理成功,但没有找到对应的交易记录,交易流水号为:" + msg.RequestId;
                                }
                            }
                            else
                            {
                                //查找对应的请求
                                var requestLog = context.li_pay_request_log.SingleOrDefault(u => u.id == msg.RequestId);
                                if (requestLog != null)
                                {
                                    var trans = context.li_bank_transactions.SingleOrDefault(u => u.no_order == msg.RequestId);
                                    if (trans == null)
                                    {
                                        //创建提现申请记录
                                        context.Withdraw(Utils.StrToInt(requestLog.remarks, 0),
                                        Utils.StrToDecimal(msg.Sum, 0), "丰付提现处理", msg.RequestId);
                                        //TODO 提现完成特殊处理
                                        //msg.HasHandle = true;
                                    }
                                    else
                                    {
                                        msg.Remarks = "提现已受理,但已生成过交易记录,交易流水号为:" + msg.RequestId;
                                    }
                                }
                                else
                                {
                                    msg.Remarks = "提现已受理,但没有找到对应的请求,请求流水号为:" + msg.RequestId;
                                }
                            }
                        }
                    }
                    //TODO 自动取消提现 暂人工取消
                    //if (!msg.HasHandle)
                    //    context.CancelBankTransaction(trans.id, 1);
                }
            }
            catch (Exception ex)
            {
                msg.Remarks = "内部错误:" + ex.Message;
            }
        }