/// <summary> /// 判断当前支付宝通道是否在今日列表中 /// </summary> /// <returns></returns> public bool OrderMonitor(int tid) { string hcmc = "dqsyzfb"; System.Collections.Generic.List <JMP.Model.Query.OrderedInterface> lst; if (JMP.TOOL.CacheHelper.IsCache(hcmc)) { lst = JMP.TOOL.CacheHelper.GetCaChe <System.Collections.Generic.List <JMP.Model.Query.OrderedInterface> >(hcmc); } else { var interBll = new JMP.BLL.jmp_interface(); lst = interBll.GetTodayOrderedInterfaces(WeekDateTime.GetCurrentOrderTableName); JMP.TOOL.CacheHelper.CacheObjectLocak <System.Collections.Generic.List <JMP.Model.Query.OrderedInterface> >(lst, hcmc, 10); } int sl = lst.Where(x => (x.InterfaceId == tid)).Count(); if (sl > 0) { return(false); } else { return(true); } }
/// <summary> /// 获取公众号转微信wap账号信息 /// </summary> /// <param name="cache">缓存key</param> /// <param name="apptype">风控配置表id</param> /// <param name="appid">应用id</param> /// <returns></returns> private SelectInterface SelectUserInfo(string cache, int apptype, int appid, int infoTimes) { SelectInterface SeIn = new SelectInterface(); try { DataTable dt = new DataTable(); JMP.BLL.jmp_interface bll = new JMP.BLL.jmp_interface(); if (JMP.TOOL.CacheHelper.IsCache(cache)) { dt = JMP.TOOL.CacheHelper.GetCaChe <DataTable>(cache); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string l_str = dt.Rows[row]["l_str"].ToString(); SeIn.UserKey = l_str;//获取key SeIn.PayId = int.Parse(dt.Rows[row]["l_id"].ToString()); } else { dt = bll.SelectPay("GZHZWAP", apptype, appid); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string l_str = dt.Rows[row]["l_str"].ToString(); SeIn.UserKey = l_str; //获取公众号转微信wap支付key SeIn.PayId = int.Parse(dt.Rows[row]["l_id"].ToString()); JMP.TOOL.CacheHelper.CacheObjectLocak <DataTable>(dt, cache, infoTimes); //存入缓存 } else { PayApiDetailErrorLogger.UpstreamPaymentErrorLog("应用id为:" + appid + "的支付通道为空!风控id为:" + apptype + ",获取缓存失败后,从数据库未查询到相关信息!", summary: "公众号转微信wap支付支付接口错误", channelId: SeIn.PayId); } } } else { dt = bll.SelectPay("GZHZWAP", apptype, appid); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string l_str = dt.Rows[row]["l_str"].ToString(); SeIn.UserKey = l_str; //获取公众号转微信wap支付key JMP.TOOL.CacheHelper.CacheObjectLocak <DataTable>(dt, cache, infoTimes); //存入缓存 } else { PayApiDetailErrorLogger.UpstreamPaymentErrorLog("应用id为:" + appid + "的支付通道为空!风控id为:" + apptype + ",从数据库未查询到相关信息!", summary: "公众号转微信wap支付支付接口错误", channelId: SeIn.PayId); } } } catch (Exception e) { string bcxx = "报错提示" + e.Message + "报错对象:" + e.Source + "报错方法:" + e.TargetSite + "报错信息:" + e.ToString();//报错信息 PayApiDetailErrorLogger.UpstreamPaymentErrorLog(bcxx, summary: "公众号转微信wap支付支付接口错误应用类型ID:" + apptype, channelId: SeIn.PayId); } return(SeIn); }
public WxPayConfig(int tid) { #region 获取微信口信息 try { DataTable dt = new DataTable(); var zf = new JMP.BLL.jmp_interface(); string wxzfjk = "wxzfjk" + tid;//组装缓存key值 if (JMP.TOOL.CacheHelper.IsCache(wxzfjk)) { string cache = JMP.TOOL.CacheHelper.GetCaChe(wxzfjk).ToString(); if (!String.IsNullOrEmpty(cache)) { string[] str = cache.Split(','); MCHID = str[0]; //获取微信账号 KEY = str[1].Replace("\r", "").Replace("\n", "").Trim(); //获取微信私钥 APPID = str[2].Replace("\r", "").Replace("\n", "").Trim(); //获取微信appid APPSECRET = cache.Split(',').Length > 3 ? str[3].Replace("\r", "").Replace("\n", "").Trim() : null; //获取微信appkey } else { //AddLocLog.AddLog(1, 4, "", "微信支付接口错误", "应用类型id为:" + tid + "的支付通道为空!");//写入报错日志 PayApiGlobalErrorLogger.Log("应用类型id为:" + tid + "的支付通道为空!", summary: "微信支付接口错误"); } } else { string strs = zf.strzf_monitor(tid); if (!String.IsNullOrEmpty(strs)) { string[] str = strs.Split(','); MCHID = str[0]; //获取微信账号 KEY = str[1].Replace("\r", "").Replace("\n", "").Trim(); //获取微信私钥 APPID = str[2].Replace("\r", "").Replace("\n", "").Trim(); //获取微信appid APPSECRET = strs.Split(',').Length > 3 ? str[3].Replace("\r", "").Replace("\n", "").Trim() : null; //获取微信appkey JMP.TOOL.CacheHelper.CacheObject(wxzfjk, strs, 1); //存入缓存 } else { //AddLocLog.AddLog(1, 4, "", "微信支付接口错误", "应用类型id为:" + tid + "的支付通道为空!");//写入报错日志 PayApiGlobalErrorLogger.Log("应用类型id为:" + tid + "的支付通道为空!", summary: "微信支付接口错误"); } } } catch (Exception e) { string bcxx = "报错提示" + e.Message + "报错对象:" + e.Source + "报错方法:" + e.TargetSite + "报错信息:" + e.ToString();//报错信息 //AddLocLog.AddLog(1, 4, "", "微信支付接口错误", bcxx);//写入报错日志 PayApiGlobalErrorLogger.Log(bcxx, summary: "微信支付接口错误"); } #endregion }
public ActionResult SelectInterface() { #region 查询 int pageCount = 0; int pageIndexs = string.IsNullOrEmpty(Request["pageIndexs"]) ? 1 : Int32.Parse(Request["pageIndexs"]); //当前页 int PageSize = string.IsNullOrEmpty(Request["PageSize"]) ? 20 : Int32.Parse(Request["PageSize"]); //每页显示数量 string sql = " select a .l_id, a .l_str, a .l_sort, a .l_isenable, a .l_paymenttype_id,b.p_name,b.p_type from jmp_interface a left join jmp_paymenttype b on b.p_id=a.l_paymenttype_id where 1=1 and a.l_isenable='1' "; string Order = " order by l_id desc "; int searchDesc = string.IsNullOrEmpty(Request["searchDesc"]) ? 0 : Int32.Parse(Request["searchDesc"]); //排序方式 int auditstate = string.IsNullOrEmpty(Request["auditstate"]) ? 0 : Int32.Parse(Request["auditstate"]); //支付类型 int type = string.IsNullOrEmpty(Request["type"]) ? 0 : Int32.Parse(Request["type"]); //查询条件选择 string sea_name = string.IsNullOrEmpty(Request["sea_name"]) ? "" : Request["sea_name"]; //查询条件内容 if (type > 0 && !string.IsNullOrEmpty(sea_name)) { switch (type) { case 1: sql += " and a.l_id='" + sea_name + "' "; break; case 2: sql += " and b.p_name='" + sea_name + "' "; break; } } if (auditstate > -1) { sql += " and b.p_type='" + auditstate + "' "; } if (searchDesc == 1) { Order = " order by l_id "; } else { Order = " order by l_id desc "; } JMP.BLL.jmp_interface bll = new JMP.BLL.jmp_interface(); List <JMP.MDL.jmp_interface> list = new List <JMP.MDL.jmp_interface>(); list = bll.SelectList(sql, Order, pageIndexs, PageSize, out pageCount); ViewBag.pageIndexs = pageIndexs; ViewBag.PageSize = PageSize; ViewBag.pageCount = pageCount; ViewBag.list = list; ViewBag.searchDesc = searchDesc; ViewBag.type = type; ViewBag.auditstate = auditstate; ViewBag.sea_name = sea_name; #endregion return(View()); }
/// <summary> /// 根据应用id查询对应的支付通道 /// </summary> /// <param name="cache">缓存名称</param> /// <param name="appid">应用id</param> /// <param name="apptype">风控配置表id</param> /// <returns></returns> private SelectInterface SelectUserInfo(string cache, int appid, int apptype, int infoTimes) { SelectInterface SeIn = new SelectInterface(); DataTable dt = new DataTable(); JMP.BLL.jmp_interface blls = new JMP.BLL.jmp_interface(); if (JMP.TOOL.CacheHelper.IsCache(cache)) { dt = JMP.TOOL.CacheHelper.GetCaChe <DataTable>(cache); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); SeIn.PayId = int.Parse(dt.Rows[row]["l_id"].ToString()); SeIn.minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 SeIn.maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 } else { dt = blls.SelectPay("WX", apptype, appid); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); SeIn.PayId = int.Parse(dt.Rows[row]["l_id"].ToString()); SeIn.minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 SeIn.maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 JMP.TOOL.CacheHelper.CacheObjectLocak <DataTable>(dt, cache, infoTimes); //存入缓存 } else { PayApiDetailErrorLogger.UpstreamPaymentErrorLog("应用id为:" + appid + "的支付通道为空!风控id为:" + apptype + ",获取缓存失败后,从数据库未查询到相关信息!", summary: "微信支付接口错误", channelId: SeIn.PayId); } } } else { dt = blls.SelectPay("WX", apptype, appid); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); SeIn.PayId = int.Parse(dt.Rows[row]["l_id"].ToString()); SeIn.minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 SeIn.maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 JMP.TOOL.CacheHelper.CacheObjectLocak <DataTable>(dt, cache, infoTimes); //存入缓存 } else { PayApiDetailErrorLogger.UpstreamPaymentErrorLog("应用id为:" + appid + "的支付通道为空!风控id为:" + apptype + ",从数据未查询到相关信息!", summary: "微信支付接口错误", channelId: SeIn.PayId); } } return(SeIn); }
public bool checkorder() { //获取最近10分钟支付宝订单 var interBll = new JMP.BLL.jmp_interface(); int sl = interBll.GetTodayOrderedInterfaces_byid(JMP.TOOL.WeekDateTime.GetCurrentOrderTableName); if (sl > 0) { return(true); } else { return(false); } }
public int pay_id = 0;//支付渠道id #endregion /// <summary> /// 构造函数 /// </summary> /// <param name="interfaceId">通道ID</param> public ConfigMonitor(int interfaceId) { #region 获取支付宝接口信息 var zfbjkhc = "ZFBjkhc_monitor_" + interfaceId;//组装缓存key值 try { if (CacheHelper.IsCache(zfbjkhc)) { var zfbpz = CacheHelper.GetCaChe(zfbjkhc).ToString(); if (!string.IsNullOrEmpty(zfbpz)) { var payzf = zfbpz.Split(','); private_key = payzf[1].Replace("\r", "").Replace("\n", "").Trim(); //获取缓存数据中的支付宝私钥 partner = payzf[0].Replace("\r", "").Replace("\n", "").Trim(); //获取缓存数据中的支付宝账号 } } else { var zf = new JMP.BLL.jmp_interface(); var str = zf.strzf_monitor(interfaceId); if (!string.IsNullOrEmpty(str)) { var payzf = str.Split(','); partner = payzf[0].Replace("\r", "").Replace("\n", "").Trim(); //获取支付宝账号 private_key = payzf[1].Replace("\r", "").Replace("\n", "").Trim(); //获取支付宝私钥 CacheHelper.CacheObject(zfbjkhc, str, 1); //存入缓存 } } } catch (Exception e) { var bcxx = "报错提示" + e.Message + "报错对象:" + e.Source + "报错方法:" + e.TargetSite + "报错信息:" + e.ToString();//报错信息 //AddLocLog.AddLog(1, 4, "", "支付宝支付接口错误通道ID:" + interfaceId, bcxx);//写入报错日志 PayApiGlobalErrorLogger.Log(bcxx, summary: "支付宝支付接口错误通道ID:" + interfaceId); throw; } #endregion seller_id = partner; //public_key = @"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnxj/9qwVfgoUh/y2W89L6BkRAFljhNhgPdyPuBV64bfQNN1PjbCzkIM6qRdKBoLPXmKKMiFYnkd6rAoprih3/PrQEB/VsW8OoM8fxn67UDYuyBTqA23MML9q1+ilIZwBC2AQ2UBVOrFXfFl75p6/B5KsiNG9zpgmLCUYuLkxpLQIDAQAB"; public_key = @"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDI6d306Q8fIfCOaTXyiUeJHkrIvYISRcc73s3vF1ZT7XN8RNPwJxo8pWaJMmvyTn9N4HQ632qJBVHf8sxHi/fEsraprwCtzvzQETrNRwVxLO5jVmRGi60j8Ue1efIlzPXV9je9mkjzOmdssymZkh2QhUrCmZYI/FCEa3/cNMW0QIDAQAB"; input_charset = "utf-8"; sign_type = "RSA"; }
/// <summary> /// 获取浦发账号信息 截取到通道id /// </summary> /// <param name="cache">缓存key</param> /// <param name="apptype">风控配置表id</param> /// <param name="appid">应用id</param> /// <returns></returns> private int SelectUserInfo(int apptype, int appid) { int PayId = 0; string cache = "pfyhwxgzhpay" + appid; try { DataTable dt = new DataTable(); JMP.BLL.jmp_interface bll = new JMP.BLL.jmp_interface(); if (JMP.TOOL.CacheHelper.IsCache(cache)) { dt = JMP.TOOL.CacheHelper.GetCaChe <DataTable>(cache); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); PayId = Int32.Parse(dt.Rows[row]["l_id"].ToString()); } else { PayApiDetailErrorLogger.UpstreamPaymentErrorLog("应用id为:" + appid + "的支付通道为空!风控id为:" + apptype, channelId: PayId); } } else { dt = bll.SelectPay("PFWXGZH", apptype, appid); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); PayId = Int32.Parse(dt.Rows[row]["l_id"].ToString()); JMP.TOOL.CacheHelper.CacheObjectLocak <DataTable>(dt, cache, int.Parse(ConfigurationManager.AppSettings["CacheTime"].ToString()));//存入缓存 } else { PayApiDetailErrorLogger.UpstreamPaymentErrorLog("应用id为:" + appid + "的支付通道为空!风控id为:" + apptype, channelId: PayId); } } } catch (Exception e) { string bcxx = "报错提示" + e.Message + "报错对象:" + e.Source + "报错方法:" + e.TargetSite + "报错信息:" + e.ToString();//报错信息 PayApiDetailErrorLogger.UpstreamPaymentErrorLog(bcxx, summary: "浦发银行微信公众号支付接口错误", channelId: PayId); } return(PayId); }
/// <summary> /// 根据通道id查询通道信息 /// </summary> /// <param name="pid">通道id</param> /// <returns>返回通道key值</returns> public string SelectKey(int pid) { string key = ""; try { var zf = new JMP.BLL.jmp_interface(); string str = zf.strzf_monitor(pid);//获取通道key值 if (!string.IsNullOrEmpty(str)) { key = str.Split(',')[1]; } return(key); } catch (Exception ex) { PayApiDetailErrorLogger.UpstreamNotifyErrorLog("通道id:" + pid + ",错误信息:" + ex.ToString(), summary: "通知接口查询通道信息错误", channelId: pid); return(key); } }
/// <summary> /// 获取通道账号 /// </summary> /// <param name="pid">通道id</param> /// <returns></returns> public string SelectOrder(int pid) { string Order = ""; try { var zf = new JMP.BLL.jmp_interface(); string str = zf.strzf_monitor(pid);//获取通道账号值 if (!string.IsNullOrEmpty(str)) { Order = str.Split(',')[0]; } return(Order); } catch (Exception ex) { //AddLocLog.AddLog(1, 4, HttpContext.Current.Request.UserHostAddress, "通知接口查询通道信息错误", "通道id:" + pid + ",错误信息:" + ex.ToString());//写入报错日志 PayNotifyGlobalErrorLogger.Log("通道id:" + pid + ",错误信息:" + ex.ToString(), summary: "通知接口查询通道信息错误"); return(Order); } }
public ContentResult Monitor() { var tmpId = Request.QueryString["tid"] ?? "0"; var auto = Request.QueryString["auto"] ?? "0"; var tid = Convert.ToInt32(tmpId); if (tid == 0) { return(new ContentResult { Content = "TID参数错误" }); } //根据通道ID获取通道的KEY的签名 var channel = new JMP.BLL.jmp_interface().GetModel(tid); //获取通道的支付类型 var paymentTypeModel = new JMP.BLL.jmp_paymenttype().GetModel(channel.l_paymenttype_id); if (paymentTypeModel.p_type > 2) { return(new ContentResult { Content = "暂时不支持【支付宝,微信】以外的通道检测!" }); } //需要排除通道检测的通道编码集合 var excludes = new List <string> { "MPAPI" }; if (excludes.Contains(paymentTypeModel.p_extend)) { return(new ContentResult { Content = "被排除检测的支付通道!" }); } //创建通道接口实例 var payChannelMonitor = PayChannelFactory.Creator(paymentTypeModel.p_type); payChannelMonitor.AllowCheck = true; if (auto == "1") { payChannelMonitor.AllowAutoCheck = true; } else { payChannelMonitor.AllowAutoCheck = false; } payChannelMonitor.Tid = tid; //当检测为自动模式并存在于今天的通道中 if (payChannelMonitor.AllowAutoCheck == true && paymentTypeModel.p_type == 1 && OrderMonitor(tid)) { return(new ContentResult { Content = "跳过未使用支付宝通道的自动检测" }); } //检测支付通道是否正常 var success = CheckPayChannel(payChannelMonitor); if (success) { var content = string.Format("通道[{0}(编号:{1})]检测完成,状态:{2}", channel.l_corporatename, channel.l_id, success ? "正常" : "异常"); var monitor = payChannelMonitor as ZhiFuBaoPayChannelMonitor; if (monitor != null && payChannelMonitor.AllowAutoCheck == false) { content = monitor.AliPayForm; } return(new ContentResult { Content = content }); } else { //支付通道异常,并自动检测时发送提示短信 if (payChannelMonitor.AllowAutoCheck == true) { SendMessage(channel); } } return(new ContentResult { Content = string.Format("通道[{0}(编号:{1})]检测完成,状态:{2}", channel.l_corporatename, channel.l_id, success ? "正常" : "异常") }); }
/// <summary> /// 获取汇元网账号信息 /// </summary> /// <param name="cache">缓存key</param> /// <param name="apptype">风控配置表id</param> /// <param name="appid">应用id</param> /// <returns></returns> private SelectInterface SelectUserInfo(string cache, int apptype, int appid, int infoTimes) { SelectInterface SeIn = new SelectInterface(); try { DataTable dt = new DataTable(); JMP.BLL.jmp_interface bll = new JMP.BLL.jmp_interface(); if (JMP.TOOL.CacheHelper.IsCache(cache)) { dt = JMP.TOOL.CacheHelper.GetCaChe <DataTable>(cache); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] paypz = dt.Rows[row]["l_str"].ToString().Split(','); SeIn.UserId = paypz[0].Replace("\r", "").Replace("\n", "").Trim(); //获取缓存数据中的汇元QQwap支付账号 SeIn.UserKey = paypz[1].Replace("\r", "").Replace("\n", "").Trim(); //获取缓存数据中的汇元QQwap支付key SeIn.PayId = int.Parse(dt.Rows[row]["l_id"].ToString()); SeIn.minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 SeIn.maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 SeIn.RequestUrl = paypz.Length > 2 ? paypz[2].Replace("\r", "").Replace("\n", "").Trim() : null; SeIn.GotoURL = paypz.Length > 3 ? paypz[3].Replace("\r", "").Replace("\n", "").Trim() : null; SeIn.ReturnUrl = paypz.Length > 4 ? paypz[4].Replace("\r", "").Replace("\n", "").Trim() : null; } else { dt = bll.SelectPay("HYQQWAP", apptype, appid); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] paypz = dt.Rows[row]["l_str"].ToString().Split(','); SeIn.UserId = paypz[0].Replace("\r", "").Replace("\n", "").Trim(); //获取汇元QQwap支付账号 SeIn.UserKey = paypz[1].Replace("\r", "").Replace("\n", "").Trim(); //获取汇元QQwap支付key SeIn.PayId = int.Parse(dt.Rows[row]["l_id"].ToString()); SeIn.minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 SeIn.maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 SeIn.RequestUrl = paypz.Length > 2 ? paypz[2].Replace("\r", "").Replace("\n", "").Trim() : null; SeIn.GotoURL = paypz.Length > 3 ? paypz[3].Replace("\r", "").Replace("\n", "").Trim() : null; SeIn.ReturnUrl = paypz.Length > 4 ? paypz[4].Replace("\r", "").Replace("\n", "").Trim() : null; JMP.TOOL.CacheHelper.CacheObjectLocak <DataTable>(dt, cache, infoTimes);//存入缓存 } else { PayApiDetailErrorLogger.UpstreamPaymentErrorLog("应用id为:" + appid + "的支付通道为空!风控id为:" + apptype + ",获取缓存失败后,从数据库未查询到相关信息!", summary: "汇元QQwap支付支付接口错误", channelId: SeIn.PayId); } } } else { dt = bll.SelectPay("HYQQWAP", apptype, appid); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] paypz = dt.Rows[row]["l_str"].ToString().Split(','); SeIn.UserId = paypz[0].Replace("\r", "").Replace("\n", "").Trim(); //获取汇元QQwap支付账号 SeIn.UserKey = paypz[1].Replace("\r", "").Replace("\n", "").Trim(); //获取汇元QQwap支付key SeIn.PayId = int.Parse(dt.Rows[row]["l_id"].ToString()); SeIn.minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 SeIn.maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 SeIn.RequestUrl = paypz.Length > 2 ? paypz[2].Replace("\r", "").Replace("\n", "").Trim() : null; SeIn.GotoURL = paypz.Length > 3 ? paypz[3].Replace("\r", "").Replace("\n", "").Trim() : null; SeIn.ReturnUrl = paypz.Length > 4 ? paypz[4].Replace("\r", "").Replace("\n", "").Trim() : null; JMP.TOOL.CacheHelper.CacheObjectLocak <DataTable>(dt, cache, infoTimes);//存入缓存 } else { PayApiDetailErrorLogger.UpstreamPaymentErrorLog("应用id为:" + appid + "的支付通道为空!风控id为:" + apptype + ",从数据库未查询到相关信息!", summary: "汇元QQwap支付支付接口错误", channelId: SeIn.PayId); } } } catch (Exception e) { string bcxx = "报错提示" + e.Message + "报错对象:" + e.Source + "报错方法:" + e.TargetSite + "报错信息:" + e.ToString();//报错信息 PayApiDetailErrorLogger.UpstreamPaymentErrorLog(bcxx, summary: "汇元QQwap支付支付接口错误应用类型ID:" + apptype, channelId: SeIn.PayId); } return(SeIn); }
/// <summary> /// 获取支付账号信息 /// </summary> /// <param name="cache">缓存Key</param> /// <param name="apptype">风控配置表ID</param> /// <param name="appid">应用Id</param> /// <param name="infoTimes">查询接口信息缓存时间</param> /// <returns></returns> private SelectInterface SelectUserInfo(string cache, int apptype, int appid, int infoTimes) { SelectInterface SeIn = new SelectInterface(); try { DataTable dt = new DataTable(); JMP.BLL.jmp_interface bll = new JMP.BLL.jmp_interface(); if (JMP.TOOL.CacheHelper.IsCache(cache)) { dt = JMP.TOOL.CacheHelper.GetCaChe <DataTable>(cache); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] PayConfigure = dt.Rows[row]["l_str"].ToString().Split(','); SeIn.UserId = PayConfigure[0].Replace("\r", "").Replace("\n", "").Trim(); //支付商户账号 SeIn.UserKey = PayConfigure[1].Replace("\r", "").Replace("\n", "").Trim(); //支付key SeIn.PayId = int.Parse(dt.Rows[row]["l_id"].ToString()); SeIn.minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 SeIn.maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 } else { dt = bll.SelectPay("TBQQWAP", apptype, appid); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] PayConfigure = dt.Rows[row]["l_str"].ToString().Split(','); SeIn.UserId = PayConfigure[0].Replace("\r", "").Replace("\n", "").Trim(); //支付商户账号 SeIn.UserKey = PayConfigure[1].Replace("\r", "").Replace("\n", "").Trim(); //支付key SeIn.PayId = int.Parse(dt.Rows[row]["l_id"].ToString()); SeIn.minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 SeIn.maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 JMP.TOOL.CacheHelper.CacheObjectLocak <DataTable>(dt, cache, infoTimes); //存入缓存 } else { PayApiDetailErrorLogger.UpstreamPaymentErrorLog("应用id为:" + appid + "的支付通道为空!风控id为:" + apptype + ",获取缓存未成功后在次查询数据!", summary: "途贝QQwap支付支付接口错误", channelId: SeIn.PayId); } } } else { dt = bll.SelectPay("TBQQWAP", apptype, appid); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] PayConfigure = dt.Rows[row]["l_str"].ToString().Split(','); SeIn.UserId = PayConfigure[0].Replace("\r", "").Replace("\n", "").Trim(); //支付商户账号 SeIn.UserKey = PayConfigure[1].Replace("\r", "").Replace("\n", "").Trim(); //支付key SeIn.PayId = int.Parse(dt.Rows[row]["l_id"].ToString()); SeIn.minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 SeIn.maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 JMP.TOOL.CacheHelper.CacheObjectLocak <DataTable>(dt, cache, infoTimes); //存入缓存 } else { PayApiDetailErrorLogger.UpstreamPaymentErrorLog("应用id为:" + appid + "的支付通道为空!风控id为:" + apptype + ",在数据库为查询到数据", summary: "途贝QQwap支付支付接口错误", channelId: SeIn.PayId); } } } catch (Exception e) { string bcxx = "报错提示" + e.Message + "报错对象:" + e.Source + "报错方法:" + e.TargetSite + "报错信息:" + e.ToString();//报错信息 PayApiDetailErrorLogger.UpstreamPaymentErrorLog(bcxx, summary: "途贝QQwap支付支付接口错误应用类型ID:" + apptype, channelId: SeIn.PayId); } return(SeIn); }
/// <summary> /// 查询微信官方扫码支付账户信息 /// </summary> /// <param name="cache">缓存值</param> /// <param name="appid">应用id</param> /// <param name="apptype">风控配置表id</param> /// <returns></returns> private SelectInterface SelectInfo(string cache, int apptype, int appid, int infoTimes) { SelectInterface SeIn = new SelectInterface(); try { DataTable dt = new DataTable(); JMP.BLL.jmp_interface bll = new JMP.BLL.jmp_interface(); if (JMP.TOOL.CacheHelper.IsCache(cache)) { dt = JMP.TOOL.CacheHelper.GetCaChe <DataTable>(cache); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] paypz = dt.Rows[row]["l_str"].ToString().Split(','); SeIn.UserId = paypz[0].Replace("\r", "").Replace("\n", "").Trim(); //获取微信商户号 SeIn.wxappid = paypz[1].Replace("\r", "").Replace("\n", "").Trim(); //获取微信appid SeIn.UserIdZ = paypz[2].Replace("\r", "").Replace("\n", "").Trim(); //获取微信秘钥 SeIn.UserKey = paypz[3].Replace("\r", "").Replace("\n", "").Trim(); //获取微信秘钥 SeIn.PayId = int.Parse(dt.Rows[row]["l_id"].ToString()); //获取支付通道id SeIn.minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 SeIn.maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 } else { dt = bll.SelectPay("WXService", apptype, appid); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] paypz = dt.Rows[row]["l_str"].ToString().Split(','); SeIn.UserId = paypz[0].Replace("\r", "").Replace("\n", "").Trim(); //获取微信商户号 SeIn.wxappid = paypz[1].Replace("\r", "").Replace("\n", "").Trim(); //获取微信appid SeIn.UserIdZ = paypz[2].Replace("\r", "").Replace("\n", "").Trim(); //获取微信秘钥 SeIn.UserKey = paypz[3].Replace("\r", "").Replace("\n", "").Trim(); //获取微信秘钥 SeIn.PayId = int.Parse(dt.Rows[row]["l_id"].ToString()); //获取支付通道id SeIn.minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 SeIn.maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 JMP.TOOL.CacheHelper.CacheObjectLocak <DataTable>(dt, cache, infoTimes); //存入缓存 } else { PayApiDetailErrorLogger.UpstreamPaymentErrorLog("应用id为:" + appid + "的支付通道为空!风控id为:" + apptype + ",获取缓存失败后,从数据库未查询到相关信息!", summary: "微信官方扫码支付接口错误", channelId: SeIn.PayId); } } } else { dt = bll.SelectPay("WXService", apptype, appid); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] paypz = dt.Rows[row]["l_str"].ToString().Split(','); SeIn.UserId = paypz[0].Replace("\r", "").Replace("\n", "").Trim(); //获取微信商户号 SeIn.wxappid = paypz[1].Replace("\r", "").Replace("\n", "").Trim(); //获取微信appid SeIn.UserIdZ = paypz[2].Replace("\r", "").Replace("\n", "").Trim(); //获取微信秘钥 SeIn.UserKey = paypz[3].Replace("\r", "").Replace("\n", "").Trim(); //获取微信秘钥 SeIn.PayId = int.Parse(dt.Rows[row]["l_id"].ToString()); //获取支付通道id SeIn.minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 SeIn.maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 JMP.TOOL.CacheHelper.CacheObjectLocak <DataTable>(dt, cache, infoTimes); //存入缓存 } else { PayApiDetailErrorLogger.UpstreamPaymentErrorLog("应用id为:" + appid + "的支付通道为空!风控id为:" + apptype + ",直接从数据库未查询到相关信息!", summary: "微信官方扫码支付接口错误", channelId: SeIn.PayId); } } } catch (Exception e) { string bcxx = "报错提示" + e.Message + "报错对象:" + e.Source + "报错方法:" + e.TargetSite + "报错信息:" + e.ToString(); //报错信息 PayApiDetailErrorLogger.UpstreamPaymentErrorLog(bcxx, summary: "微信官方扫码支付接口错误应用ID:" + appid, channelId: SeIn.PayId); //写入报错日志 } return(SeIn); }
/// <summary> /// 融梦微信扫支付 /// </summary> /// <param name="apptype">应用类型id</param> /// <param name="code">订单号</param> /// <param name="goodsname">商品名称</param> /// <param name="price">支付金额</param> /// <param name="orderid">订单id</param> /// <param name="appid">应用id</param> /// <returns></returns> private InnerResponse RmWxSmH5(int apptype, string code, decimal price, int orderid, string goodsname, int infoTime, int appid) { InnerResponse inn = new InnerResponse(); int pay_id = 0;//支付渠道id try { string userid = ""; //融梦商户id string userkey = ""; //融梦key string partnerId = ""; //cpid decimal minmun = 0; decimal maximum = 0; string RmWxSmH5 = "RmWxSmH5" + appid;//组装缓存key值 #region 融梦微信扫码支付账号信息 try { DataTable dt = new DataTable(); JMP.BLL.jmp_interface bll = new JMP.BLL.jmp_interface(); if (JMP.TOOL.CacheHelper.IsCache(RmWxSmH5)) { dt = JMP.TOOL.CacheHelper.GetCaChe <DataTable>(RmWxSmH5); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] paypz = dt.Rows[row]["l_str"].ToString().Split(','); userid = paypz[0].Replace("\r", "").Replace("\n", "").Trim(); //获取缓存数据中的融梦微信扫码id partnerId = paypz[1].Replace("\r", "").Replace("\n", "").Trim(); //获取缓存数据中的融梦微信扫码cpid userkey = paypz[2].Replace("\r", "").Replace("\n", "").Trim(); //获取缓存数据中的融梦微信扫码key pay_id = int.Parse(dt.Rows[row]["l_id"].ToString()); minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 } else { dt = bll.SelectPay("RMWXSM", apptype, appid); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] paypz = dt.Rows[row]["l_str"].ToString().Split(','); userid = paypz[0].Replace("\r", "").Replace("\n", "").Trim(); //获取融梦id partnerId = paypz[1].Replace("\r", "").Replace("\n", "").Trim(); //获取缓存数据中的融梦微信扫码cpid userkey = paypz[2].Replace("\r", "").Replace("\n", "").Trim(); //获取缓存数据中的融梦微信扫码key pay_id = int.Parse(dt.Rows[row]["l_id"].ToString()); minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 JMP.TOOL.CacheHelper.CacheObjectLocak <DataTable>(dt, RmWxSmH5, infoTime); //存入缓存 } else { PayApiDetailErrorLogger.UpstreamPaymentErrorLog("应用id为:" + appid + "的支付通道为空!风控id为:" + apptype + ",获取缓存失败后,从数据库未查询到相关信息!", summary: "融梦微信扫码接口错误", channelId: pay_id); inn = inn.ToResponse(ErrorCode.Code106); return(inn); } } } else { dt = bll.SelectPay("RMWXSM", apptype, appid); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] paypz = dt.Rows[row]["l_str"].ToString().Split(','); userid = paypz[0].Replace("\r", "").Replace("\n", "").Trim(); //获取融梦id partnerId = paypz[1].Replace("\r", "").Replace("\n", "").Trim(); //获取缓存数据中的融梦微信扫码cpid userkey = paypz[2].Replace("\r", "").Replace("\n", "").Trim(); //获取缓存数据中的融梦微信扫码key pay_id = int.Parse(dt.Rows[row]["l_id"].ToString()); minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 JMP.TOOL.CacheHelper.CacheObjectLocak <DataTable>(dt, RmWxSmH5, infoTime); //存入缓存 } else { PayApiDetailErrorLogger.UpstreamPaymentErrorLog("应用id为:" + appid + "的支付通道为空!风控id为:" + apptype + ",从数据库未查询到相关信息!", summary: "融梦微信扫码接口错误", channelId: pay_id); inn = inn.ToResponse(ErrorCode.Code106); return(inn); } } } catch (Exception e) { string bcxx = "报错提示" + e.Message + "报错对象:" + e.Source + "报错方法:" + e.TargetSite + "报错信息:" + e.ToString();//报错信息 PayApiDetailErrorLogger.UpstreamPaymentErrorLog(bcxx, summary: "融梦微信扫码支付接口错误应用类型ID:" + apptype, channelId: pay_id); inn = inn.ToResponse(ErrorCode.Code106); return(inn); } #endregion if (!UpdateOrde.OrdeUpdateInfo(orderid, pay_id)) { inn = inn.ToResponse(ErrorCode.Code101); return(inn); } if (!JudgeMoney.JudgeMinimum(price, minmun)) { inn = inn.ToResponse(ErrorCode.Code8990); return(inn); } if (!JudgeMoney.JudgeMaximum(price, maximum)) { inn = inn.ToResponse(ErrorCode.Code8989); return(inn); } Dictionary <string, string> list = new Dictionary <string, string>(); list.Add("appId", userid); //产品id list.Add("partnerId", partnerId); //cpid list.Add("channelOrderId", code); //订单编号 list.Add("body", goodsname); //商品名称 list.Add("totalFee", (Convert.ToInt32(price * 100)).ToString()); //金额(单位:分) list.Add("payType", "1400"); //支付类型 list.Add("timeStamp", JMP.TOOL.WeekDateTime.GetMilis); //时间戳 string signstr = "appId=" + list["appId"] + "&timeStamp=" + list["timeStamp"] + "&totalFee=" + list["totalFee"] + "&key=" + userkey; string sign = JMP.TOOL.MD5.md5strGet(signstr, true).ToUpper(); list.Add("notifyUrl", ConfigurationManager.AppSettings["rmWxsmNotifyUrl"].ToString().Replace("{0}", pay_id.ToString())); //异步通知地址 list.Add("sign", sign); //签名 string yrl = ConfigurationManager.AppSettings["rmWxsmPostUrl"].ToString() + "?" + JMP.TOOL.UrlStr.AzGetStrnotnull(list); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(yrl); request.Timeout = 3000; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); string jmpay = ""; using (StreamReader reader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.UTF8)) { jmpay = reader.ReadToEnd(); } if (!string.IsNullOrEmpty(jmpay)) { Dictionary <string, object> jsonstr = JMP.TOOL.JsonHelper.DataRowFromJSON(jmpay); if (jsonstr != null && jsonstr.Count > 0 && jsonstr.ContainsKey("payParam") && jsonstr["return_code"].ToString() == "0") { string exda = ((Dictionary <string, object>)jsonstr["payParam"])["code_img_url"].ToString(); string imageurl = System.Web.HttpUtility.UrlDecode(exda).Replace("https://pay.swiftpass.cn/pay/qrcode?uuid=", ""); string qurl = imageurl + "," + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ",2"; //组装二维码地址 string ImgQRcode = ConfigurationManager.AppSettings["ImgQRcode"].ToString() + "?QRcode=" + JMP.TOOL.Encrypt.IndexEncrypt(qurl); //二维码图片展示地址 string codeurl = ConfigurationManager.AppSettings["QRcode"].ToString() + "?QRcode=" + JMP.TOOL.Encrypt.IndexEncrypt(qurl); //二维码展示地址 inn = inn.ToResponse(ErrorCode.Code100); inn.ExtraData = new { ImgQRcode = ImgQRcode, codeurl = codeurl }; //http提交方式; } else { PayApiDetailErrorLogger.UpstreamPaymentErrorLog("融梦微信扫码支付出错,获取到的回传参数:" + jmpay, summary: "融梦微信扫码支付接口错误", channelId: pay_id); inn = inn.ToResponse(ErrorCode.Code104); } } else { PayApiDetailErrorLogger.UpstreamPaymentErrorLog("融梦微信扫码支付出错,获取到的回传参数:" + jmpay, summary: "融梦微信扫码支付接口错误", channelId: pay_id); inn = inn.ToResponse(ErrorCode.Code104); } } catch (Exception E) { PayApiDetailErrorLogger.UpstreamPaymentErrorLog("报错信息:" + E.ToString(), summary: "融梦微信扫码接口错误信息", channelId: pay_id); inn = inn.ToResponse(ErrorCode.Code104); } return(inn); }
/// <summary> /// 加载配置文件 /// </summary> /// <returns></returns> public static Dictionary <String, String> loadCfg(int tid, int appid) { Dictionary <String, String> cfg = new Dictionary <string, string>(); string dpkey = ""; //智付私钥 string dppartner = ""; //智付账号 int dppay_id = 0; //支付渠道id decimal minmun = 0; decimal maximum = 0; try { DataTable dt = new DataTable(); JMP.BLL.jmp_interface blli = new JMP.BLL.jmp_interface(); string DPzfjkhc = "DPzfjkhc" + appid;//组装缓存key值 if (JMP.TOOL.CacheHelper.IsCache(DPzfjkhc)) { dt = JMP.TOOL.CacheHelper.GetCaChe <DataTable>(DPzfjkhc); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] payzf = dt.Rows[row]["l_str"].ToString().Split(','); dpkey = payzf[1].Replace("\r", "").Replace("\n", "").Trim(); //获取缓存数据中的智付私钥 dppartner = payzf[0].Replace("\r", "").Replace("\n", "").Trim(); //获取缓存数据中的智付账号 dppay_id = Int32.Parse(dt.Rows[row]["l_id"].ToString()); //支付渠道id minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 } else { dt = blli.SelectPay("ZF", tid, appid); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] payzf = dt.Rows[row]["l_str"].ToString().Split(','); dppartner = payzf[0].Replace("\r", "").Replace("\n", "").Trim(); //获取智付账号 dpkey = payzf[1].Replace("\r", "").Replace("\n", "").Trim(); //获取智付私钥 dppay_id = Int32.Parse(dt.Rows[row]["l_id"].ToString()); //支付渠道id minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 JMP.TOOL.CacheHelper.CacheObjectLocak <DataTable>(dt, DPzfjkhc, 1); //存入缓存 } else { PayApiGlobalErrorLogger.Log("应用id为:" + appid + "的支付通道为空!风控id为:" + tid + ",获取缓存失败后从数据库未查询到相关信息!", summary: "智付支付接口错误"); } } } else { dt = blli.SelectPay("ZF", tid, appid); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] payzf = dt.Rows[row]["l_str"].ToString().Split(','); dppartner = payzf[0].Replace("\r", "").Replace("\n", "").Trim(); //获取智付账号 dpkey = payzf[1].Replace("\r", "").Replace("\n", "").Trim(); //获取智付私钥 dppay_id = Int32.Parse(dt.Rows[row]["l_id"].ToString()); //支付渠道id minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 JMP.TOOL.CacheHelper.CacheObjectLocak <DataTable>(dt, DPzfjkhc, 1); //存入缓存 } else { PayApiGlobalErrorLogger.Log("应用id为:" + appid + "的支付通道为空!风控id为:" + tid + ",从数据库未查询到相关信息!", summary: "智付支付接口错误"); } } } catch (Exception e) { string bcxx = "报错提示" + e.Message + "报错对象:" + e.Source + "报错方法:" + e.TargetSite + "报错信息:" + e.ToString(); //报错信息 AddLocLog.AddLog(1, 4, "", "智付支付接口错误", bcxx); //写入报错日志 throw; } //从数据库读取配置文件 cfg.Add("partner", dppartner); cfg.Add("dpkey", dpkey); cfg.Add("pay_id", dppay_id.ToString()); cfg.Add("minmun", minmun.ToString()); cfg.Add("maximum", maximum.ToString()); return(cfg); }
/// <summary> /// 汇元通知接口程序 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Page_Load(object sender, EventArgs e) { int pid = 0; string jsonstr = ""; Dictionary <string, string> jsonlist = JMP.TOOL.UrlStr.GetRequestGet(HttpContext.Current, "汇元通知接口"); if (jsonlist != null) { jsonstr = JMP.TOOL.JsonHelper.DictJsonstr(jsonlist);//把获取的参数转换成字符串 } try { pid = !string.IsNullOrEmpty(Request.QueryString["pid"]) ? int.Parse(Request.QueryString["pid"].ToString()) : 0; if (pid > 0 && jsonlist.Count > 0) { //订单编号 string userpara = jsonlist["agent_bill_id"].ToString().Trim(); //签名 string sign = jsonlist["sign"].ToString().Trim(); //第三方流水号 string trade_no = jsonlist["jnet_bill_no"].ToString(); //交易状态 string trade_status = jsonlist["result"].ToString(); //买家账号 string buyer_email = trade_no; //买家付款时间 DateTime gmt_payment = DateTime.Now; //交易金额(单位:元) decimal o_price = decimal.Parse(Request.QueryString["pay_amt"]); var zf = new JMP.BLL.jmp_interface(); JMALI.notice.notice notic = new notice.notice(); string key = notic.SelectKey(pid);//获取通道key值 string md5 = "result=" + trade_status + "&agent_id=" + jsonlist["agent_id"] + "&jnet_bill_no=" + trade_no + "&agent_bill_id=" + userpara + "&pay_type=" + Request.QueryString["pay_type"] + "&pay_amt=" + jsonlist["pay_amt"] + "&remark=" + jsonlist["remark"] + "&key=" + key; string md5str = JMP.TOOL.MD5.md5strGet(md5, true).ToLower(); if (md5str == sign && trade_status == "1") { string message = notic.PubNotice(userpara, o_price, gmt_payment, trade_no, buyer_email, pid, "汇元通知接口", jsonstr); if (message == "ok") { Response.Write("ok"); } else { Response.Write("error"); } } else { Response.Write("error"); } } else { Response.Write("error"); } } catch (Exception ex) { PayApiDetailErrorLogger.UpstreamNotifyErrorLog("获取到的参数:" + jsonstr + ",错误信息:" + ex, summary: "汇元通知接口", channelId: pid); Response.Write("error"); } }
/// <summary> /// 查询支付通道信息 /// </summary> /// <param name="cache">缓存值</param> /// <param name="appid">应用id</param> /// <param name="apptype">风控配置表id</param> /// <returns></returns> private UserInf SelectInfo(string cache, int apptype, int appid, int infoTimes) { UserInf us = new UserInf(); try { DataTable dt = new DataTable(); JMP.BLL.jmp_interface bll = new JMP.BLL.jmp_interface(); if (JMP.TOOL.CacheHelper.IsCache(cache)) { dt = JMP.TOOL.CacheHelper.GetCaChe <DataTable>(cache); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] paypz = dt.Rows[row]["l_str"].ToString().Split(','); us.userid = paypz[0].Replace("\r", "").Replace("\n", "").Trim(); us.userkey = paypz[1].Replace("\r", "").Replace("\n", "").Trim(); us.wxappid = paypz[2].Replace("\r", "").Replace("\n", "").Trim(); us.userappid = paypz[3].Replace("\r", "").Replace("\n", "").Trim(); us.store_appid = paypz[4].Replace("\r", "").Replace("\n", "").Trim(); us.store_name = paypz[5].Replace("\r", "").Replace("\n", "").Trim(); us.pay_id = int.Parse(dt.Rows[row]["l_id"].ToString()); us.minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 us.maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 } else { dt = bll.SelectPay("xyyhappid", apptype, appid); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] paypz = dt.Rows[row]["l_str"].ToString().Split(','); us.userid = paypz[0].Replace("\r", "").Replace("\n", "").Trim(); us.userkey = paypz[1].Replace("\r", "").Replace("\n", "").Trim(); us.wxappid = paypz[2].Replace("\r", "").Replace("\n", "").Trim(); us.userappid = paypz[3].Replace("\r", "").Replace("\n", "").Trim(); us.store_appid = paypz[4].Replace("\r", "").Replace("\n", "").Trim(); us.store_name = paypz[5].Replace("\r", "").Replace("\n", "").Trim(); us.pay_id = int.Parse(dt.Rows[row]["l_id"].ToString()); us.minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 us.maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 JMP.TOOL.CacheHelper.CacheObjectLocak <DataTable>(dt, cache, infoTimes); //存入缓存 } else { PayApiDetailErrorLogger.UpstreamPaymentErrorLog("应用id为:" + appid + "的支付通道为空!风控id:" + apptype + ",获取缓存失败后,从数据库未查询到相关信息!", summary: "兴业银行appid支付接口错误", channelId: us.pay_id); } } } else { dt = bll.SelectPay("xyyhappid", apptype, appid); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] paypz = dt.Rows[row]["l_str"].ToString().Split(','); us.userid = paypz[0].Replace("\r", "").Replace("\n", "").Trim(); us.userkey = paypz[1].Replace("\r", "").Replace("\n", "").Trim(); us.wxappid = paypz[2].Replace("\r", "").Replace("\n", "").Trim(); us.userappid = paypz[3].Replace("\r", "").Replace("\n", "").Trim(); us.store_appid = paypz[4].Replace("\r", "").Replace("\n", "").Trim(); us.store_name = paypz[5].Replace("\r", "").Replace("\n", "").Trim(); us.pay_id = int.Parse(dt.Rows[row]["l_id"].ToString()); us.minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 us.maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 JMP.TOOL.CacheHelper.CacheObjectLocak <DataTable>(dt, cache, infoTimes); //存入缓存 } else { PayApiDetailErrorLogger.UpstreamPaymentErrorLog("应用id为:" + appid + "的支付通道为空!风控id:" + apptype + ",从数据库未查询到相关信息!", summary: "兴业银行appid支付接口错误", channelId: us.pay_id); } } } catch (Exception e) { string bcxx = "报错提示" + e.Message + "报错对象:" + e.Source + "报错方法:" + e.TargetSite + "报错信息:" + e.ToString();//报错信息 PayApiDetailErrorLogger.UpstreamPaymentErrorLog(bcxx, summary: "兴业银行appid支付接口错误应用ID:" + appid, channelId: us.pay_id); } return(us); }
public Config(int tid, int appid) { #region 获取支付宝接口信息 string zfbjkhc = "ZFBjkhc" + appid;//组装缓存key值 try { DataTable dt = new DataTable(); JMP.BLL.jmp_interface bll = new JMP.BLL.jmp_interface(); if (JMP.TOOL.CacheHelper.IsCache(zfbjkhc)) { //string zfbpz = JMP.TOOL.CacheHelper.GetCaChe(zfbjkhc).ToString(); dt = JMP.TOOL.CacheHelper.GetCaChe <DataTable>(zfbjkhc); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] payzf = dt.Rows[row]["l_str"].ToString().Split(','); private_key = payzf[1].Replace("\r", "").Replace("\n", "").Trim(); //获取缓存数据中的支付宝私钥 partner = payzf[0].Replace("\r", "").Replace("\n", "").Trim(); //获取缓存数据中的支付宝账号 pay_id = Int32.Parse(dt.Rows[row]["l_id"].ToString()); //支付渠道id minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 } else { if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] payzf = dt.Rows[row]["l_str"].ToString().Split(','); partner = payzf[0].Replace("\r", "").Replace("\n", "").Trim(); //获取支付宝账号 private_key = payzf[1].Replace("\r", "").Replace("\n", "").Trim(); //获取支付宝私钥 pay_id = Int32.Parse(dt.Rows[row]["l_id"].ToString()); //支付渠道id minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 //JMP.TOOL.CacheHelper.CacheObject(zfbjkhc, str, 1);//存入缓存 JMP.TOOL.CacheHelper.CacheObjectLocak <DataTable>(dt, zfbjkhc, 1); } else { PayApiGlobalErrorLogger.Log("报错信息:支付宝支付接口错误", "应用id为:" + appid + "的支付通道为空,风控配置表id:" + tid + ",获取缓存失败后,从数据库未查询到相关信息!", summary: "支付宝支付接口错误"); } } } else { dt = bll.SelectPay("ZFB", tid, appid); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] payzf = dt.Rows[row]["l_str"].ToString().Split(','); partner = payzf[0].Replace("\r", "").Replace("\n", "").Trim(); //获取支付宝账号 private_key = payzf[1].Replace("\r", "").Replace("\n", "").Trim(); //获取支付宝私钥 pay_id = Int32.Parse(dt.Rows[row]["l_id"].ToString()); //支付渠道id minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 //JMP.TOOL.CacheHelper.CacheObject(zfbjkhc, str, 1);//存入缓存 JMP.TOOL.CacheHelper.CacheObjectLocak <DataTable>(dt, zfbjkhc, 1); } else { PayApiGlobalErrorLogger.Log("报错信息:支付宝支付接口错误", "应用id为:" + appid + "的支付通道为空,风控配置表id:" + tid + ",直接从数据库未查询到相关信息", summary: "支付宝支付接口错误"); } } } catch (Exception e) { string bcxx = "报错提示" + e.Message + "报错对象:" + e.Source + "报错方法:" + e.TargetSite + "报错信息:" + e.ToString(); //报错信息 // AddLocLog.AddLog(1, 4, "", "支付宝支付接口错误", bcxx);//写入报错日志 PayApiGlobalErrorLogger.Log("报错信息:" + bcxx, summary: "支付宝支付接口错误"); throw; } #endregion seller_id = partner; //public_key = @"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCnxj/9qwVfgoUh/y2W89L6BkRAFljhNhgPdyPuBV64bfQNN1PjbCzkIM6qRdKBoLPXmKKMiFYnkd6rAoprih3/PrQEB/VsW8OoM8fxn67UDYuyBTqA23MML9q1+ilIZwBC2AQ2UBVOrFXfFl75p6/B5KsiNG9zpgmLCUYuLkxpLQIDAQAB"; public_key = @"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDI6d306Q8fIfCOaTXyiUeJHkrIvYISRcc73s3vF1ZT7XN8RNPwJxo8pWaJMmvyTn9N4HQ632qJBVHf8sxHi/fEsraprwCtzvzQETrNRwVxLO5jVmRGi60j8Ue1efIlzPXV9je9mkjzOmdssymZkh2QhUrCmZYI/FCEa3/cNMW0QIDAQAB"; input_charset = "utf-8"; sign_type = "RSA"; }
/// <summary> /// 南粤微信扫码支付 /// </summary> /// <param name="apptype">应用类型id</param> /// <param name="code">订单编号</param> /// <param name="price">商品价格</param> /// <param name="orderid">订单id</param> /// <param name="goodsname">商品名称</param> /// <param name="appid">应用id</param> /// <returns></returns> private InnerResponse NywxsmH5(int apptype, string code, decimal price, int orderid, string goodsname, int infoTime, int appid) { InnerResponse inn = new InnerResponse(); int pay_id = 0;//支付渠道id try { string userid = ""; //南粤公众号商户id string userkey = ""; //南粤公众号key decimal minmun = 0; decimal maximum = 0; string Nywxgzh = "Nywxgzh" + appid;//组装缓存key值 #region 南粤微信扫码支付账号信息 try { DataTable dt = new DataTable(); JMP.BLL.jmp_interface bll = new JMP.BLL.jmp_interface(); if (JMP.TOOL.CacheHelper.IsCache(Nywxgzh)) { dt = JMP.TOOL.CacheHelper.GetCaChe <DataTable>(Nywxgzh); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] paypz = dt.Rows[row]["l_str"].ToString().Split(','); userid = paypz[0].Replace("\r", "").Replace("\n", "").Trim(); //获取缓存数据中的南粤微信扫码id userkey = paypz[1].Replace("\r", "").Replace("\n", "").Trim(); //获取缓存数据中的南粤微信扫码key pay_id = int.Parse(dt.Rows[row]["l_id"].ToString()); minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 } else { dt = bll.SelectPay("nywxsm", apptype, appid); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] paypz = dt.Rows[row]["l_str"].ToString().Split(','); userid = paypz[0].Replace("\r", "").Replace("\n", "").Trim(); //获取南粤公众号id userkey = paypz[1].Replace("\r", "").Replace("\n", "").Trim(); //获取南粤公众号key pay_id = int.Parse(dt.Rows[row]["l_id"].ToString()); minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 JMP.TOOL.CacheHelper.CacheObjectLocak <DataTable>(dt, Nywxgzh, infoTime); //存入缓存 } else { PayApiDetailErrorLogger.UpstreamPaymentErrorLog("应用id为:" + appid + "的支付通道为空!风控id为:" + apptype + ",获取缓存失败后,从数据库未查询到相关信息!", summary: "南粤微信扫码接口错误", channelId: pay_id); inn = inn.ToResponse(ErrorCode.Code106); return(inn); } } } else { dt = bll.SelectPay("nywxsm", apptype, appid); if (dt != null && dt.Rows.Count > 0) { int row = new Random().Next(0, dt.Rows.Count); string[] paypz = dt.Rows[row]["l_str"].ToString().Split(','); userid = paypz[0].Replace("\r", "").Replace("\n", "").Trim(); //获取南粤公众号id userkey = paypz[1].Replace("\r", "").Replace("\n", "").Trim(); //获取南粤公众号key pay_id = int.Parse(dt.Rows[row]["l_id"].ToString()); minmun = decimal.Parse(dt.Rows[row]["l_minimum"].ToString()); //单笔最小支付金额 maximum = decimal.Parse(dt.Rows[row]["l_maximum"].ToString()); //单笔最大支付金额 JMP.TOOL.CacheHelper.CacheObjectLocak <DataTable>(dt, Nywxgzh, infoTime); //存入缓存 } else { PayApiDetailErrorLogger.UpstreamPaymentErrorLog("应用id为:" + appid + "的支付通道为空!风控id为:" + apptype + ",从数据库未查询到相关信息!", summary: "南粤微信扫码接口错误", channelId: pay_id); inn = inn.ToResponse(ErrorCode.Code106); return(inn); } } } catch (Exception e) { string bcxx = "报错提示" + e.Message + "报错对象:" + e.Source + "报错方法:" + e.TargetSite + "报错信息:" + e.ToString();//报错信息 PayApiDetailErrorLogger.UpstreamPaymentErrorLog(bcxx, summary: "南粤微信扫码支付接口错误应用类型ID:" + apptype, channelId: pay_id); inn = inn.ToResponse(ErrorCode.Code106); return(inn); } #endregion if (!UpdateOrde.OrdeUpdateInfo(orderid, pay_id)) { inn = inn.ToResponse(ErrorCode.Code101); return(inn); } if (!JudgeMoney.JudgeMinimum(price, minmun)) { inn = inn.ToResponse(ErrorCode.Code8990); return(inn); } if (!JudgeMoney.JudgeMaximum(price, maximum)) { inn = inn.ToResponse(ErrorCode.Code8989); return(inn); } Dictionary <string, string> strlist = new Dictionary <string, string>(); strlist.Add("tradeType", "cs.pay.submit"); //交易类型 strlist.Add("version", "1.3"); //版本号 strlist.Add("mchId", userid); //代理商号 strlist.Add("channel", "wxPubQR"); //支付渠道 strlist.Add("body", goodsname); //商品描述 strlist.Add("outTradeNo", code); //商户订单号 strlist.Add("amount", price.ToString()); //交易金额 //strlist.Add("description", JMP.TOOL.DESEncrypt.Encrypt(code));//自定义信息 strlist.Add("notifyUrl", ConfigurationManager.AppSettings["NyNotifyUrl"].ToString().Replace("{0}", pay_id.ToString())); //异步通知 strlist.Add("callbackUrl", ConfigurationManager.AppSettings["GOTOUrl"].ToString().Replace("{0}", orderid.ToString())); //同步通知 string md5str = JMP.TOOL.UrlStr.AzGetStr(strlist) + "&key=" + userkey; string md5 = JMP.TOOL.MD5.md5strGet(md5str, true); strlist.Add("sign", md5);//签名 string extra = ""; //if (tid == 71)//判断应用类型是否需要禁用信用卡 //{ // extra = "{\"callbackUrl\":\"" + ConfigurationManager.AppSettings["GOTOUrl"].ToString().Replace("{0}", oid.ToString()) + "\",\"notifyUrl\":\"" + ConfigurationManager.AppSettings["NyNotifyUrl"].ToString().Replace("{0}", pay_id.ToString()) + "\",\"notifyUrl\":\"no_credit\"}"; //} //else //{ extra = "{\"callbackUrl\":\"" + ConfigurationManager.AppSettings["GOTOUrl"].ToString().Replace("{0}", orderid.ToString()) + "\",\"notifyUrl\":\"" + ConfigurationManager.AppSettings["NyNotifyUrl"].ToString().Replace("{0}", pay_id.ToString()) + "\"}"; // } strlist.Add("extra", extra); //扩展字段 string postString = JMP.TOOL.JsonHelper.DictJsonstr(strlist, "extra"); //这里即为传递的参数,可以用工具抓包分析,也可以自己分析,主要是form里面每一个name都要加进来 byte[] postData = Encoding.UTF8.GetBytes(postString); //编码,尤其是汉字,事先要看下抓取网页的编码方式 string url = ConfigurationManager.AppSettings["NYPOSTUrl"].ToString(); //请求地址 WebClient webClient = new WebClient(); byte[] responseData = webClient.UploadData(url, "POST", postData); //得到返回字符流 string srcString = Encoding.UTF8.GetString(responseData); //解码 Dictionary <string, object> jsonstr = JMP.TOOL.JsonHelper.DataRowFromJSON(srcString); if (jsonstr.ContainsKey("returnCode") && jsonstr["resultCode"].ToString() == "0") { string qurl = jsonstr["codeUrl"].ToString() + "," + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ",2"; //组装二维码地址 string ImgQRcode = ConfigurationManager.AppSettings["ImgQRcode"].ToString() + "?QRcode=" + JMP.TOOL.Encrypt.IndexEncrypt(qurl); //二维码图片展示地址 string codeurl = ConfigurationManager.AppSettings["QRcode"].ToString() + "?QRcode=" + JMP.TOOL.Encrypt.IndexEncrypt(qurl); //二维码展示地址 inn = inn.ToResponse(ErrorCode.Code100); inn.ExtraData = new { ImgQRcode = ImgQRcode, codeurl = codeurl }; //http提交方式; } else { inn = inn.ToResponse(ErrorCode.Code104); } } catch (Exception E) { PayApiDetailErrorLogger.UpstreamPaymentErrorLog("报错信息:" + E.ToString(), summary: "南粤微信扫码接口错误信息", channelId: pay_id); inn = inn.ToResponse(ErrorCode.Code104); } return(inn); }