微信二次开发菜单扫扫码事件的事件推送用java怎么实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信二次开发菜单扫扫码事件的事件推送用java怎么实现相关的知识,希望对你有一定的参考价值。

参考技术A 创建一个二维码的ticket,关于一些参数可参数官网上的文档,这里直接上代码吧 def get_ticket wx_mp_user appid = wx_mp_user.app_id #公众号app_id secret = w 参考技术B 是公众号开发吗?推荐去看看 jfinal-weixin ,这个做公众号开发极其简单。

下载,配置 开发者信息,启动,开发者后台填写服务地址,就可以测试所有功能了。

里面的注释也非常清晰。

微信开发者文档

接收事件推送

目录

1 关注/取消关注事件

2 扫描带参数二维码事件

3 上报地理位置事件

4 自定义菜单事件

5 点击菜单拉取消息时的事件推送

6 点击菜单跳转链接时的事件推送

关注/取消关注事件

用户在关注与取消关注公众号时,微信会把这个事件推送到开发者填写的URL。方便开发者给用户下发欢迎消息或者做帐号的解绑。

微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次

关于重试的消息排重,推荐使用FromUserName + CreateTime 排重。

假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。

推送XML数据包示例:

<xml>

<ToUserName><![CDATA[toUser]]></ToUserName>

<FromUserName><![CDATA[FromUser]]></FromUserName>

<CreateTime>123456789</CreateTime>

<MsgType><![CDATA[event]]></MsgType>

<Event><![CDATA[subscribe]]></Event>

</xml>

参数说明:

参数           描述 

ToUserName     开发者微信号 

FromUserName   发送方帐号(一个OpenID) 

CreateTime     消息创建时间 (整型) 

MsgType        消息类型,event 

Event          事件类型,subscribe(订阅)、unsubscribe(取消订阅) 

扫描带参数二维码事件

用户扫描带场景值二维码时,可能推送以下两种事件:

1.如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。

2.如果用户已经关注公众号,则微信会将带场景值扫描事件推送给开发者。

1. 用户未关注时,进行关注后的事件推送

推送XML数据包示例:

<xml><ToUserName><![CDATA[toUser]]></ToUserName>

<FromUserName><![CDATA[FromUser]]></FromUserName>

<CreateTime>123456789</CreateTime>

<MsgType><![CDATA[event]]></MsgType>

<Event><![CDATA[subscribe]]></Event>

<EventKey><![CDATA[qrscene_123123]]></EventKey>

<Ticket><![CDATA[TICKET]]></Ticket>

</xml>

参数说明:

参数               描述 

ToUserName         开发者微信号 

FromUserName       发送方帐号(一个OpenID) 

CreateTime         消息创建时间 (整型) 

MsgType            消息类型,event 

Event              事件类型,subscribe 

EventKey           事件KEY值,qrscene_为前缀,后面为二维码的参数值 

Ticket             二维码的ticket,可用来换取二维码图片 

2. 用户已关注时的事件推送

推送XML数据包示例:

<xml>

<ToUserName><![CDATA[toUser]]></ToUserName>

<FromUserName><![CDATA[FromUser]]></FromUserName>

<CreateTime>123456789</CreateTime>

<MsgType><![CDATA[event]]></MsgType>

<Event><![CDATA[SCAN]]></Event>

<EventKey><![CDATA[SCENE_VALUE]]></EventKey>

<Ticket><![CDATA[TICKET]]></Ticket>

</xml>

参数说明:

参数                    描述 

ToUserName              开发者微信号 

FromUserName            发送方帐号(一个OpenID) 

CreateTime              消息创建时间 (整型) 

MsgType                 消息类型,event 

Event                   事件类型,SCAN 

EventKey                事件KEY值,是一个32位无符号整数,即创建二维码时的二维码scene_id 

Ticket                  二维码的ticket,可用来换取二维码图片 

上报地理位置事件

用户同意上报地理位置后,每次进入公众号会话时,都会在进入时上报地理位置,或在进入会话后每5秒上报一次地理位置,公众号可以在公众平台网站中修改以上设置。上报地理位置时,微信会将上报地理位置事件推送到开发者填写的URL。

推送XML数据包示例:

<xml>

<ToUserName><![CDATA[toUser]]></ToUserName>

<FromUserName><![CDATA[fromUser]]></FromUserName>

<CreateTime>123456789</CreateTime>

<MsgType><![CDATA[event]]></MsgType>

<Event><![CDATA[LOCATION]]></Event>

<Latitude>23.137466</Latitude>

<Longitude>113.352425</Longitude>

<Precision>119.385040</Precision>

</xml>

参数说明:

参数                   描述 

ToUserName             开发者微信号 

FromUserName           发送方帐号(一个OpenID) 

CreateTime             消息创建时间 (整型) 

MsgType                消息类型,event 

Event                  事件类型,LOCATION 

