2015-08-28 15:42:14 u010773333 阅读数 5612
  • 微信公众平台深度开发v2.0第2季——获取微信服务器IP...

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    27774 人正在学习 去看看 翟东平

      上几篇文章基本是介绍有手机客户端触发的事件在先,这种有手机微信客户端触发的请求,咱们的服务器被动响应,这种模式我个人理解为被动发送信息。

但是除此之外我们有时间要让用户推送消息,比如向家长每天发送孩子的作业信息。这就要用到模板消息了

对于模板消息首先要添加

进入模板选择行业之后就要等两天才能用模板消息

能用模板消息之后 根据自己的情况,查看模板选择适用于自己的模板 如果没有可以自己定义 只要微信官方审核通过就可以用(我申请的好像说是7-15天,完成审计,但是好像30分钟就给我发通知说申请成功)

后两个都是我自己申请的模板。

给一个我调用模板的方法

 [WebMethod(Description = "测试优学酷能力报告")]
        public string TestEveryOneWeek(string featherOpenid)
        {
            string url = "http://......";
            string first = "亲爱的家长,您孩子能力报告出炉通知\n";
            var keyword1 = string.Format("英语");
            var keyword2 = "单词、语法很棒哦!听力、口语还不错!差一点就当学霸了,继续加油!\n";
            var remark = "点击“详情”查看";
            //得到所需要的模板数据
            var data = MessageTemplate.NoticeYouxuekuEvery(first, keyword1, keyword2, remark);
            //模板标号
            string templateid = "XakPchhUx1InpJX0pxDqmDKKQz6-ocrPTn682sV5VSw";
            featherOpenid = "............";  //我个人微信的openid
            bool sendsucess = SendTemplateMessageService.SendTemplateMessage(templateid, featherOpenid, url, data);
            if (sendsucess)
            {
                return "成功";
            }
            else
            {
                return "失败";
            }
        }

要给所谓的消息,制成固定格式如下 格式并添加颜色

      public static object NoticeYouxuekuEvery(string first, string keyword1, string keyword2,string remark)
        {
            var data = new
            {
                first = new TemplateDataItem(first, "#000000"),
                keyword1 = new TemplateDataItem(keyword1, "#000000"),
                keyword2 = new TemplateDataItem(keyword2, "#000000"),
                remark = new TemplateDataItem(remark, "#000000")
            };
            return data;
        }

里面的first,keyword1,keyword2,remark都是模板里面的参数。

调用发送消息方法如下

