微信公众平台开发者文档(整理自微信官网).docx

上传人:小飞机 文档编号:2022717 上传时间:2022-12-31 格式:DOCX 页数:73 大小:972.50KB
返回 下载 相关 举报
微信公众平台开发者文档(整理自微信官网).docx_第1页
第1页 / 共73页
微信公众平台开发者文档(整理自微信官网).docx_第2页
第2页 / 共73页
微信公众平台开发者文档(整理自微信官网).docx_第3页
第3页 / 共73页
微信公众平台开发者文档(整理自微信官网).docx_第4页
第4页 / 共73页
微信公众平台开发者文档(整理自微信官网).docx_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《微信公众平台开发者文档(整理自微信官网).docx》由会员分享,可在线阅读,更多相关《微信公众平台开发者文档(整理自微信官网).docx(73页珍藏版)》请在三一办公上搜索。

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参数说明参数是否必须说明grant_type是获取access_token填写client_credential

13、appid是第三方用户唯一凭证secret是第三方用户唯一凭证密钥,既appsecret返回说明正常情况下,微信会返回下述JSON数据包给公众号:access_token:ACCESS_TOKEN,expires_in:7200参数说明access_token获取到的凭证expires_in凭证有效时间,单位:秒错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):errcode:40013,errmsg:invalid appid22全局返回码说明公众号每次调用接口时,可能获得正确或错误的返回码,开发者可以根据返回码信息调试接口,排查错误。全局返回码说明如下:返

14、回码说明-1系统繁忙0请求成功40001获取access_token时AppSecret错误,或者access_token无效40002不合法的凭证类型40003不合法的OpenID40004不合法的媒体文件类型40005不合法的文件类型40006不合法的文件大小40007不合法的媒体文件id40008不合法的消息类型40009不合法的图片文件大小40010不合法的语音文件大小40011不合法的视频文件大小40012不合法的缩略图文件大小40013不合法的APPID40014不合法的access_token40015不合法的菜单类型40016不合法的按钮个数40017不合法的按钮个数40018

15、不合法的按钮名字长度40019不合法的按钮KEY长度40020不合法的按钮URL长度40021不合法的菜单版本号40022不合法的子菜单级数40023不合法的子菜单按钮个数40024不合法的子菜单按钮类型40025不合法的子菜单按钮名字长度40026不合法的子菜单按钮KEY长度40027不合法的子菜单按钮URL长度40028不合法的自定义菜单使用用户40029不合法的oauth_code40030不合法的refresh_token40031不合法的openid列表40032不合法的openid列表长度40033不合法的请求字符,不能包含uxxxx格式的字符40035不合法的参数40038不合法

16、的请求格式40039不合法的URL长度40050不合法的分组id40051分组名字不合法41001缺少access_token参数41002缺少appid参数41003缺少refresh_token参数41004缺少secret参数41005缺少多媒体文件数据41006缺少media_id参数41007缺少子菜单数据41008缺少oauth code41009缺少openid42001access_token超时42002refresh_token超时42003oauth_code超时43001需要GET请求43002需要POST请求43003需要HTTPS请求43004需要接收者关注4300

17、5需要好友关系44001多媒体文件为空44002POST的数据包为空44003图文消息内容为空44004文本消息内容为空45001多媒体文件大小超过限制45002消息内容超过限制45003标题字段超过限制45004描述字段超过限制45005链接字段超过限制45006图片链接字段超过限制45007语音播放时间超过限制45008图文消息超过限制45009接口调用超过限制45010创建菜单个数超过限制45015回复时间超过限制45016系统分组,不允许修改45017分组名字过长45018分组数量超过上限46001不存在媒体数据46002不存在的菜单版本46003不存在的菜单数据46004不存在的用户

18、47001解析JSON/XML内容错误48001api功能未授权50001用户未授权该api使用网页调试工具调试该接口23接口频率限制说明公众号调用接口并不是无限制的。为了防止公众号的程序错误而引发微信服务器负载异常,默认情况下,每个公众号调用接口都不能超过一定限制,当超过一定限制时,调用对应接口会收到如下错误返回码:errcode:45009,errmsg:api freq out of limit各接口调用频率限制如下:接口每日限额获取access_token2000自定义菜单创建1000自定义菜单查询10000自定义菜单删除1000创建分组1000获取分组1000修改分组名1000移动用

19、户分组100000上传多媒体文件5000下载多媒体文件10000发送客服消息500000获取带参数的二维码100000获取关注者列表500获取用户基本信息5000000获取网页授权access_token2000000刷新网页授权access_token2000000网页授权获取用户信息2000000请注意,在测试号申请页中申请的测试号,接口调用频率限制如下:接口每日限额获取access_token200自定义菜单创建100自定义菜单查询1000自定义菜单删除100创建分组100获取分组100修改分组名100移动用户分组1000上传多媒体文件500下载多媒体文件1000发送客服消息50000获

