MyException - 我的异常网
当前位置:我的异常网» ASP.NET » 记一次微信大众号的开发与后台搭建

记一次微信大众号的开发与后台搭建

www.MyException.Cn  网友分享于:2013-09-28  浏览:0次
记一次微信公众号的开发与后台搭建

一.背景

  刚入新公司不久,就碰见一个同事要离职,就交接了这个项目给我。同事的离职比较仓促,所以交接的也不是很好,这也是后面问题偏多的一个客观原因。项目如题所示,前端采用vue.js+node.js开发,后台采用c#开发接口,还需要开发一个c#的网站来展示数据。上一份工作做的是erp,用的是powerbuilder,所以这个项目还是涉及到比较多的生疏知识。

二.遇到的问题

  1.微信测试环境搭建

    微信的测试环境搭建还是比较麻烦的(对于新手来说),但是我回过头去看的时候,也不知道该写些什么,还是网上找教程吧。

2.微信录音上传下载
  微信录音如果想要下载的指定路径,需要先上传录音到微信服务器,再根据返回的serverId(即下载的MEDIA_ID)去微信提供的接口下载到你目标路径,微信测试环境没问题的话,按照这个基本上就没有问题,不过调试之类的比较麻烦,只能通过写日志的方式查看。微信也提供了一个供测试的界面,输入参数,可以获取报错信息。
/// <SUMMARY> 
        /// 下载保存多媒体文件,返回多媒体保存路径 
        /// </SUMMARY> 
        /// <PARAM name="ACCESS_TOKEN"></PARAM> 
        /// <PARAM name="MEDIA_ID"></PARAM> 
        /// <RETURNS></RETURNS> 
        public string GetMultimedia(string ACCESS_TOKEN, string MEDIA_ID)
        {
            string file = string.Empty;
            string strpath = string.Empty;
            string stUrl = Common.TextHelper.WXUploadMediaUrl+"?access_token=" + ACCESS_TOKEN + "&media_id=" + MEDIA_ID;

            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(stUrl);

            req.Method = "GET";
            using (WebResponse wr = req.GetResponse())
            {
                HttpWebResponse myResponse = (HttpWebResponse)req.GetResponse();

                strpath = myResponse.ResponseUri.ToString();

                WebClient mywebclient = new WebClient();
                string basePath = AppDomain.CurrentDomain.BaseDirectory + "Attachment";//附件临时存放路径
                string amrFile = DateTime.Now.ToString("yyyyMMddhhmmssms")+".amr";
                string mp3File= DateTime.Now.ToString("yyyyMMddhhmmssms")+".mp3";
                try
                {
                    mywebclient.DownloadFile(strpath, Path.Combine(basePath, amrFile));
                    ConvertToMp3(Path.Combine(basePath, amrFile), Path.Combine(basePath, mp3File));
                    file = mp3File;
                    //file = amrFile;
                }
                catch (Exception ex)
                {
                    //savepath = ex.ToString();
                }

            }
            return file ;
        }
View Code

 

参考文档:http://www.cnblogs.com/zhangs1986/p/3636234.html
3.微信录音格式转换
  amr格式的文件,网页不能播放,所以需要转换成MP3格式,查看了许多都选择使用第三方工具ffmpeg。刚开始使用的时候,遇到了MP3可以转成wav格式,但是amr格式不能转成mp3的尴尬局面。折腾了许久,后面经过检查才发现用于测试的amr文件坏掉了。这个故事告诉我们一定要细心,还有遇到问题不用慌,深呼吸一口气,从头检查一遍,或许会有收获。
public string ConvertToMp3(string pathBefore, string pathLater)
         {
             string c = System.Web.HttpContext.Current.Server.MapPath("/ffmpeg/") + @"ffmpeg.exe -i " + pathBefore + " " + pathLater;
             log.WriteLine(c);
             string str = RunCmd(c);
             return str;
         }

        /// <summary>
        /// 执行Cmd命令
        /// </summary>
        private string RunCmd(string c)
        {
            try
            {
                ProcessStartInfo info = new ProcessStartInfo("cmd.exe");
                info.RedirectStandardOutput = false;
                info.UseShellExecute = false;
                Process p = Process.Start(info);
                p.StartInfo.UseShellExecute = false;
                p.StartInfo.RedirectStandardInput = true;
                p.StartInfo.RedirectStandardOutput = true;
                p.StartInfo.RedirectStandardError = true;
                p.Start();
                p.StandardInput.WriteLine(c);
                p.StandardInput.AutoFlush = true;
                Thread.Sleep(1000);
                p.StandardInput.WriteLine("exit");
                p.WaitForExit();
                string outStr = p.StandardOutput.ReadToEnd();
                p.Close();

                return outStr;
            }
            catch (Exception ex)
            {
                return "error" + ex.Message;
            }
        }
