示例#1
0
        /// <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);
            }
        }
示例#2
0
文件: LmsjWxPay.cs 项目: dmhai/dxpay
        /// <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);
        }
示例#3
0
        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
        }
示例#4
0
        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());
        }
示例#5
0
文件: WxPay.cs 项目: dmhai/dxpay
        /// <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);
        }
示例#6
0
        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);
            }
        }
示例#7
0
        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";
        }
示例#8
0
        /// <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);
        }
示例#9
0
文件: notice.cs 项目: dmhai/dxpay
        /// <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);
            }
        }
示例#10
0
文件: notice.cs 项目: dmhai/dxpay
        /// <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);
            }
        }
示例#11
0
        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 ? "正常" : "异常")
            });
        }
示例#12
0
        /// <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);
        }
示例#13
0
文件: TbQQPay.cs 项目: dmhai/dxpay
        /// <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);
        }
示例#14
0
        /// <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);
        }
示例#15
0
文件: RmWXSmPay.cs 项目: dmhai/dxpay
        /// <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);
        }
示例#16
0
文件: DPConfing.cs 项目: dmhai/dxpay
        /// <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);
        }
示例#17
0
        /// <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");
            }
        }
示例#18
0
        /// <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);
        }
示例#19
0
        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";
        }
示例#20
0
        /// <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);
        }