20、取带参数的二维码10000获取关注者列表100获取用户基本信息500000获取网页授权access_token200000刷新网页授权access_token200000网页授权获取用户信息20000024上传下载多媒体文件公众号在使用接口时,对多媒体文件、多媒体消息的获取和调用等操作,是通过media_id来进行的。通过本接口,公众号可以上传或下载多媒体文件。但请注意,每个多媒体文件(media_id)会在上传、用户发送到微信服务器3天后自动删除,以节省服务器资源。上传多媒体文件公众号可调用本接口来上传图片、语音、视频等文件到微信服务器,上传后服务器会返回对应的media_id,公众号此后可

21、根据该media_id来获取多媒体。请注意,media_id是可复用的,调用该接口需http协议。接口调用请求说明http请求方式: POST/FORM调用示例(使用curl命令,用FORM表单方式上传一个多媒体文件):curl -F media=test.jpg 参数说明参数是否必须说明access_token是调用接口凭证type是媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)media是form-data中媒体文件标识,有filename、filelength、content-type等信息返回说明正确情况下的返回JSON数据包结果如

22、下:type:TYPE,media_id:MEDIA_ID,created_at:123456789参数描述type媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb,主要用于视频与音乐格式的缩略图)media_id媒体文件上传后,获取时的唯一标识created_at媒体文件上传时间戳错误情况下的返回JSON数据包示例如下(示例为无效媒体类型错误):errcode:40004,errmsg:invalid media type注意事项上传的多媒体文件有格式和大小限制,如下: 图片(image): 128K,支持JPG格式 语音(voice):25

23、6K,播放长度不超过60s,支持AMRMP3格式 视频(video):1MB,支持MP4格式 缩略图(thumb):64KB,支持JPG格式媒体文件在后台保存时间为3天,即3天后media_id失效。使用网页调试工具调试该接口下载多媒体文件公众号可调用本接口来获取多媒体文件。请注意,视频文件不支持下载,调用该接口需http协议。接口调用请求说明http请求方式: GET请求示例(示例为通过curl命令获取多媒体文件)curl -I -G 参数说明参数是否必须说明access_token是调用接口凭证media_id是媒体文件ID返回说明正确情况下的返回HTTP头如下:HTTP/1.1 200

24、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 错误情况下的返回JSON数据包示例如下(示例为无效媒体ID错误)::errcode:40007,errmsg:invalid media_id三、接受消息31验证消息真实性在开发者首次提交验证申

25、请时,微信服务器将发送GET请求到填写的URL上,并且带上四个参数(signature、timestamp、nonce、echostr),开发者通过对签名(即signature)的效验,来判断此条消息的真实性。此后,每次开发者接收用户消息的时候,微信也都会带上前面三个参数(signature、timestamp、nonce)访问开发者设置的URL,开发者依然通过对签名的效验判断此条消息的真实性。效验方式与首次提交验证申请一致。参数描述signature微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。timestamp时间戳non

26、ce随机数echostr随机字符串开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:1. 将token、timestamp、nonce三个参数进行字典序排序2. 将三个参数字符串拼接成一个字符串进行sha1加密3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信检验signature的PHP示例代码:private function checkSignature() $signature = $_GETsignature;

27、 $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 function v

28、alid() $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_load_strin

29、g($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($textTpl, $f

30、romUsername, $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, $nonce);sort($tm

31、pArr);$tmpStr = implode( $tmpArr );$tmpStr = sha1( $tmpStr );if( $tmpStr = $signature )return true;elsereturn false;?32接收普通消息文本消息 1348831860 1234567890123456 参数描述ToUserName开发者微信号FromUserName发送方帐号(一个OpenID)CreateTime消息创建时间 (整型)MsgTypetextContent文本消息内容MsgId消息id,64位整型图片消息 1348831860 1234567890123456 参数

32、描述ToUserName开发者微信号FromUserName发送方帐号(一个OpenID)CreateTime消息创建时间 (整型)MsgTypeimagePicUrl图片链接MediaId图片消息媒体id,可以调用多媒体文件下载接口拉取数据。MsgId消息id,64位整型语音消息13572909131234567890123456参数描述ToUserName开发者微信号FromUserName发送方帐号(一个OpenID)CreateTime消息创建时间 (整型)MsgType语音为voiceMediaId语音消息媒体id,可以调用多媒体文件下载接口拉取数据。Format语音格式,如amr,speex等MsgID消息id,64位整型视频消息13572909131234567890123456参数描述ToUserName开发者微信号FromUserName发送方帐号(一个OpenID)CreateTime消息创建时间 (整型)MsgType视频为videoMediaId视频消息媒体id,可以调用多媒体文件下载接口拉取数据。ThumbMediaId视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据。MsgId消息id,64位整型地理位置消息

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号