首页 > 代码库 > 微信公众平台开发
微信公众平台开发
为了识别用户,每个用户针对每个公众号会产生一个安全的OpenID,如果需要在多公众号、移动应用之间做用户共通,则需前往微信开放平台,将这些公众号和应用绑定到一个开放平台账号下,绑定后,一个用户虽然对多个公众号和应用有多个不同的OpenID,但他对所有这些同一开放平台账号下的公众号和应用,只有一个UnionID,可以在用户管理-获取用户基本信息(UnionID机制)文档了解详情。
用户向公众号发送消息时,公众号方收到的消息发送者是一个OpenID,是使用用户微信号加密后的结果,每个用户对每个公众号有一个唯一的OpenID。
此外,由于开发者经常有需在多个平台(移动应用、网站、公众帐号)之间共通用户帐号,统一帐号体系的需求,微信开放平台(open.weixin.qq.com)提供了UnionID机制。开发者可通过OpenID来获取用户基本信息,而如果开发者拥有多个应用(移动应用、网站应用和公众帐号,公众帐号只有在被绑定到微信开放平台帐号下后,才会获取UnionID),可通过获取用户基本信息中的UnionID来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的UnionID是唯一的。换句话说,同一用户,对同一个微信开放平台帐号下的不同应用,UnionID是相同的。
公众平台以access_token为接口调用凭据,来调用接口,所有接口的调用需要先获取access_token,access_token在2小时内有效,过期需要重新获取,但1天内获取次数有限,开发者需自行存储,详见获取接口调用凭据(access_token)文档。
公众平台接口调用仅支持80端口。
1、公众号消息会话
1)群发消息:公众号可以以一定频次(订阅号为每天1次,服务号为每月4次),向用户群发消息,包括文字消息、图文消息、图片、视频、语音等。 2)被动回复消息:在用户给公众号发消息后,微信服务器会将消息发到开发者预先在开发者中心设置的服务器地址(开发者需要进行消息真实性验证),公众号可以在5秒内做出回复,可以回复一个消息,
也可以回复命令告诉微信服务器这条消息暂不回复。被动回复消息可以设置加密(在公众平台官网的开发者中心处设置,设置后,按照消息加解密文档来进行处理。其他3种消息的调用因为是API调用而不是对请求的返回,所以不需要加解密)。 3)客服消息:在用户给公众号发消息后的48小时内,公众号可以给用户发送不限数量的消息,主要用于客服场景。用户的行为会触发事件推送,某些事件推送是支持公众号据此发送客服消息的,详见微信推送消息与事件说明文档。 4)模板消息:在需要对用户发送服务通知(如刷卡提醒、服务预约成功通知等)时,公众号可以用特定内容模板,主动向用户发送消息。
2、公众号内网页
1)网页授权获取用户基本信息:通过该接口,可以获取用户的基本信息(获取用户的OpenID是无需用户同意的,获取用户的基本信息则需用户同意) 2)微信JS-SDK:是开发者在网页上通过JavaScript代码使用微信原生功能的工具包,开发者可以使用它在网页上录制和播放微信语音、监听微信分享、上传手机本地图片、拍照等许多能力。
公众号每次调用接口时,可能获得正确或错误的返回码,开发者可以根据返回码信息调试接口,排查错误。
全局返回码说明如下:
返回码 | 说明 |
---|---|
-1 | 系统繁忙,此时请开发者稍候再试 |
0 | 请求成功 |
40001 | 获取access_token时AppSecret错误,或者access_token无效。请开发者认真比对AppSecret的正确性,或查看是否正在为恰当的公众号调用接口 |
40002 | 不合法的凭证类型 |
40003 | 不合法的OpenID,请开发者确认OpenID(该用户)是否已关注公众号,或是否是其他公众号的OpenID |
40004 | 不合法的媒体文件类型 |
40005 | 不合法的文件类型 |
40006 | 不合法的文件大小 |
40007 | 不合法的媒体文件id |
40008 | 不合法的消息类型 |
40009 | 不合法的图片文件大小 |
40010 | 不合法的语音文件大小 |
40011 | 不合法的视频文件大小 |
40012 | 不合法的缩略图文件大小 |
40013 | 不合法的AppID,请开发者检查AppID的正确性,避免异常字符,注意大小写 |
40014 | 不合法的access_token,请开发者认真比对access_token的有效性(如是否过期),或查看是否正在为恰当的公众号调用接口 |
40015 | 不合法的菜单类型 |
40016 | 不合法的按钮个数 |
40017 | 不合法的按钮个数 |
40018 | 不合法的按钮名字长度 |
40019 | 不合法的按钮KEY长度 |
40020 | 不合法的按钮URL长度 |
40021 | 不合法的菜单版本号 |
40022 | 不合法的子菜单级数 |
40023 | 不合法的子菜单按钮个数 |
40024 | 不合法的子菜单按钮类型 |
40025 | 不合法的子菜单按钮名字长度 |
40026 | 不合法的子菜单按钮KEY长度 |
40027 | 不合法的子菜单按钮URL长度 |
40028 | 不合法的自定义菜单使用用户 |
40029 | 不合法的oauth_code |
40030 | 不合法的refresh_token |
40031 | 不合法的openid列表 |
40032 | 不合法的openid列表长度 |
40033 | 不合法的请求字符,不能包含\uxxxx格式的字符 |
40035 | 不合法的参数 |
40038 | 不合法的请求格式 |
40039 | 不合法的URL长度 |
40050 | 不合法的分组id |
40051 | 分组名字不合法 |
40117 | 分组名字不合法 |
40118 | media_id大小不合法 |
40119 | button类型错误 |
40120 | button类型错误 |
40121 | 不合法的media_id类型 |
40132 | 微信号不合法 |
40137 | 不支持的图片格式 |
41001 | 缺少access_token参数 |
41002 | 缺少appid参数 |
41003 | 缺少refresh_token参数 |
41004 | 缺少secret参数 |
41005 | 缺少多媒体文件数据 |
41006 | 缺少media_id参数 |
41007 | 缺少子菜单数据 |
41008 | 缺少oauth code |
41009 | 缺少openid |
42001 | access_token超时,请检查access_token的有效期,请参考基础支持-获取access_token中,对access_token的详细机制说明 |
42002 | refresh_token超时 |
42003 | oauth_code超时 |
42007 | 用户修改微信密码,accesstoken和refreshtoken失效,需要重新授权 |
43001 | 需要GET请求 |
43002 | 需要POST请求 |
43003 | 需要HTTPS请求 |
43004 | 需要接收者关注 |
43005 | 需要好友关系 |
44001 | 多媒体文件为空 |
44002 | POST的数据包为空 |
44003 | 图文消息内容为空 |
44004 | 文本消息内容为空 |
45001 | 多媒体文件大小超过限制 |
45002 | 消息内容超过限制 |
45003 | 标题字段超过限制 |
45004 | 描述字段超过限制 |
45005 | 链接字段超过限制 |
45006 | 图片链接字段超过限制 |
45007 | 语音播放时间超过限制 |
45008 | 图文消息超过限制 |
45009 | 接口调用超过限制 |
45010 | 创建菜单个数超过限制 |
45015 | 回复时间超过限制 |
45016 | 系统分组,不允许修改 |
45017 | 分组名字过长 |
45018 | 分组数量超过上限 |
45047 | 客服接口下行条数超过上限 |
46001 | 不存在媒体数据 |
46002 | 不存在的菜单版本 |
46003 | 不存在的菜单数据 |
46004 | 不存在的用户 |
47001 | 解析JSON/XML内容错误 |
48001 | api功能未授权,请确认公众号已获得该接口,可以在公众平台官网-开发者中心页中查看接口权限 |
48004 | api接口被封禁,请登录mp.weixin.qq.com查看详情 |
50001 | 用户未授权该api |
50002 | 用户受限,可能是违规后接口被封禁 |
61451 | 参数错误(invalid parameter) |
61452 | 无效客服账号(invalid kf_account) |
61453 | 客服帐号已存在(kf_account exsited) |
61454 | 客服帐号名长度超过限制(仅允许10个英文字符,不包括@及@后的公众号的微信号)(invalid kf_acount length) |
61455 | 客服帐号名包含非法字符(仅允许英文+数字)(illegal character in kf_account) |
61456 | 客服帐号个数超过限制(10个客服账号)(kf_account count exceeded) |
61457 | 无效头像文件类型(invalid file type) |
61450 | 系统错误(system error) |
61500 | 日期格式错误 |
65301 | 不存在此menuid对应的个性化菜单 |
65302 | 没有相应的用户 |
65303 | 没有默认菜单,不能创建个性化菜单 |
65304 | MatchRule信息为空 |
65305 | 个性化菜单数量受限 |
65306 | 不支持个性化菜单的帐号 |
65307 | 个性化菜单信息为空 |
65308 | 包含没有响应类型的button |
65309 | 个性化菜单开关处于关闭状态 |
65310 | 填写了省份或城市信息,国家信息不能为空 |
65311 | 填写了城市信息,省份信息不能为空 |
65312 | 不合法的国家信息 |
65313 | 不合法的省份信息 |
65314 | 不合法的城市信息 |
65316 | 该公众号的菜单设置了过多的域名外跳(最多跳转到3个域名的链接) |
65317 | 不合法的URL |
9001001 | POST数据参数不合法 |
9001002 | 远端服务不可用 |
9001003 | Ticket不合法 |
9001004 | 获取摇周边用户信息失败 |
9001005 | 获取商户信息失败 |
9001006 | 获取OpenID失败 |
9001007 | 上传文件缺失 |
9001008 | 上传素材的文件类型不合法 |
9001009 | 上传素材的文件尺寸不合法 |
9001010 | 上传失败 |
9001020 | 帐号不合法 |
9001021 | 已有设备激活率低于50%,不能新增设备 |
9001022 | 设备申请数不合法,必须为大于0的数字 |
9001023 | 已存在审核中的设备ID申请 |
9001024 | 一次查询设备ID数量不能超过50 |
9001025 | 设备ID不合法 |
9001026 | 页面ID不合法 |
9001027 | 页面参数不合法 |
9001028 | 一次删除页面ID数量不能超过10 |
9001029 | 页面已应用在设备中,请先解除应用关系再删除 |
9001030 | 一次查询页面ID数量不能超过50 |
9001031 | 时间区间不合法 |
9001032 | 保存设备与页面的绑定关系参数错误 |
9001033 | 门店ID不合法 |
9001034 | 设备备注信息过长 |
9001035 | 设备申请参数不合法 |
9001036 | 查询起始值begin不合法 |
微信公众平台开发