一、开发者必读1.更新日志2015年10月9日微信公众平台的微信认证涉及开发者接口的赋予,为了帮助公众号开发者获取公众号的认证状态,微信公众平台开始提供公众号认证过程中各阶段的事件推送,会推送到在开发者中心填写的服务器地址中。2015年8月12日微信连Wi-Fi新增获取公众号连网URL接口,获取二维码物料接口中更新了二维码物料样式,添加设备接口允许第三方的ssid包含中文。2015年7月31日公众平台增加了群发图文消息时使用的图片上传接口。开发者可以通过该接口上传图片,获得图片链接并放置到图文消息中,然后使用群发接口群发给用户。该接口开放给所有认证公众号使用。同时,为了保证安全性,从8月15日开始,所有图文消息页面中的外链图片将被去除(8月15日之前的图文消息不受影响,外链图片仍会显示),请开发者尽快替代为使用上述新接口。2015年7月28日群发接口在群发图文消息时,增加了msg_data_id的返回,可以用于在群发后使用图文分析接口获取图文消息的数据。卡券接口部分新增数据接口,会员卡信息查询接口(含积分查询)。2015年7月2日为了保证开发者迁移公众号业务到第三方平台时的便利性,使用获取自动回复配置接口和获取菜单配置接口获取公众号配置时,图文消息的配置将增加mediaID信息的输出。2015年6月29日为了帮助开发者提高效率,用户管理接口中新增了批量获取用户基本信息的接口。2015年6月17日摇一摇周边新增申请开通摇一摇周边接口,新增摇一摇事件通知接口,新增查询设备ID申请审核状态接口。优化修改小部分文案。2015年6月15日为了满足第三方平台开发者的需求,发送消息-群发接口中的预览接口,增加了对微信号发送预览的能力(此前只能对openID发送预览)。2015年5月28日素材管理-获取永久素材接口,在获取图文消息素材时,接口返回数据字段中增加了URL字段,便于开发者直接使用图文消息文章页。在获取图片素材时,直接返回图片URL,便于开发者使用。但请注意,公众平台的图片仅能在腾讯系内域名使用,在其他域名使用将被禁止。2015年5月19日向认证的政府与媒体类订阅号开放网页授权接口查看详情2015年4月29日自定义菜单接口和素材管理接口,向第三方平台旗下未认证订阅号开放。查看详情2015年4月22日帐号管理-带参数二维码接口更新,临时二维码的最长有效时间从半小时提升至7天,并且永久二维码的场景值参数可以是字符串形式。2015年4月14日新增获取自动回复和自定义菜单配置接口,对所有公众号开放。对于接入了公众号登录授权的第三方平台,在公众号授权给开发者后,开发者应当通过上述接口获取公众号的配置,为其重新配置,以保证公众号运营者的业务运营体验。查看详情2015年4月11日门店相关接口已更换,旧门店接口将于5月正式停用,请尽快查看最新平台文档,及时切换新接口。查看详情2015年3月18日公众平台新增素材管理接口,对所有认证公众号开放。该接口的开放,可以帮助公众号开发者更方便地进行素材管理,也可以帮助第三方平台实现与公众平台官网互通的素材管理功能。查看详情2015年3月13日微信公众平台接口测试账号是为满足公众号开发者了解平台接口能力以及新功能开发上线前进行测试,其地址为=sandbox/login,本次更新让测试帐号获得了与认证服务号相同的能力,包括JS-SDK相关能力。查看详情2015年2月3日用户管理-用户分组管理接口中,修改用户分组增加了批量操作的接口能力。更多更早的开发者和接口方面的更新,请参见微信公众平台公告和微信开放平台公告。2.接入指南2.1概述接入微信公众平台开发,开发者需要按照如下步骤完成:1、填写服务器配置2、验证服务器地址的有效性3、依据接口文档实现业务逻辑下面详细介绍这3个步骤。2.2第一步:填写服务器配置登录微信公众平台官网后,在公众平台后台管理页面-开发者中心页,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,其中URL是开发者用来接收微信消息和事件的接口URL。Token可由开22发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。同时,开发者可选择消息加解密方式:明文模式、兼容模式和安全模式。模式的选择与服务器配置在提交后都会立即生效,请开发者谨慎填写及选择。加解密方式的默认状态为明文模式,选择兼容模式和安全模式需要提前配置好相关加解密代码,详情请参考消息体签名及加解密部分的文档。2.3第二步:验证服务器地址的有效性开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带四个参数:参数描述signature微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。timestamp时间戳nonce随机数echostr随机字符串开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:1.将token、timestamp、nonce三个参数进行字典序排序2.将三个参数字符串拼接成一个字符串进行sha1加密3.开发者获得加密后的字符串可与signature对比,标识该请求来源于微信检验signature的PHP示例代码:privatefunctioncheckSignature(){$signature=$_GET[signature];$timestamp=$_GET[timestamp];$nonce=$_GET[nonce];$token=TOKEN;$tmpArr=array($token,$timestamp,$nonce);sort($tmpArr,SORT_STRING);$tmpStr=implode($tmpArr);$tmpStr=sha1($tmpStr);if($tmpStr==$signature){returntrue;}else{returnfalse;}}PHP示例代码下载:下载2.4第三步:依据接口文档实现业务逻辑验证URL有效性成功后即接入生效,成为开发者。如果公众号类型为服务号(订阅号只能使用普通消息接口),可以在公众平台网站中申请认证,认证成功的服务号将获得众多接口权限,以满足开发者需求。此后用户每次向公众号发送消息、或者产生自定义菜单点击事件时,开发者填写的服务器配置URL将得到微信服务器推送过来的消息和事件,然后开发者可以依据自身业务逻辑进行响应,例如回复消息等。公众号调用各接口时,一般会获得正确的结果,具体结果可见对应接口的说明。返回错误时,可根据返回码来查询错误原因。全局返回码说明用户向公众号发送消息时,公众号方收到的消息发送者是一个OpenID,是使用用户微信号加密后的结果,每个用户对每个公众号有一个唯一的OpenID。此外,由于开发者经常有需在多个平台(移动应用、网站、公众帐号)之间共通用户帐号,统一帐号体系的需求,微信开放平台(open.weixin.qq.com)提供了UnionID机制。开发者可通过OpenID来获取用户基本信息,而如果开发者拥有多个应用(移动应用、网站应用和公众帐号,公众帐号只有在被绑定到微信开放平台帐号下后,才会获取UnionID),可通过获取用户基本信息中的UnionID来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的UnionID是唯一的。换句话说,同一用户,对同一个微信开放平台帐号下的不同应用,UnionID是相同的。详情请在微信开放平台的资源中心-移动应用开发-微信登录-授权关系接口调用指引-获取用户个人信息(UnionID机制)中查看。另请注意,微信公众号接口只支持80接口。3.开发者规范开发者进行公众号开发时,除了需要满足每个接口的规范限制、调用频率限制外,还需特别注意模版消息、用户数据等敏感信息的使用规范。涉及用户数据时:您的服务需要收集用户任何数据的,必须事先获得用户的明确同意,且仅应当收集为运营及功能实现目的而必要的用户数据,同时应当告知用户相关数据收集的目的、范围及使用方式等,保障用户知情权。您收集用户的数据后,必须采取必要的保护措施,防止用户数据被盗、泄漏等。您在特定微信公众号中收集的用户数据仅可以在该特定微信公众号中使用,不得将其使用在该特定微信公众号之外或为其他任何目的进行使用,也不得以任何方式将其提供给他人。如果腾讯认为您收集、使用用户数据的方式,可能损害用户体验,腾讯有权要求您删除相关数据并不得再以该方式收集、使用用户数据。一旦您停止使用本服务,或腾讯基于任何原因终止您使用本服务,您必须立即删除全部因使用本服务而获得的数据(包括各种备份),且不得再以任何方式进行使用。其他规范:请勿为任何用户自动登录到微信公众平台提供代理身份验证凭据。请勿提供跟踪功能,包括但不限于识别其他用户在个人主页上查看、点击等操作行为。请勿自动将浏览器窗口定向到其他网页。请勿设置或发布任何违反相关法规、公序良俗、社会公德等的玩法、内容等。请勿公开表达或暗示,您与腾讯之间存在合作关系,包括但不限于相互持股、商业往来或合作关系等,或声称腾讯对您的认可。完整的开发者规范和接口限制,请详见开发者接口文档,以及腾讯微信公众平台开发者协议。4.公众号类型的接口权限说明不同的公众号类型具备不同的接口权限,具体如下表:请注意:1、微博认证视作未认证,因此微博认证的公众号不会拥有微信认证公众号特有的接口。2、微信认证分为资质认证和名称认证两部分,只需要资质认证通过,就可获得接口。接口名称未认证订阅号微信认证订阅号未认证服务号微信认证服务号基础支持-获取access_token有有有有基础支持-获取微信服务器IP地址有有有有接收消息-验证消息真实性、接收普通消息、接收事件推送、接收语音识别结果有有有有发送消息-被动回复消息有有有有发送消息-客服接口有有发送消息-群发接口有有发送消息-模板消息接口(发送业务通知)有用户管理-用户分组管理有有用户管理-设置用户备注名有有用户管理-获取用户基本信息有有用户管理-获取用户列表有有用户管理-获取用户地理位置有用户管理-网页授权获取用户openid/用户基本信息有推广支持-生成带参数二维码有推广支持-长链接转短链接口有界面丰富-自定义菜单有有有素材管理-素材管理接口有有智能接口-语义理解接口有多客服-获取多客服消息记录、客服管理有微信支付接口需申请微信小店接口需申请微信卡券接口需申请需申请微信设备功能接口需申请微信JS-SDK-基础接口有有有有微信JS-SDK-分享接口有有微信JS-SDK-图像接口有有有有微信JS-SDK-音频接口有有有有微信JS-SDK-智能接口(网页语音识别)有有有有微信JS-SDK-设备信息有有有有微信JS-SDK-地理位置有有有有微信JS-SDK-界面操作有有有有微信JS-SDK-微信扫一扫有有有有微信JS-SDK-微信小店有微信JS-SDK-微信卡券有有微信JS-SDK-微信支付有5.接口频率限制说明公众号调用接口并不是无限制的。为了防止公众号的程序错误而引发微信服务器负载异常,默认情况下,每个公众号调用接口都不能超过一定限制,当超过一定限制时,调用对应接口会收到如下错误返回码:{errcode:45009,errmsg:apifreqoutoflimit}各接口调用频率限制如下:接口每日限额获取access_token2000自定义菜单创建1000自定义菜单查询10000自定义菜单删除1000创建分组1000获取分组1000修改分组名1000移动用户分组100000上传多媒体文件5000下载多媒体文件10000发送客服消息