Latitude               地理位置纬度 

Longitude              地理位置经度 

Precision              地理位置精度 

使用网页调试工具调试该接口

自定义菜单事件

用户点击自定义菜单后,微信会把点击事件推送给开发者,请注意,点击菜单弹出子菜单,不会产生上报。

点击菜单拉取消息时的事件推送

推送XML数据包示例:

<xml>

<ToUserName><![CDATA[toUser]]></ToUserName>

<FromUserName><![CDATA[FromUser]]></FromUserName>

<CreateTime>123456789</CreateTime>

<MsgType><![CDATA[event]]></MsgType>

<Event><![CDATA[CLICK]]></Event>

<EventKey><![CDATA[EVENTKEY]]></EventKey>

</xml>

参数说明:

参数                 描述 

ToUserName           开发者微信号 

FromUserName         发送方帐号(一个OpenID) 

CreateTime            消息创建时间 (整型) 

MsgType              消息类型,event 

Event                事件类型,CLICK 

EventKey             事件KEY值,与自定义菜单接口中KEY值对应 

点击菜单跳转链接时的事件推送

推送XML数据包示例:

<xml>

<ToUserName><![CDATA[toUser]]></ToUserName>

<FromUserName><![CDATA[FromUser]]></FromUserName>

<CreateTime>123456789</CreateTime>

<MsgType><![CDATA[event]]></MsgType>

<Event><![CDATA[VIEW]]></Event>

<EventKey><![CDATA[www.qq.com]]></EventKey>

</xml>

参数说明:

参数                         描述 

ToUserName                  开发者微信号 

FromUserName                发送方帐号(一个OpenID) 

CreateTime                   消息创建时间 (整型) 

MsgType                     消息类型,event 

Event                        事件类型,VIEW 

EventKey                     事件KEY值,设置的跳转URL 

 

开通语音识别功能

用户每次发送语音给公众号时,微信会在推送的语音消息XML数据包中,增加一个Recongnition字段。

注:由于客户端缓存,开发者开启或者关闭语音识别功能,对新关注者立刻生效,对已关注用户需要24小时生效。开发者可以重新关注此帐号进行测试。

开启语音识别后的语音XML数据包如下:

<xml>

<ToUserName><![CDATA[toUser]]></ToUserName>

<FromUserName><![CDATA[fromUser]]></FromUserName>

<CreateTime>1357290913</CreateTime>

<MsgType><![CDATA[voice]]></MsgType>

<MediaId><![CDATA[media_id]]></MediaId>

<Format><![CDATA[Format]]></Format>

<Recognition><![CDATA[腾讯微信团队]]></Recognition>

<MsgId>1234567890123456</MsgId>

</xml>

参数说明:

参数               描述 

ToUserName        开发者微信号 

FromUserName      发送方帐号(一个OpenID) 

CreateTime         消息创建时间 (整型) 

MsgType           语音为voice 

MediaID            语音消息媒体id,可以调用多媒体文件下载接口拉取该媒体 

Format             语音格式:amr 

Recognition         语音识别结果,UTF8编码 

MsgID             消息id,64位整型 

 

发送被动响应消息

对于每一个POST请求,开发者在响应包(Get)中返回特定XML结构,对该消息进行响应(现支持回复文本、图片、图文、语音、视频、音乐)。请注意,回复图片等多媒体消息时需要预先上传多媒体文

 

件到微信服务器,只支持认证服务号。

微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次,如果在调试中,发现用户无法收到响应的消息,可以检查是否消息处理超时。

关于重试的消息排重,有msgid的消息推荐使用msgid排重。事件类型消息推荐使用FromUserName + CreateTime 排重。

假如服务器无法保证在五秒内处理并回复,必须直接回复空串(是指回复一个空字符串,而不是一个XML结构体中content字段的内容为空,请切勿误解),微信服务器不会对此作任何处理,并且不会发

 

起重试。。这种情况下,可以使用客服消息接口进行异步回复。

请开发者注意,一旦遇到以下情况,微信都会在公众号会话中,向用户下发系统提示“该公众号暂时无法提供服务,请稍后再试”:

1、开发者在5秒内未回复任何内容

2、开发者回复了异常数据,比如JSON数据等

各消息类型需要的XML数据包结构如下。

目录1 回复文本消息

2 回复图片消息

3 回复语音消息

4 回复视频消息

5 回复音乐消息

6 回复图文消息

 

回复文本消息

<xml>

<ToUserName><![CDATA[toUser]]></ToUserName>

<FromUserName><![CDATA[fromUser]]></FromUserName>

<CreateTime>12345678</CreateTime>

<MsgType><![CDATA[text]]></MsgType>

<Content><![CDATA[你好]]></Content>

</xml>

参数        是否必须              描述 

ToUserName    是                 接收方帐号(收到的OpenID) 

FromUserName  是                 开发者微信号 

