/// <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; } }
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; } }
//批量确认/取消 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"); } }
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; } }