public static bool SendTemplateMessage(string templateId, string openId, string url, object data)
        {
            WeiXinService weixin = new WeiXinService();
            var accessToken = weixin.GetAccessToken();
            var getInfoUrl = string.Format(GetBaseUserInfoApi, accessToken, openId);
            WeiXinUserInfo userInfo = HttpClientHelper.GetResponse<WeiXinUserInfo>(getInfoUrl);
            string resultes=null;
            //判断用户是否关注公众号
            switch (userInfo.Subscribe)
            {
                case 0:
                    break;
                default:
                    var sendUrl = string.Format(SendMessageApi, accessToken);
                    var msg = new TemplateMessage
                    {
                        template_id = templateId,
                        touser = openId,
                        url = url,
                        data = data
                    };
                   //序列化实体为json
                   string json = JsonConvert.SerializeObject(msg, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
                   //调用消息发送接口
                   var result = HttpClientHelper.PostResponse<TemplateMessageResult>(string.Format(sendUrl, accessToken), json);
                   resultes = result.errmsg;
                    break;
            }
            if (resultes=="ok")
            {
                return true;
            }
            else
            {
                return false;
            }
        }

如果知道了用户的openid,这样就可以使用模板消息,主动向手机客户端发送消息了。



2015-08-28 10:40:11 u010773333 阅读数 2236
  • 微信公众平台深度开发v2.0第2季——获取微信服务器IP...

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    27774 人正在学习 去看看 翟东平

微信开发第二篇

上一篇讲述了公众号内部的程序员需要注意的一些内容。http://blog.csdn.net/u010773333/article/details/48047031

这里进行服务器被动交互的基础讲解,被动交互是由手机微信客户端发起的请求。开发公众微信号的准备一台外网服务器(80端口不能禁用或者被占用),申请一个自己网站的域名。

下面要编写代码,首先要知道自己的服务器,微信服务器,和手机微信客户端之间的运行原理


下面需要编写自己的代码,并且挂到自己的服务器了。我这个以C#语言进行讲解

首先要拿到微信公众号的AppID(应用ID) ,AppSecret(应用密钥),URL(服务器地址),Token(令牌),EncodingAESKey(消息加解密密钥)

先建一个项目(随便一个项目)设置一个首页,把这个项目用自己申请的域名挂到自己的服务器(一定要用80端口)并能实现简单的访问。

之后配置url和Token 主要是Token这个要参看微信官方文档。url就是自己服务器上的那个自己的项目首页就是交互时微信服务器首先访问的页面。一定要启用“服务器配置”如下图



对于微信服务器第一次请求咱们自己的服务器是发的是get请求,新的账号首先要微信接入测试。

在首页首先判断是不是第一次访问要是get请求说明是第一次要进行微信接入测试。测试成功之后就不在测试了,这段代码原则性只执行一遍。

代码如下:

if (Request.HttpMethod == "GET")
            {
                Auth(); //微信接入的测试
            }
            else
            {
                Stream s = System.Web.HttpContext.Current.Request.InputStream;
                byte[] b = new byte[s.Length];
                s.Read(b, 0, (int)s.Length);
                postStr = Encoding.UTF8.GetString(b);
                if (!string.IsNullOrEmpty(postStr)) //请求处理  
                {
                    weixinservice.Handle(postStr);
                }  
            }

 public void Auth()
        {
            string echoStr = System.Web.HttpContext.Current.Request.QueryString["echoStr"];
            if (CheckSignature())
            {
                if (!string.IsNullOrEmpty(echoStr))
                {
                    System.Web.HttpContext.Current.Response.Write(echoStr);
                    System.Web.HttpContext.Current.Response.End();
                }
            }
        }

并且需要知道微信服务器和咱们自己的服务器的交互是xml格式

          <xml>
                  <ToUserName><![CDATA[{0}]]></ToUserName>
                  <FromUserName><![CDATA[{1}]]></FromUserName>
                  <CreateTime>{2}</CreateTime>
                  <MsgType><![CDATA[event]]></MsgType>
                   <Event><![CDATA[{3}]]></Event>
                   <EventKey>{4}</EventKey>
                   </xml>

在WeixinService类中添加如下方法

      private string RequestXml { get; set; }

        public void Handle(string postStr)
        {
            //封装请求类  
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(postStr);
            XmlElement rootElement = doc.DocumentElement;
            //MsgType  
            XmlNode MsgType = rootElement.SelectSingleNode("MsgType");
            //接收的值--->接收消息类(也称为消息推送)  
            WeiXinModel requestXML = new WeiXinModel();
            requestXML.ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText;
            requestXML.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText;
            requestXML.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText;
            requestXML.MsgType = MsgType.InnerText;
            string response = string.Empty;
            EventMessage em = EventMessage.LoadFromXml(RequestXml);
            IHandler handler = null;
            //根据不同的类型进行不同的处理
            switch (requestXML.MsgType)
            {
                case "text":
                    //requestXML.Content = rootElement.SelectSingleNode("Content").InnerText;
                    handler = new TextHandler(postStr);
                    response = handler.HandleRequest();
                    break;
                case "image": //图片  
                    requestXML.PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText;
                    break;
                case "location": //位置  
                    requestXML.Location_X = rootElement.SelectSingleNode("Location_X").InnerText;
                    requestXML.Location_Y = rootElement.SelectSingleNode("Location_Y").InnerText;
                    requestXML.Scale = rootElement.SelectSingleNode("Scale").InnerText;
                    requestXML.Label = rootElement.SelectSingleNode("Label").InnerText;
                    break;
                case "link": //链接
                    //response = SubscribeEventHandler(em);
                    break;
                case "event": //事件推送 支持V4.5+  
                    handler = new Kingsun.WeiXin.Handlers.EventHandler(postStr);
                    response = handler.HandleRequest();
                    break;
            }
            //回复消息
            HttpContext.Current.Response.Clear();
            HttpContext.Current.Response.Charset = "UTF-8";
            HttpContext.Current.Response.Write(response);
            HttpContext.Current.Response.End();          
        }

其中requestXML.MsgType就是手机微信端出发的是什么事件的类型。咱们服务器通过手机端的不同类型可以做出不同相应,其中

可以接收用户手机微信客户端的一些信息如我新建了一个WeiXinModel类:发送方openid,接收方openid ,时间和类型。

           WeiXinModel requestXML = new WeiXinModel();
            requestXML.ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText;
            requestXML.FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText;
            requestXML.CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText;
            requestXML.MsgType = MsgType.InnerText;

其中event事件比较特殊 event事件 subscribe(扫描二维码并且可以通过方法把手机微信openid存到自己的服务器上),scan(扫描带参数二维码,并直接关注事件),click(点击事件)这三种,具体看微信官方给的解释

我的代码如下:

EventMessage em = EventMessage.LoadFromXml(RequestXml);
            string content = "";
            if (em != null)
            {
                switch (em.Event.ToLower())
                {
                    case ("subscribe"):
                        //加载菜单
                        if (string.IsNullOrEmpty(em.EventKey))
                        {
                            //response = ResponseMessage.GetText(em.FromUserName, em.ToUserName, "关注成功");                 
                            response = SubscribeEventHandler(em);
                        }
                        else
                        {
                            content = em.EventKey.Replace("qrscene_", "");//二维码携带的信息
                            response = SubscribeEventHandler(em, content);//扫描带参数二维码先关注后推送事件
                        }
                        break;
                    case "scan":
                        response = ResponseMessage.ScanQrcode(em.FromUserName, em.ToUserName, em.EventKey);//扫描带参数二维码已关注 直接推送事件
                        break;
                    case "click":
                        response = ClickEventHandler(em);
                        break;
                }
            }
            return response;


其中给出一个点击事件:

        /// <summary>
        /// 关注
        /// </summary>
        /// <param name="em"></param>
        /// <returns></returns>
        private string SubscribeEventHandler(EventMessage em)
        {
            //回复欢迎消息
            TextMessage tm = new TextMessage();
            tm.ToUserName = em.FromUserName;
            tm.FromUserName = em.ToUserName;
            tm.CreateTime = Commons.GetNowTime();
            tm.Content = "亲,您已经学会了服务器被动交互";
            return tm.GenerateContent();
        }




2017-09-12 14:35:08 dlz_Mr 阅读数 289
  • 微信公众平台深度开发v2.0第2季——获取微信服务器IP...

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    27774 人正在学习 去看看 翟东平

微信开发笔记(1)——配置微信服务器、验证信息

配置微信服务器消息验证接口

微信开发需要你有自己的服务器才可以;如果没有公网服务器,有内网映射工具也是可以,我用的花生壳,网上比较多,大家可以搜索一下

登录微信mp平台

https://mp.weixin.qq.com
如果已经注册直接登录即可,未注册的话点击注册先行注册

配置服务器信息
在mp平台上:开发菜单-基本配置中配置服务器
这里写图片描述

*此处的url配制成你自己服务器的接口,此接口为get方式
*此处的Token和之后会涉及到的access_token不同,这里的token是自己定义的,用来验证消息是不是微信服务器发送过来的
*消息加密密钥随机生成就可以,如果之后选择安全模式则需要此处的密钥

都配置完毕后点击提交验证一下服务器可用性;如果提示配置成功则证明你的服务器可用且代码逻辑正确;如果配置失败根据具体提示检验服务器可用性和代码逻辑问题。

java代码逻辑:验证消息是否为微信服务器发来

微信服务器会请求你配置的服务器url,并携带以下参数:
signature :微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数
echostr 随机字符串
验证逻辑:
1)将token、timestamp、nonce三个参数进行字典序排序
2)将三个参数字符串拼接成一个字符串进行sha1加密
3)将自己加密后获得的字符串可与signature对比,如果与微信服务器返回的加密字符串signature一样,那就将微信返回来的echostr 随机字符串原封不懂的返回微信服务器,不对的话返回空串或者什么都不返回
java代码示例:

