zoukankan      html  css  js  c++  java
  • 微信公众平台开发教程 [付视频]

       这几年,微信非常流行,也是唯一可以和QQ抗衡的即时通,当然他们是一家子,微信除了有即时通的功能外,还有一些其他的功能,公众号就是其中之一,微信创始人甚至扬言微信可以实现大部分APP的功能,鉴于这样,最近两年很多开发者都转向了微信开发这一块,甚至有些公司也专门做微信开发的,微信公众号可以提供新闻推送,可以进行业务处理等等

       本人接触微信开发也不多,只是公司有个项目用到了,但是在经过一次微信开发以后,感觉基本的使用也不难,下面是本人在开发中的一些总结,本人才疏学浅,不排除有讲得不对或者漏了的地方,多多包涵,也望能指出,互相学习,互相进步...

       下面是部分笔记

    注册公众平台账号

    个人只能注册订阅号https://mp.weixin.qq.com
    订阅号 服务号 企业号 三者能使用的功能不相同
    注册的账号需要跟微信号绑定(微信号需要绑定银行卡)
    注册地址:
    https://mp.weixin.qq.com/cgi-bin/readtemplate?t=register/step1_tmpl&lang=zh_CN
    注册需要邮箱激活

    登录微信公众平台

    微信公众平台登陆后,用户可以直接使用微信公众平台进行消息群发,添加微信公众号菜单等

    给公众号添加测试账号

    作为开发人员,可以使用普通微信号来测试功能
    登陆公众平台后,在开发》开发者工具》里面可以扫描二维码添加测试账号
    此过程需要扫描你微信几次
    扫描测试号二维码可以给测试公众号添加测试账号
    在功能》群发功能》添加文字群发,
    看测试账号是否收到
    不过由于上面直接公众平台群发功能是正式的功能,所以一天只能群发一条消息 测试号则比这个权限多

    对微信进行接口开发

    该功能允许我们调用微信的接口,进行第三方系统的对接,这样我们在微信平台上面的很多操作,就不需要在微信平台上面操作了,我们可以直接在我们自己的系统上面进行微信公众平台的一些操作,比如添加菜单,群发消息,获取用户,消息回复等等

    微信|公众平台开发者文档

    http://mp.weixin.qq.com/wiki/home/index.html
    我们本课程就是基于微信提供的开发文档
    刚才注册的公众号如果未认证测拥有的权限是不i一样的
    http://mp.weixin.qq.com/wiki/13/8d4957b72037e3308a0ca1b21f25ae8d.html
    具体可以查看上面的

    开发之前的准备

    在开发》基本配置哪里,如果首次进入,则需要同意协议
    点击成为开发者后,会为开发者生产appid和appsecret
    这两个是公众号和微信服务器进行交互的账号密码




    服务器配置

    开发者需要先开启服务器配置

    填写URL token 消息加密密钥等
    URL:开发者用来接收微信消息和事件的接口地址
    Token:可以任意填写,用作生成签名k
    该Token会和接口URL中包含的Token进行比对,从而验证安全性
    EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥
    还可以选择消息加解密方式:明文模式(默认)、兼容模式和安全模式
    上面的配置会保存立即生效,需要谨慎操作
    添加服务器配置的时候 需要先开启,开启需要补全资料,比如上传头像等

    微信是服务器和服务器之间的交换,所以我们需要一台服务器
    (虚拟空间,VPS都可以)
    搭建一个web测试站,需要注册一个域名(80端口的)
    可以是子域名 比如
    weixin.bamn.cn

    配置域名 80端口

     我还需要为填写的URL进行一些操作
    如果你的接口是PHP的可以参考官网提供的
    我们这里是ASP.NET:
    http://weixin.bamn.cn/WeiXinTokenApi.aspx 如果是https则443端口
    微信服务器那边会往我们上面的地址 进行get操作,我们接口中可以拿到微信服务器传过来的三个参数signature timestamp nonce

    加密/校验(和微信服务器校验-握手)

    1获取微信服务器传过来的四个参数
    2 对这三个参数进行“字典序排序”
    3 拼接三个字符串
    4 对拼接的字符串进行sha1加密
    4 成功验证 原样返回
    具体可以查看WeiXinTokenApi.aspx.cs页面的代码

     protected void Page_Load(object sender, EventArgs e)
            {
    
                if (Request.RequestType.ToLower().Equals("post"))
                {
                    //接收消息
                    ResponseMsg();
                }
                else
                {
                    //校验接口
                    CheckSignature();
                }
                Response.End();
            }

    检验接口

     /// 
            /// 校验方法
            /// 
            private void CheckSignature()
            {
                try
                {
                    //1获取微信服务器传过来的四个参数
                    string signature = Request.QueryString["signature"];
                    string timestamp = Request.QueryString["timestamp"];
                    string nonce = Request.QueryString["nonce"];
                    string echostr = Request.QueryString["echostr"];//该字符串用来成功验证后原样返回
    
                    string token = TOKEN;
                    string[] tmpArr = new string[] { token, timestamp, nonce };//2 对这三个参数进行“字典序排序”
                    Array.Sort(tmpArr);
                    string tmpStr = string.Join("", tmpArr);//3 拼接三个字符串
                    tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");//4 sha1加密
                    tmpStr = tmpStr.ToLower();
                    if (tmpStr == signature)
                    {
                        SetCacheDateTime("Item", tmpStr + ":" + signature + " " + echostr, 3600);
                        //4 成功验证原样返回
                        HttpContext.Current.Response.Write(echostr);
                    }
                    else {
                        SetCacheDateTime("Item", "验证不通过", 3600);
                        Response.Write("验证不通过");//随便返回
                    }
                }
                catch (Exception ex)
                {
                    SetCacheDateTime("Item", ex.Message, 3600);
                    Response.Write(ex.Message);//随便返回
                }
            
    列表
    4-4节-公众号发送消息包括文本 图片 图文 语音 视频 等等
    4-3节-点击菜单跳转链接时的事件推送
    4-2节-处理自定义菜单事件返回歌曲名称
    4-1节-接收事件推送-BAMN.CN北盟网校
    3-10节-补充说明微信接口如何获取音频 视频 图文等的内容
    3-9节-接收微信号发过来的链接消息
    3-8节-接收微信号的地理位置消息
    3-7节-接收小视频消息
    3-6节-接收微信号的视频消息
    3-5节-接收微信号的语言消息-BAMN.CN北盟网校
    3-4节-接收微信号发送的图片消息-BAMN.CN北盟网校
    3-3节-响应微信服务器,做一个【客服】自动回复的功能
    3-2节-不要在try catch里面进行response.end
    3-1节-接收普通微信号发送过来的消息
    2-4节-查询菜单(获取菜单的json文本,通常用于同步菜单到网站系
    2-3节-删除微信菜单接口的使用
    2-2节-反序列化JSON结果
    2-1节-自定义菜单创建接口给公众号添加菜单
    1-6节-获取微信服务器IP地址
    1-5节-添加一个基类Page添加AppID和AppSecret
    1-4节-Json反序列化和HttpGet封装和上节课的补充
    1-3节 获取access token
    1-2节-加密校验(和微信服务器校验-握手)
    1-1节-开发前的一些准备注册公众号和准备域名虚拟空间等

     如看视频 可以访问 http://www.iqiyi.com/u/2086142358

    未完待续 希望对你有帮助

  • 相关阅读:
    SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long 解决方法
    Apache Commons 简介
    CSS设置只显示两行文字
    HTML中关于动态创建的标签无法绑定js事件的解决方法:.on()方法的 [.selector]
    AISing Programming Contest 2021(AtCoder Beginner Contest 202)E
    CF620E New Year Tree(dfs序+线段树)
    HDU6955 2021多校 Xor sum(字典树+前缀和异或)
    HDU6959 2021多校 zoto(莫队+分块)
    CF1285D Dr. Evil Underscores(分治)
    CF706D Vasiliy's Multiset(字典树的删除)
  • 原文地址:https://www.cnblogs.com/maijin/p/6032420.html
Copyright © 2011-2022 走看看