CreateTime    是                 消息创建时间 (整型) 

MsgType       是                    text 

Content       是                回复的消息内容(换行:在content中能够换行,微信客户端就支持换行显示) 

 

回复图片消息

<xml>

<ToUserName><![CDATA[toUser]]></ToUserName>

<FromUserName><![CDATA[fromUser]]></FromUserName>

<CreateTime>12345678</CreateTime>

<MsgType><![CDATA[image]]></MsgType>

<Image>

<MediaId><![CDATA[media_id]]></MediaId>

</Image>

</xml>

参数        是否必须            说明 

ToUserName     是               接收方帐号(收到的OpenID) 

FromUserName   是               开发者微信号 

CreateTime     是               消息创建时间 (整型) 

MsgType        是               image 

MediaId        是               通过上传多媒体文件,得到的id。

 

回复语音消息

<xml>

<ToUserName><![CDATA[toUser]]></ToUserName>

<FromUserName><![CDATA[fromUser]]></FromUserName>

<CreateTime>12345678</CreateTime>

<MsgType><![CDATA[voice]]></MsgType>

<Voice>

<MediaId><![CDATA[media_id]]></MediaId>

</Voice>

</xml>

参数            是否必须       说明 

ToUserName         是          接收方帐号(收到的OpenID) 

FromUserName       是          开发者微信号 

CreateTime         是          消息创建时间戳 (整型) 

MsgType            是          语音,voice 

MediaId            是          通过上传多媒体文件,得到的id 

 

回复视频消息

<xml>

<ToUserName><![CDATA[toUser]]></ToUserName>

<FromUserName><![CDATA[fromUser]]></FromUserName>

<CreateTime>12345678</CreateTime>

<MsgType><![CDATA[video]]></MsgType>

<Video>

<MediaId><![CDATA[media_id]]></MediaId>

<Title><![CDATA[title]]></Title>

<Description><![CDATA[description]]></Description>

</Video>

</xml>

参数         是否必须        说明 

ToUserName      是          接收方帐号(收到的OpenID) 

FromUserName    是          开发者微信号 

CreateTime      是          消息创建时间 (整型) 

MsgType         是          video 

MediaId         是          通过上传多媒体文件,得到的id 

Title           否          视频消息的标题 

Description     否          视频消息的描述 

 

回复音乐消息

<xml>

<ToUserName><![CDATA[toUser]]></ToUserName>

<FromUserName><![CDATA[fromUser]]></FromUserName>

<CreateTime>12345678</CreateTime>

<MsgType><![CDATA[music]]></MsgType>

<Music>

<Title><![CDATA[TITLE]]></Title>

<Description><![CDATA[DESCRIPTION]]></Description>

<MusicUrl><![CDATA[MUSIC_Url]]></MusicUrl>

<HQMusicUrl><![CDATA[HQ_MUSIC_Url]]></HQMusicUrl>

<ThumbMediaId><![CDATA[media_id]]></ThumbMediaId>

</Music>

</xml>

参数        是否必须  说明 

ToUserName     是     接收方帐号(收到的OpenID) 

FromUserName   是     开发者微信号 

CreateTime      是     消息创建时间 (整型) 

MsgType        是     music 

Title            否      音乐标题 

Description      否     音乐描述 

MusicURL       否     音乐链接 

HQMusicUrl     否      高质量音乐链接,WIFI环境优先使用该链接播放音乐 

ThumbMediaId   是     缩略图的媒体id,通过上传多媒体文件,得到的id 

 

回复图文消息

<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>

参数          是否必须             说明 

ToUserName       是               接收方帐号(收到的OpenID) 

FromUserName     是               开发者微信号 

CreateTime        是               消息创建时间 (整型) 

MsgType          是               news 

ArticleCount       是               图文消息个数,限制为10条以内 

Articles           是               多条图文消息信息,默认第一个item为大图,注意,如果图文数超过10,则将会无响应 

Title              否               图文消息标题 

Description        否               图文消息描述 

PicUrl            否               图片链接,支持JPG、PNG格式,较好的效果为大图360*200,小图200*200 

Url               否               点击图文消息跳转链接 

 

发送客服消息

出自微信公众平台开发者文档

当用户主动发消息给公众号的时候(包括发送信息、点击自定义菜单、订阅事件、扫描二维码事件、支付成功事件、用户维权),微信将会把消息数据推送给开发者,开发者在一段时间内(目前修改为48小时)可以调用客服消息接口,通过POST一个JSON数据包来发送消息给普通用户,在48小时内不限制发送次数。此接口主要用于客服等有人工消息处理环节的功能,方便开发者为用户提供更加优质的服务。

接口调用请求说明

http请求方式: POST

https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN

各消息类型所需的JSON数据包如下。

发送文本消息

{

    "touser":"OPENID",

    "msgtype":"text",

    "text":

    {

         "content":"Hello World"

    }

}