public void pushMessage(HttpServletRequest request, HttpServletResponse response) throws IOException {
        log.info("WeChatController-->pushMessage():start");
        // 微信加密签名
        String signature = request.getParameter("signature");
        // 时间戳
        String timestamp = request.getParameter("timestamp");
        // 随机数
        String nonce = request.getParameter("nonce");
        // 随机字符串
        String echostr = request.getParameter("echostr");

        PrintWriter out = response.getWriter();
        // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
        if (SignUtil.checkSignature(signature, timestamp, nonce)) {
            out.print(echostr);
        }
        out.close();
        out = null;
   }  
    /** 
     * 验证签名 
     *  
     * @param signature 
     * @param timestamp 
     * @param nonce 
     * @return 
     */
    public static boolean checkSignature(String signature, String timestamp,String nonce) {
        String []arr = new String []{token,timestamp,nonce};
        Arrays.sort(arr);
        StringBuffer content = new StringBuffer();
        for (int i = 0; i < arr.length; i++) {
            content.append(arr[i]);
        }
        MessageDigest md = null;
        String tmpStr = null;
        try {
            md = MessageDigest.getInstance("SHA-1");
            byte[] digest = md.digest(content.toString().getBytes());
            tmpStr = byteToStr(digest);
        } catch (NoSuchAlgorithmException e) {
            // TODO: handle exception
        }
        content = null;
        return tmpStr!=null?tmpStr.equals(signature.toUpperCase()):false;
    }

