public ActionResult PayDebitQuery() { int OrderId = TQuery.GetInt("OrderId"); respPayDebitQueryModel result = new respPayDebitQueryModel(); if (OrderId == 0) { result.backState = -100; result.respMsg = ""; } else { result = TengDepository.PayDebitQuery(OrderId, (int)Logic.Platform.系统); } return(View(result)); }
private bool WithDrawHandle() { bool flag = false; if (listViewPayRecord != null && listViewPayRecord.Count > 0) { while (listViewPayRecord.Count > 0) { var item = listViewPayRecord[0]; Logic.ChannelType Channel = (Logic.ChannelType)item.ChannelType; ResultModel result = new ResultModel(); result.backState = -100; string msg = ""; switch (Channel) { case Logic.ChannelType.易宝: msg = "支付失败"; var yeepayResult = YeepayDepository.TradeReviceQuery(item.RequestId.ToString(), (int)Logic.Platform.系统); if (yeepayResult.backState == 0 && yeepayResult.tradeReceives.Count > 0 && yeepayResult.tradeReceives[0].status == "SUCCESS") { result.backState = 0; msg = "支付成功"; } break; case Logic.ChannelType.荣邦科技积分: case Logic.ChannelType.荣邦3: msg = "支付失败"; var masgettResult = MasgetDepository.PaymentjournalGet(item.RequestId, (int)Logic.Platform.系统, Channel); if (masgettResult.backState == 0 && masgettResult.data.respcode == 2) { result.backState = 0; msg = "支付成功"; } break; case Logic.ChannelType.荣邦科技无积分: break; case Logic.ChannelType.腾付通: var TengResult = TengDepository.PayDebitQuery(item.RequestId, (int)Logic.Platform.系统); if (TengResult.backState == 0 && TengResult.status == "3") { result.backState = 0; msg = "支付成功"; } else { msg = TengResult.respMsg; } break; case Logic.ChannelType.米刷: var mishuaResult = MiShuaDepository.CheckDzero(item.RequestId, Logic.Platform.系统); if (mishuaResult.backState == 0 && mishuaResult.Data.status == "00" && mishuaResult.Data.qfStatus == "SUCCESS") { result.backState = 0; msg = "支付成功"; } break; default: break; } bool f = false; //Logs.WriteLog($"处理数据:{JsonConvert.SerializeObject(result)}", "d:\\Log\\自动处理", "资金队列"); //处理数据 f = payRecordDao.UpdateState(item.ID, result.backState == 0 ? 10 : -1, msg); if (f) { //交易成功回调 UsersDepository.NoticeSuccess(item.ID, item.UserId); int num = Convert.ToInt32(_tbxWithDrawSuccess.Text); num++; _tbxWithDrawSuccess.Text = num.ToString(); } else { int num = Convert.ToInt32(_tbxWithDrawFail.Text); num++; _tbxWithDrawFail.Text = num.ToString(); } listViewPayRecord.Remove(item); Thread.Sleep(ConfigInfo.theadTime); } } else { //两小时前的数据被处理 listViewPayRecord = viewPayRecordDao.GetQuery(10, " State not in(10,-1) and DATEDIFF(HOUR,CTime,GETDATE())>2 ", null, "order by id asc"); if (listViewPayRecord != null && listViewPayRecord.Count > 0) { return(WithDrawHandle()); } } return(flag); }
//1.0.0 public string ReceiveApi2(int cid = 0, int UserId = 0, decimal Amount = 0m, int BankID = 0, int PayType = 0) { Logs.WriteLog($"ReceiveApi2,cid:{cid},UserId:{UserId},Amount:{Amount},BankID:{BankID},PayType:{PayType}", "d:\\Log\\Yeepay", "ReceiveApi2"); userEventDao.UserReceiveApi2(cid, UserId, Ip.GetClientIp(), 0, TQuery.GetString("version"), Amount, BankID, PayType); #region 参数验证 if (UserId <= 0) { return(ApiReturnStr.getError(-100, "UserId参数错误")); } if (Amount < 500) { return(ApiReturnStr.getError(-100, "收款金额不能小于500元")); } var ubk = userBankCardDao.Single(BankID); if (ubk == null) { return(ApiReturnStr.getError(-100, "卡记录不存在")); } //卡数据验证 var validateBankResult = userBankCardDao.ValidateBank(ubk); if (validateBankResult.backState != 0) { return(ApiReturnStr.getError(-100, validateBankResult.message)); } var model = userDao.Single(UserId); if (model == null || model.UserId <= 0) { return(ApiReturnStr.getError(-100, "用户不存在")); } JObject data = new JObject(); data["PayUrl"] = ""; string msg = ""; #region 测试通道 //Thread.Sleep(3000); //int ChannelType = 4; //data["ChannelType"] = ChannelType; //data["BankID"] = BankID; //return ApiReturnStr.getApiData(-200, $"快捷协议未开通(03-{ChannelType})", data); #endregion #region 择通道 int ChannelType = 0; //data["ChannelType"] = ChannelType; data["BankID"] = BankID; var option = SelectOptionChannel.Optimal(Amount, BankID, PayType); if (option.backState == 0) { ChannelType = option.Data; data["ChannelType"] = ChannelType; } else { if (option.Data == 2) { return(ApiReturnStr.getError(-100, "通道升级中,敬请期待")); } return(ApiReturnStr.getError(-100, option.message)); } data["ChannelType"] = option.Data; #endregion if (Amount > 20000) { return(ApiReturnStr.getError(-100, "收款金额不能超过20000元")); } Logic.ChannelType ct = (Logic.ChannelType)ChannelType; switch (ct) { case Logic.ChannelType.易宝: #region 易宝逻辑 var yeepayUser = yeepayUserDao.Single(" UserId=@UserId ", new { UserId }); if (yeepayUser == null || model.UserId <= 0) { return(ApiReturnStr.getError(-100, "未开通子商户功能")); } if (yeepayUser.RateState1 == 0 || yeepayUser.RateState3 == 0 || yeepayUser.RateState4 == 0 || yeepayUser.RateState5 == 0) { return(ApiReturnStr.getError(-100, "费率未设置")); } if (yeepayUser.IsAudit == 0) { return(ApiReturnStr.getError(-100, "子商户未审核通过")); } var result = YeepayDepository.ReceiveApi(UserId, Amount, cid, BankID); if (result.backState == 0) { data["PayUrl"] = result.urlAES; return(ApiReturnStr.getApiData(data)); } msg = result.message; #endregion break; case Logic.ChannelType.荣邦科技积分: case Logic.ChannelType.荣邦科技无积分: case Logic.ChannelType.荣邦3: if (ChannelType == 2) { return(ApiReturnStr.getError(-100, "通道升级中,敬请期待")); } #region 荣邦逻辑 #region 验证 if (Amount < 500) { return(ApiReturnStr.getError(-100, "此通道要求支付金额不得小于500元!")); } //验证是否开户 if (!masgetUserDao.QueryIsExist(UserId, ChannelType)) { return(ApiReturnStr.getApiData(-200, $"快捷协议未开通(01-{ChannelType})", data)); //通道未开户 } if (!masgetUserDao.QueryIsOpen(UserId, ChannelType)) { return(ApiReturnStr.getApiData(-200, $"快捷协议未开通(02-{ChannelType})", data)); //通道未入驻 } //验证快捷协议是否开通 if (!bankTreatyApplyDao.QueryTreatycodeIsOpen(BankID, ChannelType)) { return(ApiReturnStr.getApiData(-200, $"快捷协议未开通(03-{ChannelType})", data)); } #endregion //执行请求 var resultBackPay = MasgetDepository.BackPay(BankID, Amount, cid, ct); if (resultBackPay.backState == 0) { data["PayUrl"] = resultBackPay.url; return(ApiReturnStr.getApiData(0, "请求成功,待确认支付", data)); } else if (resultBackPay.backState == 8401) { return(ApiReturnStr.getError(-8401, "通道暂无额度")); } else { return(ApiReturnStr.getError(-100, resultBackPay.message)); } #endregion case Logic.ChannelType.腾付通: var resultTeng = TengDepository.CreatePayCashier(UserId, cid, Amount, BankID); msg = resultTeng.message; if (resultTeng.backState == 0) { data["PayUrl"] = resultTeng.Data["url"]; return(ApiReturnStr.getApiData(data)); } break; case Logic.ChannelType.米刷: var resultMi = MiShuaDepository.PayDzero(BankID, cid, Amount); msg = resultMi.message; if (resultMi.backState == 0 && resultMi.Data.status == "00") { data["PayUrl"] = resultMi.Data.tranStr; return(ApiReturnStr.getApiData(data)); } break; default: break; } #endregion return(ApiReturnStr.getError(-100, msg)); }
//腾付通 代付回调 public string NoticeWithTeng() { string[] paramtersKey = System.Web.HttpContext.Current.Request.Form.AllKeys; var sortedParamtersKey = from s in paramtersKey orderby s ascending select s; StringBuilder str = new StringBuilder(); str.Append("{"); foreach (string key in sortedParamtersKey) { str.AppendFormat("\"{0}\":\"{1}\",", key, System.Web.HttpContext.Current.Request.Form[key].Trim()); } if (str.Length > 0) { str.Remove(str.Length - 1, 1);//移除最后一个逗号 } str.Append("}"); //返回后日志记录 Logs.WriteLog("页面首次记录:" + str.ToString(), "d:\\Log\\Teng", "NoticeWithTeng"); lock (lockNoticeWithTeng) { string result = "fail"; respTengModel model = new respTengModel(); model.version = TQuery.GetString("version"); model.agentId = TQuery.GetString("agentId"); model.merId = TQuery.GetString("merId"); model.orderId = TQuery.GetString("orderId"); model.respCode = TQuery.GetString("respCode"); model.respMsg = TQuery.GetString("respMsg"); model.sign = TQuery.GetString("sign"); //string json = "{\"agentId\":\"A1000000009\",\"merId\":\"1000000010\",\"orderId\":\"100001261\",\"respCode\":\"00\",\"respMsg\":\"成功\",\"sign\":\"C3735B3E932CA3335ED7258E9DB21524\",\"version\":\"1.0.0\"}"; //model = JsonConvert.DeserializeObject<respTengModel>(json); bool flag = false; //返回后日志记录 Logs.WriteLog("回调参数:" + JsonConvert.SerializeObject(model), "d:\\Log\\Teng", "NoticeWithTeng"); yeepayLogParasDao.Init(Convert.ToInt32(model.orderId), JsonConvert.SerializeObject(model), 2); if (TengDepository.isSign(model)) { if (model.backState == 0)//处理成功 { result = "SUCCESS"; var yeepayLog = yeepayLogDao.Single(Convert.ToInt32(model.orderId)); var pay = payRecordDao.Single(yeepayLog.KeyId); if (pay.State == 10) { Logs.WriteLog($"重复处理:State=10,orderId:{model.orderId},返回结果:{result}", "d:\\Log\\Teng", "NoticeWithTeng"); return(result); } pay.State = 10; pay.DrawState = 10; pay.UTime = DateTime.Now; pay.HandleTime = DateTime.Now; flag = payRecordDao.Update(pay); Logs.WriteLog($"修改支付订单结果:flag={flag}", "d:\\Log\\Teng", "NoticeWithTeng"); //交易成功回调 UsersDepository.NoticeSuccess(pay.ID, pay.UserId); yeepayLogDao.UpdateState(Convert.ToInt32(model.orderId), model.respCode, model.respMsg, 10); } } else { Logs.WriteLog($"签名比对失败:sign:{model.sign}", "d:\\Log\\Teng", "NoticeWithTeng"); } Logs.WriteLog($"返回结果:{result}", "d:\\Log\\Teng", "NoticeWithTeng"); return(result); } }
//腾付通 支付回调 public string NoticePayTeng() { string[] paramtersKey = System.Web.HttpContext.Current.Request.Form.AllKeys; var sortedParamtersKey = from s in paramtersKey orderby s ascending select s; StringBuilder str = new StringBuilder(); str.Append("{"); foreach (string key in sortedParamtersKey) { str.AppendFormat("\"{0}\":\"{1}\",", key, System.Web.HttpContext.Current.Request.Form[key].Trim()); } if (str.Length > 0) { str.Remove(str.Length - 1, 1);//移除最后一个逗号 } str.Append("}"); //返回后日志记录 Logs.WriteLog("页面首次记录:" + str.ToString(), "d:\\Log\\Teng", "NoticePayTeng"); lock (lockNoticePayTeng) { string result = "fail"; respTengModel model = new respTengModel(); model.version = TQuery.GetString("version"); model.agentId = TQuery.GetString("agentId"); model.merId = TQuery.GetString("merId"); model.orderId = TQuery.GetString("orderId"); model.respCode = TQuery.GetString("respCode"); model.respMsg = TQuery.GetString("respMsg"); model.sign = TQuery.GetString("sign"); bool flag = false; //返回后日志记录 Logs.WriteLog("回调参数:" + JsonConvert.SerializeObject(model), "d:\\Log\\Teng", "NoticePayTeng"); yeepayLogParasDao.Init(Convert.ToInt32(model.orderId), JsonConvert.SerializeObject(model), 2); if (TengDepository.isSign(model)) { if (model.backState == 0)//处理成功 { result = "SUCCESS"; var yeepayLog = yeepayLogDao.Single(Convert.ToInt32(model.orderId)); var pay = payRecordDao.Single(yeepayLog.KeyId); if (pay.State == 5) { Logs.WriteLog($"重复处理:orderId:{model.orderId},返回结果:{result}", "d:\\Log\\Teng", "NoticePayTeng"); return(result); } flag = payRecordDao.UpdateState(yeepayLog.KeyId, 5, "支付成功,等待回调"); Logs.WriteLog($"修改订单状态:支付成功,等待回调,orderId:{model.orderId},flag:{flag}", "d:\\Log\\Teng", "NoticePayTeng"); yeepayLogDao.UpdateState(Convert.ToInt32(model.orderId), model.respCode, model.respMsg, 5); //发起代付申请 var ret = ITOrm.Payment.Teng.TengDepository.DebitWithdraw(yeepayLog.ID, (int)Logic.Platform.系统); Logs.WriteLog($"代付申请:json:{JsonConvert.SerializeObject(ret)}", "d:\\Log\\Teng", "NoticePayTeng"); } } else { Logs.WriteLog($"签名比对失败:sign:{model.sign},orderId:{model.orderId}", "d:\\Log\\Teng", "NoticePayTeng"); } Logs.WriteLog($"返回结果:{result}", "d:\\Log\\Teng", "NoticePayTeng"); return(result); } }
public string TengSendMsgCode(int payid) { var result = TengDepository.SendMsgCode(payid, (int)Logic.Platform.系统, Guid.NewGuid().ToString()); return(JsonConvert.SerializeObject(result)); }
public ActionResult TengCashier(int payid, string tengGuid, string code) { var payCashier = payCashierDao.Single(payid); var pay = payRecordDao.Single(payCashier.PayRecordId); var ubk = userBankCardDao.Single(payCashier.UbkId); JObject data = new JObject(); data["amount"] = pay.Amount.ToString("F2"); data["ordernumber"] = payCashier.LogId; data["BankCode"] = ubk.BankCode; data["BankName"] = ubk.BankName; data["BankCard"] = ubk.BankCard; data["Mobile"] = ITOrm.Utility.StringHelper.Util.GetHiddenString(ubk.Mobile, 3, 4); ResultModel result = new ResultModel(data); if (!ITOrm.Utility.StringHelper.TypeParse.IsNumeric(code)) { result.backState = -100; result.message = "验证码必须为数字"; return(View(result)); } if (tengGuid.Length != 36) { result.backState = -100; result.message = "未获取短信"; return(View(result)); } if (payCashier.State == 1) { result.backState = -200; result.message = "订单已支付完成"; return(View(result)); } else if (payCashier.State == -1) { result.backState = -200; result.message = "订单已过期"; return(View(result)); } var validResult = TengDepository.ValidateMobileCode(payid, (int)Logic.Platform.系统, tengGuid, code); if (validResult.backState == 0)//短信验证成功 { //respTengModel payResult = new respTengModel(); //payResult.respCode = "00"; //payResult.respMsg = "支付成功"; var payResult = TengDepository.DebitPayment(payid, (int)Logic.Platform.系统); //var payResult = JsonConvert.DeserializeObject<respTengModel>("{\"respCode\":\"E99999\",\"respMsg\":\"支付卡已超过有效期\",\"sign\":\"B231ED5797458C3D02374D14317E59EA\"}"); userEventDao.UserEventInit((int)Logic.Platform.系统, payCashier.UserId, Ip.GetClientIp(), payResult.backState == 0 ? 1 : 0, "Pay", "TengCashier", $"{{payid:{payid},code:{code},tengGuid:{tengGuid}}}"); if (payResult.backState == 0)//支付成功 { result.backState = 0; result.message = "支付成功"; return(new RedirectResult("/itapi/pay/success?backState=0&message=支付成功")); } result.backState = -100; result.message = payResult.respMsg; return(View(result)); } else//短信验证失败 { result.backState = -100; result.message = validResult.message; return(View(result)); } }