View Code
参考文档:http://www.cnblogs.com/LittleBai/p/5924416.html
 
 
4.路径正确,却无法获取附件(iis mine类型配置)
  公众号提交的信息包含图片、音频、视频,上传到服务器后都是放在同一个文件夹,但是网页显示的时候,图片可以访问,音频、视频却提示不能访问。问了老大才知道iis上mine类型需要加下配置。由于我之前做的不是网页开发,甚至不是c#开发,所以很多坑还没踩过,只能一个个踩过去,才会长记性。所谓经验,大概就是踩过的坑比较多吧!
5.图片旋转
  这个倒是没什么好说的,图片旋转的简单实现而已
 
function rotate(row)
{
    var deg = eval('get' + $("#" + row).css('transform'));//构造getmatrix函数,返回上次旋转度数  
    var step = 90;//每次旋转多少度  
    $("#" + row).css({ 'transform': 'rotate(' + (deg + step) % 360 + 'deg)' });
}

function getmatrix(a, b, c, d, e, f) {
    var aa = Math.round(180 * Math.asin(a) / Math.PI);
    var bb = Math.round(180 * Math.acos(b) / Math.PI);
    var cc = Math.round(180 * Math.asin(c) / Math.PI);
    var dd = Math.round(180 * Math.acos(d) / Math.PI);
    var deg = 0;
    if (aa == bb || -aa == bb) {
        deg = dd;
    } else if (-aa + bb == 180) {
        deg = 180 + cc;
    } else if (aa + bb == 180) {
        deg = 360 - cc || 360 - dd;
    }
    return deg >= 360 ? 0 : deg;
    //return (aa+','+bb+','+cc+','+dd);  
}
View Code

 参考文档: http://m.blog.csdn.net/cengjingcanghai123/article/details/53537242

  
  

三.总结

  花了将近一个月的时间,虽然过程磕磕碰碰,但总体来说还是完成了任务。不足之处有很多,比如前端样式贼丑(虽然我不是前端,不过小公司只能前后端兼收并蓄了),比如效率略低(这个是因为我之前做的是pb,c#虽然有基础,但是实际的开发经验并不多)。大体来说,对自己的表现还算满意,毕竟涉及到的东西都不太熟悉,一个月的时候能够完成任务,打个60分吧!我的优点在于逻辑能力与数据库(上一份工作是做erp的,虐出来),缺点也很明显(基础不够好,所以还是需要狠补基础),希望再接再厉!如果写下的这篇文章能够解决某个猿的部分问题,可以让某些猿少踩一个坑,我就挺开心的!文笔不好,絮絮叨叨,求轻虐!

 

文章评论

2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
为什么程序员都是夜猫子
为什么程序员都是夜猫子
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
中美印日四国程序员比较
中美印日四国程序员比较
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
漫画:程序员的工作
漫画:程序员的工作
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
每天工作4小时的程序员
每天工作4小时的程序员
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
代码女神横空出世
代码女神横空出世
如何成为一名黑客
如何成为一名黑客
旅行,写作,编程
旅行,写作,编程
老程序员的下场
老程序员的下场
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
程序员都该阅读的书
程序员都该阅读的书
一个程序员的时间管理
一个程序员的时间管理
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
程序员的鄙视链
程序员的鄙视链
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
程序员必看的十大电影
程序员必看的十大电影
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
那些争议最大的编程观点
那些争议最大的编程观点
Java程序员必看电影
Java程序员必看电影
程序员应该关注的一些事儿
程序员应该关注的一些事儿
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
编程语言是女人
编程语言是女人
10个调试和排错的小建议
10个调试和排错的小建议
程序员和编码员之间的区别
程序员和编码员之间的区别
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有