/** 
     * 将字节数组转换为十六进制字符串 
     *  
     * @param byteArray 
     * @return 
    public static String byteToStr(byte[] byteArray) {
        String strDigest ="";
        for (int i = 0; i < byteArray.length; i++) {
            strDigest +=byteToHexStr(byteArray[i]);
        }
        return strDigest;
    }

编写验证url的post接口
当与微信服务器验证url无误后,微信服务器后将将用户请求的信息以post方式发送到验证url的post接口上,此时就需要你在这个接口中处理剩下的逻辑
微信服务器会将信息以xml的方式放到request中,所以我们需要将流中的xml信息解析出来,获取xml中的数据。
xml信息类似如下:
这里写图片描述

解析流中的xml代码示例:

public static Map<String, String> parseXml(HttpServletRequest request) throws Exception {
        // 将解析结果存储在HashMap中
        Map<String, String> map = new HashMap<String, String>();
        // 从request中取得输入流
        InputStream inputStream = request.getInputStream();
        // 读取输入流
        SAXReader reader = new SAXReader();
        Document document = reader.read(inputStream);
        // 得到xml根元素
        Element root = document.getRootElement();
        // 得到根元素的所有子节点
        List<Element> elementList = root.elements();

        // 遍历所有子节点
        for (Element e : elementList){
            System.out.println("-->e.getName()-->"+e.getName() +"-->e.getText()-->"+e.getText());
            map.put(e.getName(), e.getText());
        }
        // 释放资源
        inputStream.close();
        inputStream = null;

        return map;
    }
2019-06-14 14:52:01 weixin_42152604 阅读数 720
  • 微信公众平台深度开发v2.0第2季——获取微信服务器IP...

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    27774 人正在学习 去看看 翟东平

1、接入图如下: 

Url是我们用来认证我们用来验证的接口

我们填写的url必须是在公网上的,我介绍一个免费的内网穿透工具给大家,在下方链接博客中

https://blog.csdn.net/weixin_42152604/article/details/88662706

 

Token和我们在我们自己的服务端配置的应该是一致的

至于下方的这个加密方式,我们没有设置,使用的是明文,因此无所谓

2、后台代码

(1)请求到的方法

/**
 * 作者:程序猿-南巷清风
 * 博客地址:https://blog.csdn.net/weixin_42152604(关注一下下^_^)
 * QQ:1821119445  java开发的朋友们可以加(非诚勿扰好吧!)
 */
