




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、微信公众平台开发者文档(腾讯官方)一、新手接入11、接入指南第一步:申请消息接口在公众平台网站的高级功能 开发模式页,点击“成为开发者”按钮,填写URL和Token,其中URL是开发者用来接收微信服务器数据的接口URL。Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。第二步:验证URL有效性开发者提交信息后,微信服务器将发送GET请求到填写的URL上,GET请求携带四个参数:参数描述signature微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。times
2、tamp时间戳nonce随机数echostr随机字符串开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:1. 将token、timestamp、nonce三个参数进行字典序排序2. 将三个参数字符串拼接成一个字符串进行sha1加密3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信检验signature的PHP示例代码:private function checkSignature() $signature = $_GET
3、signature; $timestamp = $_GETtimestamp; $nonce = $_GETnonce; $token = TOKEN;$tmpArr = array($token, $timestamp, $nonce);sort($tmpArr);$tmpStr = implode( $tmpArr );$tmpStr = sha1( $tmpStr );if( $tmpStr = $signature )return true;elsereturn false;PHP示例代码下载:(如下:)valid();class wechatCallbackapiTestpublic
4、 function valid() $echoStr = $_GETechostr; /valid signature , option if($this-checkSignature() echo $echoStr; exit; public function responseMsg() /get post data, May be due to the different environments$postStr = $GLOBALSHTTP_RAW_POST_DATA; /extract post dataif (!empty($postStr) $postObj = simplexml
5、_load_string($postStr, SimpleXMLElement, LIBXML_NOCDATA); $fromUsername = $postObj-FromUserName; $toUsername = $postObj-ToUserName; $keyword = trim($postObj-Content); $time = time(); $textTpl = %s0; if(!empty( $keyword ) $msgType = text; $contentStr = Welcome to wechat world!; $resultStr = sprintf($
6、textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; else echo Input something.; else echo ; exit; private function checkSignature() $signature = $_GETsignature; $timestamp = $_GETtimestamp; $nonce = $_GETnonce; $token = TOKEN;$tmpArr = array($token, $timestamp, $nonc
7、e);sort($tmpArr);$tmpStr = implode( $tmpArr );$tmpStr = sha1( $tmpStr );if( $tmpStr = $signature )return true;elsereturn false;?第三步:成为开发者验证URL有效性成功后即接入生效,成为开发者。如果公众号类型为服务号(订阅号只能使用普通消息接口),可以在公众平台网站中申请认证,认证成功的服务号将获得众多接口权限,以满足开发者需求。此后用户每次向公众号发送消息、或者产生自定义菜单点击事件时,响应URL将得到推送。公众号调用各接口时,一般会获得正确的结果,具体结果可见对应接
8、口的说明。返回错误时,可根据返回码来查询错误原因。全局返回码说明用户向公众号发送消息时,公众号方收到的消息发送者是一个OpenID,是使用用户微信号加密后的结果,每个用户对每个公众号有一个唯一的OpenID。此外请注意,微信公众号接口只支持80接口。12、典型案例介绍值得借鉴的公众帐号主要是服务号,试列举并介绍如下:招商银行信用卡中心如果你是持卡人,可快捷查询信用卡账单、额度及积分;快速还款、申请账单分期;微信转接人工服务;信用卡消费,微信免费笔笔提醒。如果不是持卡人,可以微信办卡!招商银行公众号通过提示消息引导用户将自己的微信号和信用卡号安全绑定。用户可以通过该公众号查询账单、收取刷卡通知等
9、功能,这是由招行开发人员通过公众号接口实现的功能。中国南方航空你可以办理值机手续,挑选座位,查询航班信息,查询目的地城市天气,并为明珠会员提供专业的服务。南方航空公众号可以让用户将明珠会员服务和微信号绑定起来。用户可以通过该公众号预订机票、查询订单,甚至办理登机牌。广东联通你可以在微信里绑定手机号、积分流量,套餐余量、手机上网流量,微信专属流量查询,客服咨询。广东联通公众号可以绑定手机号,来查询流量、套餐等等功能。广东联通更与微信深度合作,购买微信沃卡可以获得微信五大特权。13开发者规范开发者进行公众号开发时,除了需要满足每个接口的规范限制、调用频率限制外,还需特别注意模版消息、用户数据等敏感
10、信息的使用规范。涉及用户数据时: 您的服务需要收集用户任何数据的,必须事先获得用户的明确同意,且仅应当收集为运营及功能实现目的而必要的用户数据, 同时应当告知用户相关数据收集的目的、范围及使用方式等,保障用户知情权。 您收集用户的数据后,必须采取必要的保护措施,防止用户数据被盗、泄漏等。 您在特定微信公众号中收集的用户数据仅可以在该特定微信公众号中使用,不得将其使用在该特定微信公众号之外或为其他任何目的进行使用,也不得以任何方式将其提供给他人。 如果腾讯认为您收集、使用用户数据的方式,可能损害用户体验,腾讯有权要求您删除相关数据并不得再以该方式收集、使用用户数据。 一旦您停止使用本服务,或腾讯
11、基于任何原因终止您使用本服务,您必须立即删除全部因使用本服务而获得的数据(包括各种备份), 且不得再以任何方式进行使用。其他规范: 请勿为任何用户自动登录到微信公众平台提供代理身份验证凭据。 请勿提供跟踪功能,包括但不限于识别其他用户在个人主页上查看、点击等操作行为。 请勿自动将浏览器窗口定向到其他网页。 请勿设置或发布任何违反相关法规、公序良俗、社会公德等的玩法、内容等。 请勿公开表达或暗示,您与腾讯之间存在合作关系,包括但不限于相互持股、商业往来或合作关系等,或声称腾讯对您的认可。完整的开发者规范和接口限制,请详见开发者接口文档,以及腾讯微信公众平台开发者协议。二、基础支持21获取acce
12、ss tokenccess_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效。公众号可以使用AppID和AppSecret调用本接口来获取access_token。AppID和AppSecret可在开发模式中获得(需要已经成为开发者,且帐号没有异常状态)。注意调用所有微信接口时均需使用https协议。接口调用请求说明http请求方式: GET/cgi-bin/token?grant_type=client
13、_credential&appid=APPID&secret=APPSECRET参数说明参数是否必须说明grant_type是获取access_token填写client_credentialappid是第三方用户唯一凭证secret是第三方用户唯一凭证密钥,既appsecret返回说明正常情况下,微信会返回下述JSON数据包给公众号:access_token:ACCESS_TOKEN,expires_in:7200参数说明access_token获取到的凭证expires_in凭证有效时间,单位:秒错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):errco
14、de:40013,errmsg:invalid appid22全局返回码说明公众号每次调用接口时,可能获得正确或错误的返回码,开发者可以根据返回码信息调试接口,排查错误。全局返回码说明如下:返回码说明-1系统繁忙0请求成功40001获取access_token时AppSecret错误,或者access_token无效40002不合法的凭证类型40003不合法的OpenID40004不合法的媒体文件类型40005不合法的文件类型40006不合法的文件大小40007不合法的媒体文件id40008不合法的消息类型40009不合法的图片文件大小40010不合法的语音文件大小40011不合法的视频文件大
15、小40012不合法的缩略图文件大小40013不合法的APPID40014不合法的access_token40015不合法的菜单类型40016不合法的按钮个数40017不合法的按钮个数40018不合法的按钮名字长度40019不合法的按钮KEY长度40020不合法的按钮URL长度40021不合法的菜单版本号40022不合法的子菜单级数40023不合法的子菜单按钮个数40024不合法的子菜单按钮类型40025不合法的子菜单按钮名字长度40026不合法的子菜单按钮KEY长度40027不合法的子菜单按钮URL长度40028不合法的自定义菜单使用用户40029不合法的oauth_code40030不合法的
16、refresh_token40031不合法的openid列表40032不合法的openid列表长度40033不合法的请求字符,不能包含uxxxx格式的字符40035不合法的参数40038不合法的请求格式40039不合法的URL长度40050不合法的分组id40051分组名字不合法41001缺少access_token参数41002缺少appid参数41003缺少refresh_token参数41004缺少secret参数41005缺少多媒体文件数据41006缺少media_id参数41007缺少子菜单数据41008缺少oauth code41009缺少openid42001access_tok
17、en超时42002refresh_token超时42003oauth_code超时43001需要GET请求43002需要POST请求43003需要HTTPS请求43004需要接收者关注43005需要好友关系44001多媒体文件为空44002POST的数据包为空44003图文消息内容为空44004文本消息内容为空45001多媒体文件大小超过限制45002消息内容超过限制45003标题字段超过限制45004描述字段超过限制45005链接字段超过限制45006图片链接字段超过限制45007语音播放时间超过限制45008图文消息超过限制45009接口调用超过限制45010创建菜单个数超过限制45015
18、回复时间超过限制45016系统分组,不允许修改45017分组名字过长45018分组数量超过上限46001不存在媒体数据46002不存在的菜单版本46003不存在的菜单数据46004不存在的用户47001解析JSON/XML内容错误48001api功能未授权50001用户未授权该api使用网页调试工具调试该接口/debug/cgi-bin/apiinfo?t=index&type=%E5%9F%BA%E7%A1%80%E6%94%AF%E6%8C%81&form=%E8%8E%B7%E5%8F%96access_token%E6%8E%A5%E5%8
19、F%A3%20/token23接口频率限制说明公众号调用接口并不是无限制的。为了防止公众号的程序错误而引发微信服务器负载异常,默认情况下,每个公众号调用接口都不能超过一定限制,当超过一定限制时,调用对应接口会收到如下错误返回码:errcode:45009,errmsg:api freq out of limit各接口调用频率限制如下:接口每日限额获取access_token2000自定义菜单创建1000自定义菜单查询10000自定义菜单删除1000创建分组1000获取分组1000修改分组名1000移动用户分组100000上传多媒体文件5000下载多媒体文件10000发送客服消息500000获取
20、带参数的二维码100000获取关注者列表500获取用户基本信息5000000获取网页授权access_token2000000刷新网页授权access_token2000000网页授权获取用户信息2000000请注意,在测试号申请页中申请的测试号,接口调用频率限制如下:接口每日限额获取access_token200自定义菜单创建100自定义菜单查询1000自定义菜单删除100创建分组100获取分组100修改分组名100移动用户分组1000上传多媒体文件500下载多媒体文件1000发送客服消息50000获取带参数的二维码10000获取关注者列表100获取用户基本信息500000获取网页授权acc
21、ess_token200000刷新网页授权access_token200000网页授权获取用户信息20000024上传下载多媒体文件公众号在使用接口时,对多媒体文件、多媒体消息的获取和调用等操作,是通过media_id来进行的。通过本接口,公众号可以上传或下载多媒体文件。但请注意,每个多媒体文件(media_id)会在上传、用户发送到微信服务器3天后自动删除,以节省服务器资源。上传多媒体文件公众号可调用本接口来上传图片、语音、视频等文件到微信服务器,上传后服务器会返回对应的media_id,公众号此后可根据该media_id来获取多媒体。请注意,media_id是可复用的,调用该接口需http
22、协议。接口调用请求说明http请求方式: POST/FORM/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE调用示例(使用curl命令,用FORM表单方式上传一个多媒体文件):curl -F media=test.jpg /cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE参数说明参数是否必须说明access_token是调用接口凭证type是媒体文件类型,
23、分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)media是form-data中媒体文件标识,有filename、filelength、content-type等信息返回说明正确情况下的返回JSON数据包结果如下:type:TYPE,media_id:MEDIA_ID,created_at:123456789参数描述type媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb,主要用于视频与音乐格式的缩略图)media_id媒体文件上传后,获取时的唯一标识created_at媒体文件上传时间戳错误情况下的返回J
24、SON数据包示例如下(示例为无效媒体类型错误):errcode:40004,errmsg:invalid media type注意事项上传的多媒体文件有格式和大小限制,如下: 图片(image): 128K,支持JPG格式 语音(voice):256K,播放长度不超过60s,支持AMRMP3格式 视频(video):1MB,支持MP4格式 缩略图(thumb):64KB,支持JPG格式媒体文件在后台保存时间为3天,即3天后media_id失效。使用网页调试工具调试该接口下载多媒体文件公众号可调用本接口来获取多媒体文件。请注意,视频文件不支持下载,调用该接口需http协议。接口调用请求说明htt
25、p请求方式: GET/cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID请求示例(示例为通过curl命令获取多媒体文件)curl -I -G /cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID参数说明参数是否必须说明access_token是调用接口凭证media_id是媒体文件ID返回说明正确情况下的返回HTTP头如下:HTTP/1.1
26、200 OKConnection: closeContent-Type: image/jpeg Content-disposition: attachment; filename=MEDIA_ID.jpgDate: Sun, 06 Jan 2013 10:20:18 GMTCache-Control: no-cache, must-revalidateContent-Length: 339721curl -G /cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID错误情
27、况下的返回JSON数据包示例如下(示例为无效媒体ID错误)::errcode:40007,errmsg:invalid media_id三、接受消息31验证消息真实性在开发者首次提交验证申请时,微信服务器将发送GET请求到填写的URL上,并且带上四个参数(signature、timestamp、nonce、echostr),开发者通过对签名(即signature)的效验,来判断此条消息的真实性。此后,每次开发者接收用户消息的时候,微信也都会带上前面三个参数(signature、timestamp、nonce)访问开发者设置的URL,开发者依然通过对签名的效验判断此条消息的真实性。效验方式与首次
28、提交验证申请一致。参数描述signature微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。timestamp时间戳nonce随机数echostr随机字符串开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:1. 将token、timestamp、nonce三个参数进行字典序排序2. 将三个参数字符串拼接成一个字符串进行sha1加密3. 开发者获得加密后的字符串可与signature对
29、比,标识该请求来源于微信检验signature的PHP示例代码:private function checkSignature() $signature = $_GETsignature; $timestamp = $_GETtimestamp; $nonce = $_GETnonce; $token = TOKEN;$tmpArr = array($token, $timestamp, $nonce);sort($tmpArr);$tmpStr = implode( $tmpArr );$tmpStr = sha1( $tmpStr );if( $tmpStr = $signature )r
30、eturn true;elsereturn false;PHP示例代码下载:【如下】valid();class wechatCallbackapiTestpublic function valid() $echoStr = $_GETechostr; /valid signature , option if($this-checkSignature() echo $echoStr; exit; public function responseMsg() /get post data, May be due to the different environments$postStr = $GLO
31、BALSHTTP_RAW_POST_DATA; /extract post dataif (!empty($postStr) $postObj = simplexml_load_string($postStr, SimpleXMLElement, LIBXML_NOCDATA); $fromUsername = $postObj-FromUserName; $toUsername = $postObj-ToUserName; $keyword = trim($postObj-Content); $time = time(); $textTpl = %s0; if(!empty( $keywor
32、d ) $msgType = text; $contentStr = Welcome to wechat world!; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; else echo Input something.; else echo ; exit; private function checkSignature() $signature = $_GETsignature; $timestamp = $_GETtimes
33、tamp; $nonce = $_GETnonce; $token = TOKEN;$tmpArr = array($token, $timestamp, $nonce);sort($tmpArr);$tmpStr = implode( $tmpArr );$tmpStr = sha1( $tmpStr );if( $tmpStr = $signature )return true;elsereturn false;?32接收普通消息文本消息 1348831860 1234567890123456 参数描述ToUserName开发者微信号FromUserName发送方帐号(一个OpenID)C
34、reateTime消息创建时间 (整型)MsgTypetextContent文本消息内容MsgId消息id,64位整型图片消息 1348831860 1234567890123456 参数描述ToUserName开发者微信号FromUserName发送方帐号(一个OpenID)CreateTime消息创建时间 (整型)MsgTypeimagePicUrl图片链接MediaId图片消息媒体id,可以调用多媒体文件下载接口拉取数据。MsgId消息id,64位整型语音消息13572909131234567890123456参数描述ToUserName开发者微信号FromUserName发送方帐号(一
35、个OpenID)CreateTime消息创建时间 (整型)MsgType语音为voiceMediaId语音消息媒体id,可以调用多媒体文件下载接口拉取数据。Format语音格式,如amr,speex等MsgID消息id,64位整型视频消息13572909131234567890123456参数描述ToUserName开发者微信号FromUserName发送方帐号(一个OpenID)CreateTime消息创建时间 (整型)MsgType视频为videoMediaId视频消息媒体id,可以调用多媒体文件下载接口拉取数据。ThumbMediaId视频消息缩略图的媒体id,可以调用多媒体文件下载接口
36、拉取数据。MsgId消息id,64位整型地理位置消息135177636023.134521113.358803201234567890123456 参数描述ToUserName开发者微信号FromUserName发送方帐号(一个OpenID)CreateTime消息创建时间 (整型)MsgTypelocationLocation_X地理位置维度Location_Y地理位置精度Scale地图缩放大小Label地理位置信息MsgId消息id,64位整型链接消息13517763601234567890123456 参数描述ToUserName接收方微信号FromUserName发送方微信号,若为普通
37、用户,则是一个OpenIDCreateTime消息创建时间MsgType消息类型,linkTitle消息标题Description消息描述Url消息链接MsgId消息id,64位整型33接收事件推送关注/取消关注事件用户在关注与取消关注公众号事,微信会把这个事件推送到开发者填写的URL。方便开发者给用户下发欢迎消息或者做帐号的解绑。推送XML数据包示例:123456789参数说明:参数描述ToUserName开发者微信号FromUserName发送方帐号(一个OpenID)CreateTime消息创建时间 (整型)MsgType消息类型,eventEvent事件类型,subscribe(订阅)
38、、unsubscribe(取消订阅)扫描带参数二维码事件用户扫描带场景值二维码时,可能推送以下两种事件:1. 如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。2. 如果用户已经关注公众号,则微信会将带场景值扫描事件推送给开发者。1. 用户未关注时,进行关注后的事件推送推送XML数据包示例:123456789参数说明:参数描述ToUserName开发者微信号FromUserName发送方帐号(一个OpenID)CreateTime消息创建时间 (整型)MsgType消息类型,eventEvent事件类型,subscribeEventKey事件KEY值,qrscene_为前缀,后面为二维码的参数值Ticket二维码的ticket,可用来换取二维码图片2. 用户已关注时的事件推送推送XML数据包示例:123456789参数说明:参数描述ToUserName开发者微信号FromUserName发送方帐号(一个OpenID)Cre
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 共享出行平台信用评价体系与用户信用评价体系创新研究报告
- 共享民宿2025年城市旅游住宿市场政策环境下的项目可行性研究报告
- 社区年度集体述职报告范文
- 辽宁工业大学《金融统计》2023-2024学年第一学期期末试卷
- 2024-2025学年安徽省阜阳市九上化学期末教学质量检测试题含解析
- 江苏省镇江市润州区2024年九年级化学第一学期期末综合测试模拟试题含解析
- 2025届陕西西安市交大附中七上数学期末联考试题含解析
- 河北省秦皇岛市卢龙县2025届九年级化学第一学期期末复习检测模拟试题含解析
- 厂房装修工程转让及后续维护协议
- 财务数据挖掘保密及商业价值保护协议
- 《环境化学》戴树桂(第二版)-课后习题与参考答案
- 建设工程法规 课件 项目3 施工许可法律制度
- 阀杆推力、操作扭矩及-美国太平洋算法-闸阀、截止阀
- 全国各省市县-一览表
- 暑假假期安全教育 家长会课件
- 02SG518-1-门式刚架轻型房屋钢结构(含04年修改)
- 2021年徐州市小学教师业务能力测试数学试题
- 四川省成都市泡桐树小学六年级小升初语文测试卷(8套试卷带答案解析)
- 2023-2024年全科医学(正高)考试高频题库(历年考点版)带答案解析
- 2023年浙江省镇海中学自主招生数学试卷及答案
- -卫生资格-正高-临床医学检验-正高-章节练习-临床血液检验-试题(案例分析题)(共408题)
评论
0/150
提交评论