参数

是否必须

说明

access_token

调用接口凭证

touser

普通用户openid

msgtype

消息类型,text

content

文本消息内容

发送图片消息

{

    "touser":"OPENID",

    "msgtype":"image",

    "image":

    {

      "media_id":"MEDIA_ID"

    }

}

参数

是否必须

说明

access_token

调用接口凭证

touser

普通用户openid

msgtype

消息类型,image

media_id

发送的图片的媒体ID

发送语音消息

{

    "touser":"OPENID",

    "msgtype":"voice",

    "voice":

    {

      "media_id":"MEDIA_ID"

    }

}

参数

是否必须

说明

access_token

调用接口凭证

touser

普通用户openid

msgtype

消息类型,voice

media_id

发送的语音的媒体ID

发送视频消息

{

    "touser":"OPENID",

    "msgtype":"video",

    "video":

    {

      "media_id":"MEDIA_ID",

      "thumb_media_id":"MEDIA_ID",

      "title":"TITLE",

      "description":"DESCRIPTION"

    }

}

参数

是否必须

说明

access_token

调用接口凭证

touser

普通用户openid

msgtype

消息类型,video

media_id

发送的视频的媒体ID

thumb_media_id

缩略图的媒体ID

title

视频消息的标题

description

视频消息的描述

发送音乐消息

{

    "touser":"OPENID",

    "msgtype":"music",

    "music":

    {

      "title":"MUSIC_TITLE",

      "description":"MUSIC_DESCRIPTION",

      "musicurl":"MUSIC_URL",

      "hqmusicurl":"HQ_MUSIC_URL",

      "thumb_media_id":"THUMB_MEDIA_ID"

    }

}

参数

是否必须

说明

access_token

调用接口凭证

touser

普通用户openid

msgtype

消息类型,music

title

音乐标题

description

音乐描述

musicurl

音乐链接

hqmusicurl

高品质音乐链接,wifi环境优先使用该链接播放音乐

thumb_media_id

缩略图的媒体ID

发送图文消息

图文消息条数限制在10条以内,注意,如果图文数超过10,则将会无响应。

{

    "touser":"OPENID",

    "msgtype":"news",

    "news":{

        "articles": [

         {

             "title":"Happy Day",

             "description":"Is Really A Happy Day",

             "url":"URL",

             "picurl":"PIC_URL"

         },

         {

             "title":"Happy Day",

             "description":"Is Really A Happy Day",

             "url":"URL",

             "picurl":"PIC_URL"

         }

         ]

    }

}

 

 

参数

是否必须

说明

access_token

调用接口凭证

touser

普通用户openid

msgtype

消息类型,news

title

标题

description

描述

url

点击后跳转的链接

picurl

图文消息的图片链接,支持JPG、PNG格式,较好的效果为大图640*320,小图80*80

 

高级群发接口

在公众平台网站上,为订阅号提供了每天一条的群发权限,为服务号提供每月(自然月)4条的群发权限。而对于某些具备开发能力的公众号运营者,可以通过高级群发接口,实现更灵活的群发能力。

请注意:

1、对于认证订阅号,群发接口每天可成功调用1次,此次群发可选择发送给全部用户或某个分组

2、对于认证服务号虽然开发者使用高级群发接口的每日调用限制为100次,但是用户每月只能接收4条,无论在公众平台网站上,还是使用接口群发,用户每月只能接收4条群发消息,多于4条的群发将对该用户发送失败

3、具备微信支付权限的公众号,在使用群发接口上传、群发图文消息类型时,可使用<a>标签加入外链;

4、开发者可以使用预览接口校对消息样式和排版,通过预览接口可发送编辑好的消息给指定用户校验效果。

上传图文消息素材【订阅号与服务号认证后均可用】

接口调用请求说明

http请求方式: POST

POST数据说明

POST数据示例如下:

{

   "articles": [

                {

                        "thumb_media_id":"qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXCFZiq2OsIU-p",

                        "author":"xxx",

                        "title":"Happy Day",

                        "content_source_url":"www.qq.com",

                        "content":"content",

                        "digest":"digest",

                        "show_cover_pic":"1"

                },

                {

                        "thumb_media_id":"qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXCFZiq2OsIU-p",

                        "author":"xxx",

                        "title":"Happy Day",

                        "content_source_url":"www.qq.com",

                        "content":"content",

                        "digest":"digest",

                        "show_cover_pic":"0"

                }

   ]

}

参数

是否必须

说明

Articles

图文消息,一个图文消息支持1到10条图文

thumb_media_id

图文消息缩略图的media_id,可以在基础支持-上传多媒体文件接口中获得

author

图文消息的作者

title

图文消息的标题

content_source_url

在图文消息页面点击“阅读原文”后的页面

content

图文消息页面的内容,支持HTML标签

digest

