金沙国际官网_金沙国际平台登录

因为这个金沙国际官网_金沙国际平台登录网站与很多的大型澳门赌场都有合作,金沙国际官网_金沙国际平台登录尽职尽责,高效执行,保持好奇心,不断学习,追求卓越,点击进入金沙国际官网_金沙国际平台登录马上体验吧,所以现在也正式地开始了营业。

您的位置:金沙国际官网 > 编程 > 自定义日志记录,微信支付过程遇到的问题

自定义日志记录,微信支付过程遇到的问题

发布时间:2019-11-05 03:23编辑:编程浏览(95)

      Python版本:3.6.2  操作系统:Windows  作者:SmallWZQ

    废话不多说,直接上代码:

    1.出现invalid signature

       如果是微信web开发着工具出现的话,那么可以用手机试试看,是不是有问题。

      在Python中,字符串也是一种数据类型。相比其它数据类型,字符串算是比较复杂的。为何呢?因为字符串不仅包含英文字母,还包括各国的语言文字。既然字符串包含各国语言,因此字符串还涉及编码问题。

     

    2.出现支付一闪而过

      一般是授权问题,需要在微信支付-开发配置-测试授权目录里面添加授权目录(注意是区分大小写的,精确到Controller就行了,也就是二级目录)

      在Python 3.x版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言。

    很简单:将类复制到项目中,最后在配置文件上配置一下:logUrl即可。 默认保存在:项目/temp/log

    2.Redirect_uri参数错误

      一般是接口权限的错误,需要在接口权限-找到(网页授权获取用户基本信息)然后修改。 还有可能在公众号设置-功能设置-js接口安全域名,填写对应的域名

      示例代码如下:

     初稿1:

    1 #字符串包含中文
    2 >>>print('我爱祖国!I love my country!')
    3 我爱祖国!I love my country!
    
    /// <summary>
        /// 日志类
        /// </summary>
        /// <remarks>Creator: v-lxh  CreateTime: 2016/7/26 11:18:09</remarks>
        /// <Description></Description>
        public class Log
        {
            /// <summary>
            /// 写入日志.
            /// </summary>
            /// <param name="strList">The STR list.</param>
            /// <remarks>Creator: v-lxh  CreateTime: 2016/7/26 11:18:09</remarks>
            /// <Description></Description>
            public static void WriteLog(params object[] strList)
            {
                //判断是否开启日志模式
                //if (!LogModel) return;
                if (strList.Count() == 0) return;
                //日志文件路径
                string strDicPath = "";
                try
                {
                    strDicPath = HttpContext.Current.Server.MapPath("~/temp/log/");
                    if (strDicPath == null || strDicPath == "")
                    {
                        strDicPath = System.Configuration.ConfigurationManager.AppSettings["logUrl"] + "/temp/log/";
                    }
                }
                catch (Exception e)
                {
                    strDicPath = System.Configuration.ConfigurationManager.AppSettings["logUrl"] + "/temp/log/";
                }
                string strPath = strDicPath + string.Format("{0:yyyy年-MM月-dd日}", DateTime.Now) + "日志记录.txt";
                if (!Directory.Exists(strDicPath))
                {
                    Directory.CreateDirectory(strDicPath);
                }
                if (!File.Exists(strPath))
                {
                    using (FileStream fs = File.Create(strPath)) { }
                }
                string str = File.ReadAllText(strPath);
                StringBuilder sb = new StringBuilder();
                foreach (var item in strList)
                {
                    sb.Append("rn" + DateTime.Now.ToString() + "-----" + item + "");
                }
                File.WriteAllText(strPath, sb.ToString() + "rn-----z-----rn" + str);
            }
    
        }
    

      字符串支持拼接语法。

     

    #拼接字符串
    >>>x = "Hello,"
    >>>y = 'world!'
    >>>x + y
    'Hello,world!'
    >>>print(x + y)
    Hello,world!
    

      初稿1--优化1:

      在Python中,值被转换为字符串的两种机制:

     

      一、str(),它会把值转换为合理形式的字符串,方便用户理解;

       /// <summary>
        /// 日志类
        /// </summary>
        /// <remarks>Creator: lixh  CreateTime: 2017/3/23 11:18:09</remarks>
        /// <Description></Description>
        public class Log
        {
            //日期文件夹路径
            public static string strDicPath = "";
    
            //静态方法todo:在处理话类型之前自动调用,去检查日志文件夹是否存在
            static Log()
            {
                //todo:通过当前http请求上下文获取的服务器相对路径下的物理路径--非静态资源--占用资源
                //string strDicPath = System.Web.HttpContext.Current.Server.MapPath("~/temp/log/");
    
                //静态类型--获取应用所在的物理路径--节省资源
                strDicPath = System.Web.HttpRuntime.AppDomainAppPath + "\temp\logs\";
                //创建文件夹
                if (!Directory.Exists(strDicPath))
                {
                    Directory.CreateDirectory(strDicPath);
                }
            }
    
            /// <summary>
            /// 写入日志.
            /// </summary>
            /// <param name="strList">The STR list.</param>
            /// <remarks>  </remarks>
            /// <Description></Description>
            public static void WriteLog(params object[] strList)
            {
                if (strList.Count() == 0) return;
                string strPath = "";  //文件路径
                try
                {
                    strPath = strDicPath + string.Format("{0:yyyy年-MM月-dd日}", DateTime.Now) + "日志记录.txt";
                }
                catch (Exception e)
                {
                    strDicPath = "C:\temp\log\";
                    strPath = strDicPath + string.Format("{0:yyyy年-MM月-dd日}", DateTime.Now) + "日志记录.txt";
                }
    
                //todo:自动创建文件(但不能创建文件夹),并设置文件内容追加模式,使用using会自动释放FileSteam资源
                using (FileStream stream = new FileStream(strPath, FileMode.Append))
                {
                    lock (stream)  //锁定资源,一次只允许一个线程写入
                    {
                        StreamWriter write = new StreamWriter(stream);
                        string content = "";
                        foreach (var str in strList)
                        {
                            content += "rn" + DateTime.Now.ToString() + "-----" + str;
                        }
                        content += "rn-----z-----rn";
                        write.WriteLine(content);
    
                        //关闭并销毁流写入文件
                        write.Close();
                        write.Dispose();
                    }
                }
            }
    
    
            /// <summary>
            /// 写入日志.
            /// </summary>
            /// <param name="strList">The STR list.</param>
            /// <remarks></remarks>
            /// <Description></Description>
            public static void WriteLog(Action DefFunc, Func<string> ErrorFunc = null)
            {
                try
                {
                    DefFunc();
                }
                catch (Exception ex)
                {
                    string strPath = strDicPath + string.Format("{0:yyyy年-MM月-dd日}", DateTime.Now) + "日志记录.txt";
    
                    //todo:自动创建文件(但不能创建文件夹),并设置文件内容追加模式,使用using会自动释放FileSteam资源
                    using (FileStream stream = new FileStream(strPath, FileMode.Append))
                    {
                        lock (stream)   //锁定资源,一次只允许一个线程写入
                        {
                            StreamWriter write = new StreamWriter(stream);
                            string content = "rn" + DateTime.Now.ToString() + "-----" + ex.Message;
                            content += "rn" + DateTime.Now.ToString() + "-----" + ex.StackTrace;
                            content += "rn-----z-----rn";
                            write.WriteLine(content);
    
                            //关闭并销毁流写入文件
                            write.Close();
                            write.Dispose();
                        }
                    }
                }
            }
        }
    

      二、repr(),它会创建一个字符串,以合法的Python表达式的形式来表示值。

     

      对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:

    本文由金沙国际官网发布于编程,转载请注明出处:自定义日志记录,微信支付过程遇到的问题

    关键词: