public int Init(int ChannelType, int LogId, int UbkId, int UserId, int PayRecordId) { PayCashier payc = new PayCashier(); payc.ChannelType = ChannelType; payc.LogId = LogId; payc.UbkId = UbkId; payc.UserId = UserId; payc.PayRecordId = PayRecordId; return(Insert(payc)); }
public static respMasgetModel <respPayConfirmpayModel> PayConfirmpay(int PayId, string code, int Platform, Logic.ChannelType chanel) { string LogDic = "确认支付"; int TypeId = (int)chanel; PayCashier pay = payCashierDao.Single(PayId); respBackPayModel respBP = JsonConvert.DeserializeObject <respBackPayModel>(pay.Value); MasgetUser mUser = masgetUserDao.Single(" UserId=@UserId and TypeId=@TypeId", new { pay.UserId, TypeId }); if (mUser == null) { Logs.WriteLog($"未查到用户:UserId:{pay.UserId},Platform:{Platform},PayId:{pay.ID}", MasgetLogDic, LogDic); return(new respMasgetModel <respPayConfirmpayModel>() { ret = -9999, message = "用户未进件" }); } Users user = usersDao.Single(pay.UserId); bool flag = false; //获取请求流水号 int requestId = yeepayLogDao.Init((int)Masget.Enums.MasgetType.确认支付, pay.UserId, Platform, pay.PayRecordId, (int)chanel); Logs.WriteLog($"获取请求流水号:UserId:{pay.UserId},Platform:{Platform},requestId:{requestId},keyId:{pay.PayRecordId}", MasgetLogDic, LogDic); reqPayConfirmpayModel model = new reqPayConfirmpayModel(); model.authcode = code; model.ordercode = respBP.ordercode; //model.accountrule = "1"; string json = Order <reqPayConfirmpayModel>(model); var resp = PostUrl <respPayConfirmpayModel>(requestId, "masget.pay.compay.router.confirmpay", json, LogDic, chanel, mUser.ID); if (resp.backState == 0) { //成功修改支付表状态 pay.State = 1; pay.UTime = DateTime.Now; flag = payCashierDao.Update(pay); Logs.WriteLog($"收银表状态修改:UserId:{pay.UserId},Platform:{Platform},requestId:{requestId},PayCashierId:{PayId},flag={flag}", MasgetLogDic, LogDic); var payRecord = payRecordDao.Single(pay.PayRecordId); payRecord.State = 5;//等待回调 payRecord.UTime = DateTime.Now; flag = payRecordDao.Update(payRecord); Logs.WriteLog($"收款记录修改:UserId:{pay.UserId},Platform:{Platform},requestId:{requestId},PayRecordId:{pay.PayRecordId},flag={flag}", MasgetLogDic, LogDic); } return(resp); }
public static ResultModelData <JObject> ValidateMobileCode(int payCId, int Platform, string tengGuid, string Code) { bool flag = false; ResultModelData <JObject> ret = new ResultModelData <JObject>(); ret.backState = 0; ret.message = "验证成功"; string LogDic = "验证收银短信"; PayCashier payc = payCashierDao.Single(payCId); //获取请求流水号 int requestId = yeepayLogDao.Init((int)Teng.Enums.TengType.验证收银短信, payc.UserId, Platform, payc.PayRecordId, (int)Logic.ChannelType.腾付通); Logs.WriteLog($"获取请求流水号:UserId:{payc.UserId},Platform:{Platform},requestId:{requestId}", TengLogDic, LogDic); string mobileKey = ITOrm.Utility.Const.Constant.teng_mobile_code + tengGuid; if (!ITOrm.Utility.Cache.MemcachHelper.Exists(mobileKey)) { ret.backState = -100; ret.message = "验证码已过期"; } JObject cacheMobileCode = JObject.Parse(ITOrm.Utility.Cache.MemcachHelper.Get(mobileKey).ToString()); if (Code.Trim() != cacheMobileCode["code"].ToString()) { ret.backState = -100; ret.message = "手机验证码错误"; } #region 日志处理 //返回后日志记录 yeepayLogParasDao.Init(requestId, JsonConvert.SerializeObject(ret), 1); //易宝日志状态更新 flag = yeepayLogDao.UpdateState(requestId, ret.backState.ToString(), ret.message, ret.backState == 0 ? 1 : ret.backState); #endregion return(ret); }
public static respMasgetModel <respBackPayModel> BackPay(int UbkId, decimal Amount, int Platform, Logic.ChannelType chanel) { string LogDic = "订单支付"; int TypeId = (int)chanel; BankTreatyApply bta = bankTreatyApplyDao.Single(" UbkId=@UbkId and ChannelType=@TypeId", new { UbkId, TypeId }); MasgetUser mUser = masgetUserDao.Single(" UserId=@UserId and TypeId=@TypeId", new { bta.UserId, TypeId }); if (mUser == null) { Logs.WriteLog($"未查到用户:UserId:{bta.UserId},Platform:{Platform},BtaId:{bta.ID}", MasgetLogDic, LogDic); return(new respMasgetModel <respBackPayModel>() { ret = -9999, message = "用户未进件" }); } Users user = usersDao.Single(bta.UserId); bool flag = false; //获取请求流水号 int keyId = payRecordDao.Init(UbkId, Amount, Platform, Ip.GetClientIp(), (int)chanel); //int keyId = payRecordDao.Init(bta.UserId, Amount, Platform, Ip.GetClientIp(), bta.BankCard); Logs.WriteLog($"创建支付记录:UserId:{bta.UserId},Platform:{Platform},keyId:{keyId},Amount={Amount}", MasgetLogDic, LogDic); int requestId = yeepayLogDao.Init((int)Masget.Enums.MasgetType.订单支付, bta.UserId, Platform, keyId, (int)chanel); Logs.WriteLog($"获取请求流水号:UserId:{bta.UserId},Platform:{Platform},requestId:{requestId},keyId:{keyId}", MasgetLogDic, LogDic); reqBackPayModel model = new reqBackPayModel(); model.ordernumber = requestId.ToString(); model.body = "SJ商品购买"; model.amount = (Amount * 100).ToString("F0"); model.businesstype = "1001"; model.paymenttypeid = "25"; model.backurl = MasgetNoticeUrl + "backpayNotice"; var ext = new PayExtraParamsModel(); ext.password = ""; ext.authcode = ""; ext.treatycode = bta.Treatycode; model.payextraparams = Order <PayExtraParamsModel>(ext); //model.accountrule = "1"; string json = Order <reqBackPayModel>(model); var resp = PostUrl <respBackPayModel>(requestId, "masget.pay.compay.router.back.pay", json, LogDic, chanel, mUser.ID); if (resp.backState == 0) { //添加收银记录表 PayCashier payCash = new PayCashier(); payCash.ChannelType = (int)chanel; payCash.Value = JsonConvert.SerializeObject(resp.data); payCash.LogId = requestId; payCash.State = 0; payCash.UserId = bta.UserId; payCash.PayRecordId = keyId; payCash.UbkId = UbkId; int payCId = payCashierDao.Insert(payCash); Logs.WriteLog($"添加收银记录表:UserId:{bta.UserId},Platform:{Platform},requestId:{requestId},payCId:{payCId}", MasgetLogDic, LogDic); resp.url = $"{Constant.CurrentApiHost}itapi/pay/cashier?payid={payCId}"; } return(resp); }
/// <summary> /// Delete,根据实体对象删除 /// </summary> /// <returns>返回,成功:true,失败:false</returns> public bool Delete(PayCashier entity) { return(dal.Update(entity)); }
/// <summary> /// 插入数据 /// </summary> /// <returns>返回,成功:true,失败:false</returns> public int Insert(PayCashier entity) { return(dal.Insert(entity)); }
public static ResultModelData <JObject> SendMsgCode(int payCId, int Platform, string tengGuid) { ResultModelData <JObject> ret = new ResultModelData <JObject>(); ret.backState = -100; ret.message = "发送失败"; string LogDic = "发送收银短信"; PayCashier payc = payCashierDao.Single(payCId); PayRecord pay = payRecordDao.Single(payc.PayRecordId); UserBankCard ubk = userBankCardDao.Single(payc.UbkId); int typeId = (int)Teng.Enums.TengType.发送收银短信; int cnt = yeepayLogDao.Count(" UserId=@UserId and KeyId=@PayRecordId and ChannelType=@ChannelType and typeId=@typeId ", new { payc.UserId, payc.PayRecordId, payc.ChannelType, typeId }); if (cnt > 4) { ret.message = "该订单短信发送次数超限"; return(ret); } //获取请求流水号 int requestId = yeepayLogDao.Init(typeId, payc.UserId, Platform, payc.PayRecordId, (int)Logic.ChannelType.腾付通); Logs.WriteLog($"获取请求流水号:payCId:{payCId},UserId:{payc.UserId},Platform:{Platform},tengGuid:{tengGuid},requestId:{requestId}", TengLogDic, LogDic); bool flag = false; //发送短信 var resultMsg = SystemSendMsg.Send(Logic.EnumSendMsg.腾付通收银短信, ubk.Mobile, pay.Amount); SendMsg model = new SendMsg(); model.UserId = payc.UserId; model.TypeId = (int)Logic.EnumSendMsg.腾付通收银短信; model.Context = resultMsg.content; model.CTime = DateTime.Now; model.IP = ITOrm.Utility.Client.Ip.GetClientIp(); model.Merchant = resultMsg.Merchant; model.Mobile = resultMsg.Mobile; model.Platform = Platform; model.Service = "teng"; model.RelationId = resultMsg.relationId; model.State = resultMsg.backState ? 2 : 1; model.UTime = DateTime.Now; int result = sendMsgDao.Insert(model); if (resultMsg.backState && result > 0) { string key = Constant.teng_mobile_code + tengGuid; var cacheData = new JObject(); cacheData["mobile"] = resultMsg.Mobile; cacheData["code"] = resultMsg.code; MemcachHelper.Set(key, cacheData.ToString(), ITOrm.Utility.Const.Constant.mobile_code_expires); var data = new JObject(); data["tengGuid"] = tengGuid; if (Constant.IsDebug) { data["code"] = resultMsg.code; } ret.backState = 0; ret.message = "发送成功"; ret.Data = data; } #region 日志处理 //返回后日志记录 yeepayLogParasDao.Init(requestId, JsonConvert.SerializeObject(ret), 1); //易宝日志状态更新 flag = yeepayLogDao.UpdateState(requestId, ret.backState.ToString(), ret.message, ret.backState == 0 ? 1 : ret.backState); #endregion return(ret); }
public static respTengModel DebitPayment(int payCId, int Platform) { string LogDic = "支付接口"; bool flag = false; PayCashier payCashier = payCashierDao.Single(payCId); PayRecord pay = payRecordDao.Single(payCashier.PayRecordId); //获取请求流水号 int requestId = yeepayLogDao.Init((int)Teng.Enums.TengType.支付接口, pay.UserId, Platform, pay.ID, (int)Logic.ChannelType.腾付通); Logs.WriteLog($"获取请求流水号:UserId:{pay.UserId},Platform:{Platform},requestId:{requestId},payCId:{payCId}", TengLogDic, LogDic); var user = usersDao.Single(payCashier.UserId); var withBank = userBankCardDao.Single(" TypeId=0 and UserId=@UserId ", new { pay.UserId }); var payBank = userBankCardDao.Single(payCashier.UbkId); reqTengDebitPaymentModel model = new reqTengDebitPaymentModel(); model.orderId = requestId.ToString(); model.name = user.RealName; model.idCardNo = user.IdCard; model.phone = pay.PayerPhone; model.txnAmt = (pay.Amount * 100M).ToString("F0"); model.settleAmt = (pay.ActualAmount * 100M).ToString("F0");//清算金额 model.notifyUrl = TengNoticeUrl + "NoticePayTeng"; model.bankCardNo = pay.BankCard; model.lastThreeNo = payBank.CVN2; model.cardExpYear = payBank.ExpiresYear; model.cardExpMonth = payBank.ExpiresMouth; model.withdrawUrl = TengNoticeUrl + "NoticeWithTeng"; model.settleCardNo = pay.DrawBankCard; model.settlePhone = withBank.Mobile; //model.accountrule = "1"; JObject json = Order <reqTengDebitPaymentModel>(model); #region des签名对象 JObject data = new JObject(); JObject reqData = JObject.Parse(json.ToString()); data["ExpressData"] = json; data["EncryptionData"] = reqData; reqData["name"] = ITOrm.Utility.Encryption.EncryptionHelper.DesEncrypt(reqMd5Key, reqData["name"].ToString()); reqData["idCardNo"] = ITOrm.Utility.Encryption.EncryptionHelper.DesEncrypt(reqMd5Key, reqData["idCardNo"].ToString()); reqData["phone"] = ITOrm.Utility.Encryption.EncryptionHelper.DesEncrypt(reqMd5Key, reqData["phone"].ToString()); reqData["bankCardNo"] = ITOrm.Utility.Encryption.EncryptionHelper.DesEncrypt(reqMd5Key, reqData["bankCardNo"].ToString()); reqData["lastThreeNo"] = ITOrm.Utility.Encryption.EncryptionHelper.DesEncrypt(reqMd5Key, reqData["lastThreeNo"].ToString()); reqData["cardExpYear"] = ITOrm.Utility.Encryption.EncryptionHelper.DesEncrypt(reqMd5Key, reqData["cardExpYear"].ToString()); reqData["cardExpMonth"] = ITOrm.Utility.Encryption.EncryptionHelper.DesEncrypt(reqMd5Key, reqData["cardExpMonth"].ToString()); reqData["settleCardNo"] = ITOrm.Utility.Encryption.EncryptionHelper.DesEncrypt(reqMd5Key, reqData["settleCardNo"].ToString()); reqData["settlePhone"] = ITOrm.Utility.Encryption.EncryptionHelper.DesEncrypt(reqMd5Key, reqData["settlePhone"].ToString()); #endregion var resp = PostUrl <respTengModel>(requestId, "debitPayment.do", data, LogDic); if (resp.backState == 0) { //更新收款记录 flag = payRecordDao.UpdateState(payCashier.PayRecordId, 1, resp.respMsg); Logs.WriteLog($"更新收款记录:UserId:{payCashier.UserId},Platform:{Platform},requestId:{requestId},PayRecordId:{payCashier.PayRecordId},flag:{flag}", TengLogDic, LogDic); //更新收银台 payCashier.State = 2; payCashier.UTime = DateTime.Now; flag = payCashierDao.Update(payCashier); Logs.WriteLog($"更新收银台:UserId:{payCashier.UserId},Platform:{Platform},requestId:{requestId},PayCId:{payCashier.ID},flag:{flag}", TengLogDic, LogDic); } else if (resp.respCode == "YH99") { int keyId = 10009;//腾付通通道记录ID //关闭通道 KeyValue kv = keyValueDao.Single(keyId); kv.State = -1; kv.UTime = DateTime.Now; kv.Remark = $"{DateTime.Now}自动关闭"; keyValueDao.Update(kv); MemcachHelper.Delete(Constant.list_keyvalue_key + (int)Logic.KeyValueType.支付通道管理);//清理缓存 //添加定时任务记录 var stime = JObject.Parse(kv.Value)["StartTime"]; DateTime execTime = Convert.ToDateTime(DateTime.Now.ToString($"yyyy-MM-dd {stime}")).AddDays(1); JObject value = new JObject(); value["keyId"] = keyId; value["remark"] = "腾付通通道定时开启(自动创建)"; timedTaskDao.Init(Logic.TimedTaskType.通道开启, execTime, value.ToString()); } if (resp.backState != 0) { //更新收款记录 flag = payRecordDao.UpdateState(payCashier.PayRecordId, -1, resp.respMsg); //更新收银台 payCashier.State = -1; payCashier.UTime = DateTime.Now; flag = payCashierDao.Update(payCashier); } return(resp); }