图文消息的描述

show_cover_pic

是否显示封面,1为显示,0为不显示

返回说明

返回数据示例(正确时的JSON返回结果):

{

   "type":"news",

   "media_id":"CsEf3ldqkAYJAU6EJeIkStVDSvffUJ54vqbThMgplD-VJXXof6ctX5fI6-aYyUiQ",

   "created_at":1391857799

}

参数

说明

type

媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb),次数为news,即图文消息

Media_id

媒体文件/图文消息上传后获取的唯一标识

created_at

媒体文件上传时间

错误时微信会返回错误码等信息,请根据错误码查询错误信息: 全局返回码说明 根据分组进行群发【订阅号与服务号认证后均可用】

接口调用请求说明

http请求方式: POST

POST数据说明

POST数据示例如下:

图文消息(注意图文消息的media_id需要通过上述方法来得到):

{

   "filter":{

      "is_to_all":false

      "group_id":"2"

   },

   "mpnews":{

      "media_id":"123dsdajkasd231jhksad"

   },

    "msgtype":"mpnews"

}

文本:

{

   "filter":{

      "is_to_all":false

      "group_id":"2"

   },

   "text":{

      "content":"CONTENT"

   },

    "msgtype":"text"

}

语音(注意此处media_id需通过基础支持中的上传下载多媒体文件来得到):

{

   "filter":{

      "is_to_all":false

      "group_id":"2"

   },

   "voice":{

      "media_id":"123dsdajkasd231jhksad"

   },

    "msgtype":"voice"

}

图片(注意此处media_id需通过基础支持中的上传下载多媒体文件来得到):

{

   "filter":{

      "is_to_all":false

      "group_id":"2"

   },

   "image":{

      "media_id":"123dsdajkasd231jhksad"

   },

    "msgtype":"image"

}

视频

请注意,此处视频的media_id需通过POST请求到下述接口特别地得到: https://file.api.weixin.qq.com/cgi-bin/media/uploadvideo?access_token=ACCESS_TOKEN

POST数据如下(此处media_id需通过基础支持中的上传下载多媒体文件来得到):

{

  "media_id": "rF4UdIMfYK3efUfyoddYRMU50zMiRmmt_l0kszupYh_SzrcW5Gaheq05p_lHuOTQ",

  "title": "TITLE",

  "description": "Description"

}

返回将为

{

  "type":"video",

  "media_id":"IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc",

  "created_at":1398848981

}

然后,POST下述数据(将media_id改为上一步中得到的media_id),即可进行发送

{

   "filter":{

      "is_to_all":false

      "group_id":"2"

   },

   "mpvideo":{

      "media_id":"IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc",

   },

    "msgtype":"mpvideo"

}

 

 

参数

是否必须

说明

Filter

用于设定图文消息的接收者

is_to_all

用于设定是否向全部用户发送,值为true或false,选择true该消息群发给所有用户,选择false可根据group_id发送给指定群组的用户

Group_id

群发到的分组的group_id,参加用户管理中用户分组接口,若is_to_all值为true,可不填写group_id

Mpnews

用于设定即将发送的图文消息

Media_id

用于群发的消息的media_id

msgtype

群发的消息类型,图文消息为mpnews,文本消息为text,语音为voice,音乐为music,图片为image,视频为video

Title

消息的标题

description

消息的描述

Thumb_media_id

视频缩略图的媒体ID

返回说明

返回数据示例(正确时的JSON返回结果):

{

   "errcode":0,

   "errmsg":"send job submission success",

   "msg_id":34182

}

参数

说明

type

媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb),图文消息为news

errcode

错误码

errmsg

错误信息

msg_id

消息ID

请注意:在返回成功时,意味着群发任务提交成功,并不意味着此时群发已经结束,所以,仍有可能在后续的发送过程中出现异常情况导致用户未收到消息,如消息有时会进行审核、服务器不稳定等。此外,群发任务一般需要较长的时间才能全部发送完毕,请耐心等待

错误时微信会返回错误码等信息,请根据错误码查询错误信息: 全局返回码说明

根据OpenID列表群发【订阅号不可用,服务号认证后可用】

接口调用请求说明

http请求方式: POST

POST数据说明

POST数据示例如下:

图文消息(注意图文消息的media_id需要通过上述方法来得到): {

   "touser":[

    "OPENID1",

    "OPENID2"

   ],

   "mpnews":{

      "media_id":"123dsdajkasd231jhksad"

   },

    "msgtype":"mpnews"

}

文本:

{

   "touser":[

    "OPENID1",

    "OPENID2"

   ],

    "msgtype": "text",

    "text": { "content": "hello from boxer."}

}

语音:

{

   "touser":[

    "OPENID1",

    "OPENID2"

   ],

   "voice":{

      "media_id":"mLxl6paC7z2Tl-NJT64yzJve8T9c8u9K2x-Ai6Ujd4lIH9IBuF6-2r66mamn_gIT"

   },

    "msgtype":"voice"

}

