美文网首页Java Web架构设计
微信内推送功能的实现

微信内推送功能的实现

作者: RenBob | 来源:发表于2016-03-16 17:38 被阅读3602次

    最近公司在做微信开发, 现对一些常用技术作一些总结:

    推送应用场景

    微信公众账号内, 当用户某个信息发生变化时, 需要即时向用户推送实时消息, 那么这个时候该怎么处理呢?


    推送场景

    实现方式

    登陆企业版微信公众账号, 在模板消息中, 我们可以从微信提供的模板库选择我们想要的消息显示方式:


    模板消息

    如果里面没有我们想要的模板, 我们也可以自己生成模板

    生成自己的模板

    之后, 就可以提交自己的模板了!

    设置调用的参数

    具体调用方法

    第一步: 获取上面操作的模板的ID

    第二步: 请求URL

    {
    "touser":"OPENID",
    "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
    "url":"http://weixin.qq.com/download",
    "topcolor":"#FF0000",
    "data":{
    "User": {
    "value":"黄先生",
    "color":"#173177"
    },
    "Date":{
    "value":"06月07日 19时24分",
    "color":"#173177"
    },
    "CardNumber":{
    "value":"0426",
    "color":"#173177"
    },
    "Type":{
    "value":"消费",
    "color":"#173177"
    },
    "Money":{
    "value":"人民币260.00元",
    "color":"#173177"
    },
    "DeadTime":{
    "value":"06月07日19时24分",
    "color":"#173177"
    },
    "Left":{
    "value":"6504.09",
    "color":"#173177"
    }
    }
    }
    

    事件推送

    在模版消息发送任务完成后,微信服务器会将是否送达成功作为通知,发送到开发者中心中填写的服务器配置地址中。

    • 推送成功时, 推送的xml如下:
    <xml>
    <ToUserName><![CDATA[gh_7f083739789a]]></ToUserName>
    <FromUserName><![CDATA[oia2TjuEGTNoeX76QEjQNrcURxG8]]&g;</FromUserName>
    <CreateTime>1395658920</CreateTime>
    <MsgType><![CDATA[event]]></MsgType>
    <Event><![CDATA[TEMPLATESENDJOBFINISH]]></Event>
    <MsgID>200163836</MsgID>
    <Status><![CDATA[success]]></Status>
    </xml>
    
    • 送达由于用户拒收(用户设置拒绝接收公众号消息)而失败时,推送的XML如下:
    <xml>
    <ToUserName><![CDATA[gh_7f083739789a]]></ToUserName>
    <FromUserName><![CDATA[oia2TjuEGTNoeX76QEjQNrcURxG8]]></FromUserName>
    <CreateTime>1395658984</CreateTime>
    <MsgType><![CDATA[event]]></MsgType>
    <Event><![CDATA[TEMPLATESENDJOBFINISH]]></Event>
    <MsgID>200163840</MsgID>
    <Status><![CDATA[failed:user block]]></Status>
    </xml>
    
    • 送达由于其他原因失败时,推送的XML如下:
    <xml>
    <ToUserName><![CDATA[gh_7f083739789a]]></ToUserName>
    <FromUserName><![CDATA[oia2TjuEGTNoeX76QEjQNrcURxG8]]></FromUserName>
    <CreateTime>1395658984</CreateTime>
    <MsgType><![CDATA[event]]></MsgType>
    <Event><![CDATA[TEMPLATESENDJOBFINISH]]></Event>
    <MsgID>200163840</MsgID>
    <Status><![CDATA[failed: system failed]]></Status>
    </xml>
    

    返回码说明

    //在调用模板消息接口后,会返回JSON数据包。正常时的返回JSON数据包示例:
    {
    "errcode":0,
    "errmsg":"ok",
    "msgid":200228332
    }
    

    相关文章

      网友评论

        本文标题:微信内推送功能的实现

        本文链接:https://www.haomeiwen.com/subject/uqgqlttx.html