zoukankan      html  css  js  c++  java
  • java微信公众平台开发

     微信公众平台的开发,总体说来也是简单的,就是先大概看下微信公众平台接口文档

    请先大概浏览一下API手册,我们会发现,推送给微信服务器的数据有两种:xml的形式,和json的形式.

    那么什么时候是XML格式,什么时候是json格式呢?

     

    废话不多说,先上个流程图:用户发送任意文字,我们回复一条图文消息:

    (1)这是一种接收消息--回复消息的模式:

    2标志的xml格式:

    <xml>
     <ToUserName><![CDATA[toUser]]></ToUserName>
     <FromUserName><![CDATA[fromUser]]></FromUserName>
     <CreateTime>1348831860</CreateTime>
     <MsgType><![CDATA[text]]></MsgType>
     <Content><![CDATA[this is a test]]></Content>
     <MsgId>1234567890123456</MsgId>
     </xml>

    3标志的xml格式:

    <xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>
    <FromUserName><![CDATA[fromUser]]></FromUserName>
    <CreateTime>12345678</CreateTime>
    <MsgType><![CDATA[news]]></MsgType>
    <ArticleCount>2</ArticleCount>
    <Articles>
    <item>
    <Title><![CDATA[title1]]></Title> 
    <Description><![CDATA[description1]]></Description>
    <PicUrl><![CDATA[picurl]]></PicUrl>
    <Url><![CDATA[url]]></Url>
    </item>
    <item>
    <Title><![CDATA[title]]></Title>
    <Description><![CDATA[description]]></Description>
    <PicUrl><![CDATA[picurl]]></PicUrl>
    <Url><![CDATA[url]]></Url>
    </item>
    </Articles>
    </xml>
    ==》这就说明我们想要发送图文消息出去,还要构造图文消息。
    需要SendMessageVo:
    public class SendMessageVo {
    // 开发者微信号
    private String ToUserName;
    // 发送方帐号(一个OpenID)
    private String FromUserName;
    // 消息创建时间 (整型)
    private long CreateTime;
    // 消息类型(text/image/location/link)
    private String MsgType;

    // 图文消息个数,限制为10条以内
    private int ArticleCount;
    // 多条图文消息信息,默认第一个item为大图
    private List<ArticleVo> Articles;
    }
    public class ArticleVo {
    // 图文消息名称
    private String Title;
    // 图文消息描述
    private String Description;
    // 图片链接,支持JPG、PNG格式,较好的效果为大图640*320,小图80*80,限制图片链接的域名需要与开发者填写的基本资料中的Url一致
    private String PicUrl;
    // 点击图文消息跳转链接
    private String Url;
    }
    这些属性都是和XMl里面的元素一一对应的。
    通过将对象转换成xml格式,然后return就可以。

    // 调用核心业务类接收消息、处理消息跟推送消息
    @RequestMapping(value = "", method = RequestMethod.POST)
    public void post(PrintWriter out, HttpServletRequest req, HttpServletResponse response) {
      jsonObject str= weixinService.processRequest(req);
      out.print(str);
    }

    以上:我们接收到微信服务器的post请求,经过解析后,获得openid,然后构造我们自己的xml数据,返回给微信服务器,微信服务器就会把我们的消息发送给用户。

    (2)这是一种单方向发送的模式:

    注意,这里构造的不再是xml格式,而是json数据:

    {
               "touser":"OPENID",
               "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
               "url":"http://weixin.qq.com/download",  
               "miniprogram":{
                 "appid":"xiaochengxuappid12345",
                 "pagepath":"index?foo=bar"
               },          
               "data":{
                       "first": {
                           "value":"恭喜你购买成功!",
                           "color":"#173177"
                       },
                       "keynote1":{
                           "value":"巧克力",
                           "color":"#173177"
                       },
                       "keynote2": {
                           "value":"39.8元",
                           "color":"#173177"
                       },
                       "keynote3": {
                           "value":"2014年9月22日",
                           "color":"#173177"
                       },
                       "remark":{
                           "value":"欢迎再次购买!",
                           "color":"#173177"
                       }
               }
           }
    标红的是必填选项。模板的内容可以在公众号中模板的模块中查看。
    String putStr = JSONObject.toJSONString(sendTemplateVo);
    String url = send_template_url.replace("ACCESS_TOKEN", token);
    JSONObject jsonObject = WeiXinHttpRequest.httpRequest(url, "POST", putStr);
    if (!("ok".equals(jsonObject.getString("errmsg")))) {
    System.out.println("发送失败!");
    }
    send_template_url=“https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN”可以在微信API上查看,
    JSONObject 里面的内容,可以知道发送失败或成功:
        {
               "errcode":0,
               "errmsg":"ok",
               "msgid":200228332
        }

    SendTemplateVo对象:
    public class SendTemplateVo {
        private String touser;

        private String template_id;

        private String url;

        private Map<String, TemplateDataVo> data;
    }
    public class TemplateDataVo {
        private String value;
        private String color;
    }

    
    
     


    以上:其实说白了,就是自己写一个对象,然后构造成微信服务器规定的格式(json),再调用微信服务器提供的URL接口,返回jsonObject成功的话,表示微信服务器已经帮你的消息发送给了用户。

     
  • 相关阅读:
    STM32驱动WS2811
    Arduino编程器 USBasp USBtinyISP FT232-ISP 对比 区别
    USBasp制作资料及全过程(菜鸟版)
    用74HC165读8个按键状态
    C++ 使用TinyXML解析XML文件
    SD卡中FAT32文件格式快速入门(图文详细介绍)
    一个UUID生成算法的C语言实现——WIN32版本
    关于STM8S使用硬件SPI收发问题
    设计模式介绍、分类、原则
    构建完整的知识体系
  • 原文地址:https://www.cnblogs.com/openflyme/p/7413084.html
Copyright © 2011-2022 走看看