图片:

{

   "touser":[

    "OPENID1",

    "OPENID2"

   ],

   "image":{

      "media_id":"BTgN0opcW3Y5zV_ZebbsD3NFKRWf6cb7OPswPi9Q83fOJHK2P67dzxn11Cp7THat"

   },

    "msgtype":"image"

}

视频:

请注意,此处视频的media_id需通过POST请求到下述接口特别地得到: https://file.api.weixin.qq.com/cgi-bin/media/uploadvideo?access_token=ACCESS_TOKEN

POST数据如下(此处media_id需通过基础支持中的上传下载多媒体文件来得到):

{

  "media_id": "rF4UdIMfYK3efUfyoddYRMU50zMiRmmt_l0kszupYh_SzrcW5Gaheq05p_lHuOTQ",

  "title": "TITLE",

  "description": "Description"

}

返回将为

{

  "type":"video",

  "media_id":"IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc",

  "created_at":1398848981

}

然后,POST下述数据(将media_id改为上一步中得到的media_id),即可进行发送

{

   "touser":[

    "OPENID1",

    "OPENID2"

   ],

   "video":{

      "media_id":"123dsdajkasd231jhksad",

      "title":"TITLE",

      "description":"DESCRIPTION"

   },

    "msgtype":"video"

}

 

参数

是否必须

说明

touser

填写图文消息的接收者,一串OpenID列表,OpenID最少个,最多10000个

mpnews

用于设定即将发送的图文消息

media_id

用于群发的图文消息的media_id

msgtype

群发的消息类型,图文消息为mpnews,文本消息为text,语音为voice,音乐为music,图片为image,视频为video

title

消息的标题

description

消息的描述

thumb_media_id

视频缩略图的媒体ID

返回说明

返回数据示例(正确时的JSON返回结果):

{

   "errcode":0,

   "errmsg":"send job submission success",

   "msg_id":34182

}

参数

说明

type

媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb),次数为news,即图文消息

errcode

错误码

errmsg

错误信息

msg_id

消息ID

请注意:在返回成功时,意味着群发任务提交成功,并不意味着此时群发已经结束,所以,仍有可能在后续的发送过程中出现异常情况导致用户未收到消息,如消息有时会进行审核、服务器不稳定等。此外,群发任务一般需要较长的时间才能全部发送完毕,请耐心等待

错误时微信会返回错误码等信息,请根据错误码查询错误信息: 全局返回码说明

删除群发【订阅号与服务号认证后均可用】

接口调用请求说明

http请求方式: POST

POST数据说明

POST数据示例如下:

{

   "msg_id":30124

}

参数

是否必须

说明

msg_id

发送出去的消息ID

请注意,只有已经发送成功的消息才能删除删除消息只是将消息的图文详情页失效,已经收到的用户,还是能在其本地看到消息卡片。 另外,删除群发消息只能删除图文消息和视频消息,其他类型的消息一经发送,无法删除。

返回说明

返回数据示例(正确时的JSON返回结果):

{

   "errcode":0,

   "errmsg":"ok"

}

参数

说明

errcode

错误码

errmsg

错误信息

错误时微信会返回错误码等信息,请根据错误码查询错误信息: 全局返回码说明

预览接口【订阅号与服务号认证后均可用】

开发者可通过该接口发送消息给指定用户,在手机端查看消息的样式和排版。

接口调用请求说明

http请求方式: POST

POST数据说明

POST数据示例如下:

图文消息(其中media_id与根据分组群发中的media_id相同):

{

   "touser":"OPENID",

   "mpnews":{             

            "media_id":"123dsdajkasd231jhksad"              

             },

   "msgtype":"mpnews"

}

文本:

{    

    "touser":"OPENID",

    "text":{          

           "content":"CONTENT"           

           },    

    "msgtype":"text"

}

语音(其中media_id与根据分组群发中的media_id相同):

{

    "touser":"OPENID",

    "voice":{             

            "media_id":"123dsdajkasd231jhksad"

            },

    "msgtype":"voice"

}

图片(其中media_id与根据分组群发中的media_id相同):

{

    "touser":"OPENID",

    "image":{     

            "media_id":"123dsdajkasd231jhksad"

            },

    "msgtype":"image"

}

视频(其中media_id与根据分组群发中的media_id相同):

{

    "touser":"OPENID",

    "mpvideo":{  "media_id":"IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc",  

               },

    "msgtype":"mpvideo"

}

 

参数

说明

touser

接收消息用户对应该公众号的openid

msgtype

群发的消息类型,图文消息为mpnews,文本消息为text,语音为voice,音乐为music,图片为image,视频为video

Media_id

用于群发的消息的media_id

content

发送文本消息时文本的内容

返回说明

