微信开发者文档

接收事件推送

目录

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


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

时间: 2024-08-06 20:08:42

微信开发者文档的相关文章

微信开发者文档连接

1.微信开放平台 https://open.weixin.qq.com/cgi-bin/frame?t=resource/res_main_tmpl&lang=zh_CN&target=res/app_wx_login 2. 微信公众平台开发者文档 http://mp.weixin.qq.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5 微信开发者文档连接

详解微信开发者文档——2接入服务器至微信开发平台

写在前面的话:为了更灵活的与微信公众平台互动,需要将微信公众平台与自己的服务器进行对接,只有对接成功之后,才能够进行后面功能的实现. =========正文开始========== 详细讲解之前,对微信公众平台与自己服务器对接先有个感性的认识. 假设微信已经与我们自己的服务器完成对接,之后微信公众平台就能够将自己接收到的消息发送给我们的服务器,同样我们也可以给微信服务器发送消息.这里就涉及到了几个问题:1.微信应该给我们服务器的什么地址进行对接呢?2.如何验证这个地址确实是我们自己服务器的地址呢

详解微信开发者文档——3接收用户文本消息并自动回复文本消息

写在前面的话:上一篇介绍了如何将自己的服务器与微信公众平台进行连接,连接成功之后就可以与微信进行交互了,这一篇介绍最简单的情形,接收用户文本消息,并自动回复文本消息,如果能够实现这个功能,那么我们就能够轻松的实现接收不同的用户消息,并根据业务需要回复用户不同类型的消息,更复杂的在下一篇中讲解. =====正文开始===== 当微信用户向公众号发送消息时,微信服务器会将该消息发送至我们填写的URL中,我们在后台就能够写代码实现接收消息---处理消息----回复消息的操作. 这里有几点需要注意: 1

详解微信开发者文档——5 access_token管理

写在前面的话:前几篇博客详细讲解了如何获取用户发送的消息并进行回复,这里的回复是一种被动的回复,而被动回复的方式便是通过echo返回信息给微信服务器的POST请求,因此,其实我们并没有算的上调用了微信的接口,从这一篇文章开始,才算是真正的调用微信接口开端,就从access_token讲起. ======正文开始======== 每时每刻都有许多用户来调用微信接口,那么我们想要请求微信接口,如何知道是哪一个用户来请求的呢?也就是说需要一个唯一的凭证来唯一的标明一个公众号,这个信息便是APPID和A

详解微信开发者文档——4接收用户其他类型消息并进行自定义处理

http://www.midifan.com/moduleuser-index-427124.htmhttp://www.midifan.com/moduleuser-index-427714.htmhttp://www.midifan.com/moduleuser-index-427697.htmhttp://www.midifan.com/moduleuser-index-427721.htmhttp://www.midifan.com/moduleuser-index-427728.htm

微信公众平台开发者文档

微信公众平台开发者文档 公众平台开发接口介绍微信公众平台开发者文档,布布扣,bubuko.com

Google Android开发者文档系列-创建有内容分享特性的应用之共享文件

Sharing a File(共享文件) 该系列文章是我在学习Google开发者文档时结合谷歌翻译和自身理解编写的,希望对学习Android开发的朋友带来些便利,由于个人翻译水平有限,所以内容包含原文和译文,希望浏览者结合理解,以免步入我可能错译的误区.在此感谢http://android.xsoftlab.net/提供的镜像,希望转载者注明出处http://blog.csdn.net/u014031072/article/details/51596803方便查看最新博客 Once you ha

Google Android开发者文档系列-与其他应用程序交互之使用户跳转到其它应用程序

Sending the User to Another App(使用户跳转到其它应用程序) 该系列文章是我在学习Google开发者文档时结合谷歌翻译和自身理解编写的,希望对学习Android开发的朋友带来些便利,由于个人翻译水平有限,所以内容包含原文和译文,希望浏览者结合理解,以免步入我可能错译的误区.在此感谢http://android.xsoftlab.net/提供的镜像,希望转载者注明出处http://blog.csdn.net/u014031072/article/details/515

layuiAdmin pro v1.x 【单页版】开发者文档

layuiAdmin std v1.x [iframe版]开发者文档 题外 该文档适用于 layuiAdmin 专业版(单页面),阅读之前请务必确认是否与你使用的版本对应. 熟练掌握 layuiAdmin 的前提是熟练掌握 layui,因此除了本篇文档, layui 的文档 也是必不可少的存在. 快速上手 部署 解压文件后,将 layuiAdmin 完整放置在任意目录 通过本地 web 服务器去访问 ./start/index.html 即可运行 Demo 由于 layuiAdmin 可采用前后