@RestController
@RequestMapping("/weChat")
public class WeiXinController {
    @GetMapping("/signature")
    public String signature(String signature,String timestamp,String nonce,String echostr){
        if(SignUtil.checkSignature(signature, timestamp, nonce)){
            return echostr;
        }
        return null;
    }

}

 (2)工具类

/**
 * 类名: SignUtil </br>
 * 描述: 检验signature 工具类 </br>
 */
public class SignUtil {

    // 与接口配置信息中的Token要一致
    private static String token = "nxqfToken";

    /**
     * 方法名:checkSignature</br>
     * 详述:验证签名</br>
     * @param signature
     * @param timestamp
     * @param nonce
     * @return
     * @throws
     */
    public static boolean checkSignature(String signature, String timestamp,String nonce) {
        // 1.将token、timestamp、nonce三个参数进行字典序排序
        String[] arr = new String[] { token, timestamp, nonce };
        Arrays.sort(arr);

        // 2. 将三个参数字符串拼接成一个字符串进行sha1加密
        StringBuilder content = new StringBuilder();
        for (int i = 0; i < arr.length; i++) {
            content.append(arr[i]);
        }
        MessageDigest md = null;
        String tmpStr = null;
        try {
            md = MessageDigest.getInstance("SHA-1");
            // 将三个参数字符串拼接成一个字符串进行sha1加密
            byte[] digest = md.digest(content.toString().getBytes());
            tmpStr = byteToStr(digest);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }

        content = null;
        // 3.将sha1加密后的字符串可与signature对比,标识该请求来源于微信
        return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;
    }

    /**
     * 方法名:byteToStr</br>
     * 详述:将字节数组转换为十六进制字符串</br>
     * @param byteArray
     * @return
     * @throws
     */
    private static String byteToStr(byte[] byteArray) {
        String strDigest = "";
        for (int i = 0; i < byteArray.length; i++) {
            strDigest += byteToHexStr(byteArray[i]);
        }
        return strDigest;
    }

    /**
     * 方法名:byteToHexStr</br>
     * 详述:将字节转换为十六进制字符串</br>
     * @param mByte
     * @return
     * @throws
     */
    private static String byteToHexStr(byte mByte) {
        char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A','B', 'C', 'D', 'E', 'F' };
        char[] tempArr = new char[2];
        tempArr[0] = Digit[(mByte >>> 4) & 0X0F];
        tempArr[1] = Digit[mByte & 0X0F];
        String s = new String(tempArr);
        return s;
    }
}

填写URL的时候,一定要看你本地映射的是什么端口,如果是80,那么就用http请求,如果是443,就用https请求,否则访问不到,会报错,系统错误

2015-11-30 10:10:45 iteye_9461 阅读数 20
  • 微信公众平台深度开发v2.0第2季——获取微信服务器IP...

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    27774 人正在学习 去看看 翟东平
微信在现在的生活中,扮演着举足轻重的角色,现在怎么东西都在微信上运转得风生水起,如微信支付,微信购物,微信红包等等。那么微信开发的原理又是怎样的呢?

这里要区分两个概念:[b]微信服务器[/b]和[b]应用服务器[/b]

[b]微信服务器是腾讯的服务器,它做的工作是转发的作用。
应用服务器的使用是接收微信服务器的请求,处理逻辑,向微信服务器响应请求。[/b]

所以整个示意图如下:

[b]用户 <---> 微信服务器 <---> 应用服务器[/b]

用户直接打交道的是微信服务器,处理逻辑的是应用服务器。

应用服务器上运行的服务的程序语言有多种,如何来做到通用呢?或者说用一种什么样的通讯格式来使所有的开发都支持呢?

答案是[b]xml[/b]样式来传输。

所以微信开发的技能要求如下:

1) [b]web开发基础[/b](它本质上还是在应用服务器上开发程序,只不过是接受微信的请求和响应微信);

2)[b] xml处理[/b](所有数据的传输都是基于xml样式,这个是为了不同语言开发的通用性);

3) [b]微信开发接口[/b],这个是微信定义的,需要遵循它的规范。

以上就是微信开发三点必备技能。

微信开发流程

阅读数 680

没有更多推荐了,返回首页