返回数据示例(正确时的JSON返回结果):

{

   "errcode":0,

   "errmsg":"send job submission success",

   "msg_id":34182

}

参数

说明

errcode

错误码

errmsg

错误信息

msg_id

消息ID

查询群发消息发送状态【订阅号与服务号认证后均可用】

接口调用请求说明

http请求方式: POST

https://api.weixin.qq.com/cgi-bin/message/mass/get?access_token=ACCESS_TOKEN

POST数据说明

POST数据示例如下:

{

   "msg_id": "201053012"

}

参数

说明

msg_id

群发消息后返回的消息id

返回说明

返回数据示例(正确时的JSON返回结果):

{

     "msg_id":201053012,

     "msg_status":"SEND_SUCCESS"

}

参数

说明

msg_id

群发消息后返回的消息id

msg_status

消息发送后的状态,SEND_SUCCESS表示发送成功

事件推送群发结果

由于群发任务提交后,群发任务可能在一定时间后才完成,因此,群发接口调用时,仅会给出群发任务是否提交成功的提示,若群发任务提交成功,则在群发任务结束时,会向开发者在公众平台填写的开发者URL(callback URL)推送事件。

推送的XML结构如下(发送成功时):

<xml>

<ToUserName><![CDATA[gh_3e8adccde292]]></ToUserName>

<FromUserName><![CDATA[oR5Gjjl_eiZoUpGozMo7dbBJ362A]]></FromUserName>

<CreateTime>1394524295</CreateTime>

<MsgType><![CDATA[event]]></MsgType>

<Event><![CDATA[MASSSENDJOBFINISH]]></Event>

<MsgID>1988</MsgID>

<Status><![CDATA[sendsuccess]]></Status>

<TotalCount>100</TotalCount>

<FilterCount>80</FilterCount>

<SentCount>75</SentCount>

<ErrorCount>5</ErrorCount>

</xml>

参数

说明

ToUserName

公众号的微信号

FromUserName

公众号群发助手的微信号,为mphelper

CreateTime

创建时间的时间戳

MsgType

消息类型,此处为event

Event

事件信息,此处为MASSSENDJOBFINISH

MsgID

群发的消息ID

Status

群发的结构,为“send success”或“send fail”或“err(num)”。但send success时,也有可能因用户拒收公众号的消息、系统错误等原因造成少量用户接收失败。err(num)是审核失败的具体原因,可能的情况如下:

err(10001), //涉嫌广告 err(20001), //涉嫌政治 err(20004), //涉嫌社会 err(20002), //涉嫌色情 err(20006), //涉嫌违法犯罪 err(20008), //涉嫌欺诈 err(20013), //涉嫌版权 err(22000), //涉嫌互推(互相宣传) err(21000), //涉嫌其他

TotalCount

group_id下粉丝数;或者openid_list中的粉丝数

FilterCount

过滤(过滤是指特定地区、性别的过滤、用户设置拒收的过滤,用户接收已超4条的过滤)后,准备发送的粉丝数,原则上,FilterCount = SentCount + ErrorCount

SentCount

发送成功的粉丝数

ErrorCount

发送失败的粉丝数

 

模板消息接口

模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。

关于使用规则,请注意:

1、所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限;

2、需要选择公众账号服务所处的2个行业,每月可更改1次所选行业;

3、在所选择行业的模板库中选用已有的模板进行调用;

4、每个账号可以同时使用15个模板。

5、当前每个模板的日调用上限为100000次【2014年11月18日将接口调用频率从默认的日10000次提升为日100000次,可在MP登录后的开发者中心查看】。

关于接口文档,请注意:

1、模板消息调用时主要需要模板ID和模板中各参数的赋值内容;

2、模板中参数内容必须以".DATA"结尾,否则视为保留字;

3、模板保留符号"{{ }}"。

目录

1 设置所属行业

2 获得模板ID

3 发送模板消息

4 事件推送

设置所属行业

设置行业可在MP中完成,每月可修改行业1次,账号仅可使用所属行业中相关的模板,为方便第三方开发者,提供通过接口调用的方式来修改账号所属行业,具体如下:

接口调用请求说明

http请求方式: POST

https://api.weixin.qq.com/cgi-bin/template/api_set_industry?access_token=ACCESS_TOKEN

POST数据说明

POST数据示例如下:       

{

      "industry_id1":"1",

      "industry_id2":"4"

}

参数说明

参数

是否必须

说明

industry_id1

公众号模板消息所属行业编号

industry_id2

公众号模板消息所属行业编号

行业代码查询

主行业

副行业

代码

IT科技

互联网/电子商务

1

IT科技

IT软件与服务

2

IT科技

IT硬件与设备

3

IT科技

电子技术

4

IT科技

通信与运营商

5

IT科技

网络游戏

6

金融业

银行

7

金融业

基金|理财|信托

8

金融业

保险

9

餐饮

餐饮

10

酒店旅游

酒店

11

酒店旅游

旅游

12

运输与仓储

快递

13

运输与仓储

物流

14

运输与仓储

仓储

15

教育

培训

16

教育

院校

17

政府与公共事业

学术科研

18

政府与公共事业

交警

19

政府与公共事业

博物馆

20

政府与公共事业

公共事业|非盈利机构

21

医药护理

医药医疗

22

医药护理

护理美容

23

医药护理

保健与卫生

24

交通工具

汽车相关

25

交通工具

摩托车相关

26

交通工具

火车相关

27

交通工具

飞机相关

28

房地产

建筑

29

房地产

物业

30

消费品

消费品

31

商业服务

法律

32

商业服务

会展

33

商业服务

中介服务

34

商业服务

认证

35

商业服务

审计

36

文体娱乐

传媒

37

文体娱乐

体育

38

文体娱乐

娱乐休闲

39

印刷

印刷

40

其它

其它

41

获得模板ID

从行业模板库选择模板到账号后台,获得模板ID的过程可在MP中完成。为方便第

 

三方开发者,提供通过接口调用的方式来修改账号所属行业,具体如下:

接口调用请求说明

http请求方式: POST

https://api.weixin.qq.com/cgi-bin/template/api_add_template?

 

access_token=ACCESS_TOKEN

POST数据说明

POST数据示例如下:

      {

           "template_id_short":"TM00015"

       }

参数说明

参数

是否必须

说明

template_id_short

模板库中模板的编号,有“TM**”和“OPENTMTM**”等形式

返回码说明

在调用模板消息接口后,会返回JSON数据包。正常时的返回JSON数据包示例:

    {

           "errcode":0,

           "errmsg":"ok",

           "template_id":"Doclyl5uP7Aciu-qZ7mJNPtWkbkYnWBWVja26EGbNyk"

       }

发送模板消息

接口调用请求说明

http请求方式: POST

https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN

POST数据说明

POST数据示例如下:

      {

           "touser":"OPENID",

           "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",

           "url":"http://weixin.qq.com/download",

           "topcolor":"#FF0000",

           "data":{

                   "first": {

                       "value":"恭喜你购买成功!",

                       "color":"#173177"

                   },

                   "keynote1":{

                       "value":"巧克力",

                       "color":"#173177"

                   },

                   "keynote2": {

                       "value":"39.8元",

                       "color":"#173177"

                   },

                   "keynote3": {

                       "value":"2014年9月16日",

                       "color":"#173177"

                   },

                   "remark":{

                       "value":"欢迎再次购买!",

                       "color":"#173177"

                   }

           }

       }


返回码说明

在调用模板消息接口后,会返回JSON数据包。正常时的返回JSON数据包示例:

    {

           "errcode":0,

           "errmsg":"ok",

           "msgid":200228332

       }

事件推送

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

1、送达成功时,推送的XML如下:

           <xml>

           <ToUserName><![CDATA[gh_7f083739789a]]></ToUserName>

           <FromUserName><![CDATA[oia2TjuEGTNoeX76QEjQNrcURxG8]]></FromUserName>

           <CreateTime>1395658920</CreateTime>

           <MsgType><![CDATA[event]]></MsgType>

           <Event><![CDATA[TEMPLATESENDJOBFINISH]]></Event>

           <MsgID>200163836</MsgID>

           <Status><![CDATA[success]]></Status>

           </xml>

参数说明

参数

说明

ToUserName

公众号微信号

FromUserName

接收模板消息的用户的openid

CreateTime

创建时间

MsgType

消息类型是事件

Event

事件为模板消息发送结束

MsgID

消息id

Status

发送状态为成功

2、送达由于用户拒收(用户设置拒绝接收公众号消息)而失败时,推送的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>

参数说明

参数

说明

ToUserName

公众号微信号

FromUserName

接收模板消息的用户的openid

CreateTime

创建时间

MsgType

消息类型是事件

Event

事件为模板消息发送结束

MsgID

消息id

Status

发送状态为用户拒绝接收

3、送达由于其他原因失败时,推送的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>

参数说明

参数

说明

ToUserName

公众号微信号

FromUserName

接收模板消息的用户的openid

CreateTime

创建时间

MsgType

消息类型是事件

Event

事件为模板消息发送结束

MsgID

消息id

Status

发送状态为发送失败(非用户拒绝)

 

以上是关于微信二次开发菜单扫扫码事件的事件推送用java怎么实现的主要内容,如果未能解决你的问题,请参考以下文章

微信二次开发点击菜单openId的获取

Java微信二次开发

微信服务号开发模式下怎么发送推送消息

java开发微信扫码支付,怎么做测试,公众账号ID,商户号这些怎么来?

夺命雷公狗---微信开发17----自定义菜单的事件推送,响应菜单的CLICK

微信二次开发SDK