回调模式 公众号token验证失败TOKEN失败

13791人阅读
php+mysql系列文摘(124)
微信公众平台企业号验证接口、回调 PHP版,本人为了解决这个企业号的验证和发送消息的问题,整整研究了几天时间,因为微信企业号刚推出来,网上资料太少了!后来在一些朋友的帮助下和本人反复调试完善下,终于整理得到了比较理想的文档,经亲测,实验成功。
include_once &WXBizMsgCrypt.php&;
// 第三方发送消息给公众平台
$encodingAesKey = &rpJmhCphnndiCLIcNKcUmhTn2GQBNjISPU9GfsfOlxx&;
$token = &xxxxxxx&;
$corpId =&wxa9af9x&; //这里已正确填写自己的corpid
//公众号服务器数据
$sReqMsgSig = $sVerifyMsgSig = $_GET['msg_signature'];
$sReqTimeStamp = $sVerifyTimeStamp = $_GET['timestamp'];
$sReqNonce = $sVerifyNonce = $_GET['nonce'];
$sReqData = file_get_contents(&php://input&);;
$sVerifyEchoStr = $_GET['echostr'];
$wxcpt = new WXBizMsgCrypt($token, $encodingAesKey, $corpId);
if($sVerifyEchoStr){
$sEchoStr = &&;
$errCode = $wxcpt-&VerifyURL($sVerifyMsgSig, $sVerifyTimeStamp, $sVerifyNonce, $sVerifyEchoStr, $sEchoStr);
if ($errCode == 0) {
print($sEchoStr);
print($errCode . &\n\n&);
$sMsg = &&;
//解析之后的明文
$errCode = $wxcpt-&DecryptMsg($sReqMsgSig, $sReqTimeStamp, $sReqNonce, $sReqData, $sMsg);
if ($errCode == 0) {
$xml = new DOMDocument();
$xml-&loadXML($sMsg);
$reqToUserName = $xml-&getElementsByTagName('ToUserName')-&item(0)-&nodeV
$reqFromUserName = $xml-&getElementsByTagName('FromUserName')-&item(0)-&nodeV
$reqCreateTime = $xml-&getElementsByTagName('CreateTime')-&item(0)-&nodeV
$reqMsgType = $xml-&getElementsByTagName('MsgType')-&item(0)-&nodeV
$reqContent = $xml-&getElementsByTagName('Content')-&item(0)-&nodeV
$reqMsgId = $xml-&getElementsByTagName('MsgId')-&item(0)-&nodeV
$reqAgentID = $xml-&getElementsByTagName('AgentID')-&item(0)-&nodeV
switch($reqContent){
case &马云&:
$mycontent=&您好,马云!我知道您创建了阿里巴巴!&;
case &马化腾&:
$mycontent=&您好,马化腾!我知道创建了企鹅帝国!&;
case &史玉柱&:
$mycontent=&您好,史玉柱!我知道您创建了巨人网络!&;
$mycontent=&你是谁啊?!一边凉快去!&;
$sRespData =
&ToUserName&&![CDATA[&.$reqFromUserName.&]]&&/ToUserName&
&FromUserName&&![CDATA[&.$corpId.&]]&&/FromUserName&
&CreateTime&&.sReqTimeStamp.&&/CreateTime&
&MsgType&&![CDATA[text]]&&/MsgType&
&Content&&![CDATA[&.$mycontent.&]]&&/Content&
$sEncryptMsg = &&; //xml格式的密文
$errCode = $wxcpt-&EncryptMsg($sRespData, $sReqTimeStamp, $sReqNonce, $sEncryptMsg);
if ($errCode == 0) {
//file_put_contents('smg_response.txt', $sEncryptMsg); //debug:查看smg
print($sEncryptMsg);
print($errCode . &\n\n&);
print($errCode . &\n\n&);
WXBizMsgCrypt.php 文件请点击下面地址下载 :
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:638958次
积分:8236
积分:8236
排名:第1213名
原创:237篇
转载:48篇
评论:95条
(4)(2)(2)(1)(9)(1)(1)(4)(3)(1)(1)(1)(3)(4)(1)(5)(2)(5)(3)(9)(3)(2)(5)(4)(3)(9)(2)(6)(2)(6)(3)(9)(8)(2)(3)(5)(5)(2)(26)(4)(1)(6)(9)(13)(6)(11)(13)(20)(22)(10)(3)微信企业号回调模式php(demo) - 下载频道
- CSDN.NET
&&&&微信企业号回调模式php(demo)
微信企业号回调模式php(demo)
在回调模式下,企业不仅可以主动调用企业号接口,还可以接收用户的消息或事件。当你开启应用的回调模式时,企业号会要求你填写应用的URL、Token、EncodingAESKey三个参数。
此源码为自用已验证源码。供参考。
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
移动开发下载排行公共返回码说明
缺少参数response_type或response_type非法。
缺少参数client_id。
缺少参数client_secret。
http head中缺少Authorization。
缺少参数grant_type或grant_type非法。
缺少参数code。
缺少refresh token。
缺少access token。
该appid不存在。
client_secret(即appkey)非法。
回调地址不合法,常见原因请见:
APP不处于上线状态。
HTTP请求非post方式。
access token非法。
access token过期。 token过期时间为3个月。如果存储的access token过期,请重新走登录流程,根据或获取新的access token值。
access token废除。 token被回收,或者被用户删除。请重新走登录流程,根据或获取新的access token值。
access token验证失败。
获取appid失败。
获取code值失败。
用code换取access token值失败。
code被重复使用。
获取access token值失败。
获取refresh token值失败。
获取app具有的权限列表失败。
获取某OpenID对某appid的权限列表失败。
获取全量api信息、全量分组信息。
设置用户对某app授权api列表失败。
设置用户对某app授权时间失败。
缺少参数which。
错误的http请求。
用户没有对该api进行授权,或用户在腾讯侧删除了该api的权限。请用户重新走登录、授权流程,对该api进行授权。
第三方应用没有对该api操作的权限。请发送邮件进行。
请求参数格式错误,具体参见返回信息中的msg字段。
拉取code失败。
client_id非法。
系统内部错误。 请通过联系QQ登录支持人员,调查问题原因并获得解决方案。
系统内部错误。 请通过联系QQ登录支持人员,调查问题原因并获得解决方案。
client_id暂停使用。
app信息获取失败。
获取API授权信息失败。
执行API授权失败。
参数redirect_uri无法解析出主域名。
参数redirect_uri与注册域名不是同一个网站。
请求参数格式错误,具体参见返回信息中的msg字段。
换取access token失败。
app secret长度非法。
非法的app secret。
非法的code。
code已过期。
code已经被用过。
client_id非法。
系统内部错误。 请通过联系QQ登录支持人员,调查问题原因并获得解决方案。
系统内部错误。 请通过联系QQ登录支持人员,调查问题原因并获得解决方案。
client_id暂停使用。
app信息获取失败。
参数redirect_uri无法解析出主域名。
参数redirect_uri与注册域名不是同一个网站。
请求参数格式错误,具体参见返回信息中的msg字段。
系统内部错误。 请通过联系QQ登录支持人员,调查问题原因并获得解决方案。
client_id非法。
系统内部错误。 请通过联系QQ登录支持人员,调查问题原因并获得解决方案。
系统内部错误。 请通过联系QQ登录支持人员,调查问题原因并获得解决方案。
client_id暂停使用。
app信息获取失败。
获取API授权信息失败。
执行API授权失败。
参数redirect_uri无法解析出主域名。
参数redirect_uri与注册域名不是同一个网站。
请求参数格式错误,具体参见返回信息中的msg字段。
access token无效。
access token已过期。
access token已废除。
access token非法。
系统内部错误。 请通过联系QQ登录支持人员,调查问题原因并获得解决方案。
系统内部错误。 请通过联系QQ登录支持人员,调查问题原因并获得解决方案。
特别声明: 由于OAuth 1.0协议体系本身存在一些问题,现已被各大开发平台逐渐废弃。现推荐各开发者将接口升级到OAuth 2.0,以保证更安全,高效的访问。 QQ互联开放平台新增API都只提供OAuth2.0的版本,建议开发者进行升级以享受更多的功能。 详细信息请参考《》
网站url格式不正确(网站url长度不能超过256,网站url只能有二级目录)
服务器连接超时。
网站的mete信息和QQ提供的验证信息不一致。
网站不能使用IP地址和端口号。新版微信企业号开发,回调模式echosstr校验错误!
[问题点数:20分]
新版微信企业号开发,回调模式echosstr校验错误!
[问题点数:20分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。淘宝开放平台 - 文档中心

TOP平台授权改造中的无线买家应用登录改造已完成,建议切换到oauth2.0登录授权,详见:////doc/detail.htm?id=923。
目前TOP平台上介绍的通过回调地址获取用户sessionkey的方式不适合无线买家应用,无线买家应用登录需调用以下接口:
com.taobao.wireless.mtop.getLoginUrl
获取登录URL的API:本API会返回用户登录的url地址,以及session索取凭证。
com.taobao.client.mtop.getUserSessionKey
获取sessionkey的API:本API用于获取无线会话的sessionkey和token。这个API必须在前一个API的基础上使用。
com.taobao.client.sys.autologin
自动登录API:本API用于客户端应用,客户端可以定期自动更新token,当session超时(sid失效)的时候,客户端可以通过token自动登录,无需用户再次输入用户名和密码。
登录接口调用流程
callbackUrl)
1.& 用户在手机上使用第三方APP;
2.& 第三方APP首先检查该用户是否曾经登录过淘宝(若用户登录过淘宝,则APP中应保存调用getUserSessionKey接口返回的token参数),即是否存在token信息;
3.& 若APP中无token信息(若存在token信息,请可参考),则调用getLoginUrl接口获取用户登录淘宝的WAP地址。
4.& 淘宝服务器根据APP接口调用返回WAP登录地址URL;
5.& APP启动浏览器访问该WAP地址(建议APP使用内嵌浏览器方式访问该地址);
6.& 用户在淘宝登录页输入用户名和密码,对APP进行授权操作;
7.& 淘宝返回登录成功信息(APP若使用内嵌浏览器,可以根据登录成功页面的信息进行判断,发现包含成功提示的话,自动关闭该内嵌浏览器);
8.& APP调用getUserSessionkey接口,来获取topsession(用于访问TOP API中需要授权的接口)、sid(即wap session使用内嵌浏览器访问商品交易页面时需要携带此参数来标识用户已登陆)和token;
9.& 淘宝服务器返回接口信息;
callbackUrl)
1.& 用户在手机上使用第三方APP;
2.& 第三方APP首先检查该用户是否曾经登录过淘宝(若用户登录过淘宝,则APP中应保存调用getUserSessionKey接口返回的token参数),即是否存在token信息;
3.& 若APP中无token信息(若存在token信息,请可参考),则调用getLoginUrl接口(需要带callbackUrl参数,淘宝将会在用户登陆验证成功后重定向浏览器访问该回调地址)获取用户登录淘宝的WAP地址。
4.& 淘宝服务器根据APP接口调用返回WAP登录地址URL;
5.& APP启动浏览器访问该WAP地址(建议APP使用内嵌浏览器方式访问该地址);
6.& 用户在淘宝登录页输入用户名和密码,对APP进行授权操作;
7.& 若授权成功,则淘宝服务器将重定向浏览器访问callbackUrl地址;
8.& 用户在callbackUrl地址页面上进行操作;
9.& APP调用getUserSessionkey接口,来获取topsession(用于访问TOP API中需要授权的接口)、sid(即wap session,使用内嵌浏览器访问商品交易页面时需要携带此参数来标识用户已登陆)和token;
10. 淘宝服务器返回接口信息;
1.& 用户在手机上使用第三方APP;
2.& 第三方APP首先检查该用户是否曾经登录过淘宝(若用户登录过淘宝,则APP中应保存调用getUserSessionKey接口返回的token参数),即是否存在token信息;
3.& 若APP中已有token信息,则访问TOP API时可以继续使用原来已经保存的topsession。
4.& APP使用内嵌浏览器访问商品交易页面时URL上需要携带参数sid来标识用户已登陆;
5.& 若APP发现topsession或sid失效,则调用autologin接口获取topsession、sid等信息。
6.& 淘宝服务器返回接口信息;
无线API调用体系
调用体系介绍
无线API是一个标准的json装箱设计,它具有一个统一的调用格式。
格式如下:
={}&sign=xxxxxx&t=xxxx&ttid
版本,对于有的api同样的api名字有不同版本我们会使用版本号来区分,不区分版本的api使用默认值:* 来填充
手机的imei
手机的imsi
top的appkey
以json来描述的数据字段如:{“a”:”av”,”b”:”bv”} 简单期间如果一个key传入多值,采用逗号分割,如: {“as”:”a1,a2,a3”}
请求的时间戳以秒计算,正常情况下api的t允许有15分钟误差。t以&00:00:00为基准,取秒数
参数签名,使用GBK编码,分两种:1未登录公式(接口:getLoginUrl/getUserSessionKey):md5(appSecret+api+v+imei+imsi+md5(data)+t)如果涉及到编码请使用gbk编码进行加签2 已登录公式(接口autologin):md5(ecode+appSecret+api+v+imei+imsi+md5(data)+t) 其中的ecode是登录后登录接口返回的
ttid是无线的调用用户标识
注:在下面介绍中所说的“业务参数”就是指data中以json组织的数据项
返回格式是一种标准装箱格式,如下:
{&api&:&xxx&,&v&:&*&,&ret&:[&xxx&],&data&:{}}
所调用的API名称
调用api版本
返回调用状态,它是一种特殊的keyvalue形式,一般如下& recCode::状态描述,实际案例:SUCCESS::接 口调用成功
同样是一个json返回的数据结构,如:{“a”:”av”,”b”:”bv”}
在下面的API描述中同样只描述data字段中的内容
Service:com.taobao.wireless.mtop.getLoginUrl
认证过程第一步调用的API,用于获取用户登录URL地址和“Session索取凭据”。
接口调用:
http://api./rest/api2.do?api=com.taobao.wireless.mtop.getLoginUrl
& 输入参数说明
com.taobao.wireless.mtop.getLoginUrl
com.taobao.wireless.mtop.getLoginUrl
填写固定值*
业务参数 json格式,具体的业务参数见下行详细纪录
“appkey”:””
callbackUrl
&第三方指定的回调地址请注意:参数大小写敏感
可空,用户访问获取到的登录URL进行认证和绑定后,淘宝服务器会跳转到回调地址带上并带上一些相关参数:callbackUrl+nick(淘宝用户)+timestamp(当前系统时间(秒))+sign(md5(appSecret+md5(nick)+timestamp))例如:假设回调地址为:例如用户授权完成以后淘宝服务器根据该回调地址跳转到第三方服务器:&&
输出参数说明
key是标识当前登录用户的唯一标识,是后面取得用户session时的必要条件
用户登录用的网页url,直接请求到浏览器让用户访问完成登录和绑定过程
请求URL样例
不带callbackUrl:
http://api./rest/api2.do?api=com.taobao.wireless.mtop.getLoginUrl&v=*&imei=.&imsi=2016267j&appkey=&ttid=57918@wxyy_android_2_2&t=&sign=f53de4ecffb7cf331bb598a796ee8d2f&data={&appkey&:&&}
带callbackUrl:
http://api./rest/api2.do?api=com.taobao.wireless.mtop.getLoginUrl&v=*&imei=.&imsi=2016267j&appkey=&ttid=57918@wxyy_android_2_2&t=&sign=f53de4ecffb7cf331bb598a796ee8d2f&data={&appkey&:&&,&callbackUrl&:&&}
& 返回结果样例
{&api&:&com.taobao.wireless.mtop.getLoginUrl&,&v&:&*&,&ret&:[&SUCCESS::接口调用成功&],&data&:{&key&:&e0-46d3-8be5-dee&,&url&:&/mtop/bindApp.htm?token=e0-46d3-8be5-dee&}}
{&api&:&com.taobao.wireless.mtop.getLoginUrl&,&v&:&*&,&ret&:[&NOTFOUND_APPKEY::没有找到该应用&],&data&:{}}
获取会话接口
Service:com.taobao.client.mtop.getUserSessionKey
认证过程第二步调用的API,用于获取wap session, top session和token。
此api是在前面api调用后执行,建议三种执行模式:
1、轮询模式:由于不知道用户的操作过程,因此可以采用轮询,10s一次请求api
2、用户主动操作:在界面上提供客户端验证的按钮,让用户主动点击来获得top的sessionKey
3、第三方服务器验证:当第三方提供callbackUrl参数访问getLoginUrl接口后,淘宝认证服务器会在用户绑定成功后跳转到该回调地址,第三方可以在服务器端对该信息进行验证,成功后调用本接口获取会话信息。
http://api./rest/api2.do?api=com.taobao.client.mtop.getUserSessionKey
输入参数说明
com.taobao.client.mtop.getUserSessionKey
com.taobao.client.mtop.getUserSessionKey
之前getLoginUrl得到的token
本地请求绑定的appKey这个appkey会同步校验,用户的绑定值
& 输出参数说明
topSession
topSession
top平台使用的session值
安全字符串
是之前提到的在mtop上加签需要使用登录信息(需要sid)时必须加入前面的参数
无线sessionid
无线sessionid用户在无线使用的用户会话标识
自动登录串
调用自动登录api所需要的串
登录时间,时间戳,以秒为单位
请求URL样例
http://api./rest/api2.do?api=com.taobao.client.mtop.getUserSessionKey&v=*&imei=.&imsi=2016267j&appkey=&ttid=57918@wxyy_android_2_2&t=&sign=307f9b21bd&data={&key&:&e0-46d3-8be5-dee&,&appkey&:&&}
返回结果样例
如果找到数据返回
{&api&:&com.taobao.client.mtop.getUserSessionKey&,&v&:&*&,&ret&:[&SUCCESS::调用成功&],&data&:{&topsession&:&b82VMjXDTA594f377dab5bdc9b&,&sid&:&a64c044e9e438dad60bfec3bbb4b209e&,&time&:&&,&ecode&:&ztVjh&,&nick&:&ranson_zop&,&token&:&b4c35da14a5b6d749e5bade8abaedf6bd23a77c78d4d7ac4ebd50bba460d4887477ebe6d75737ff48efa4c230d3a5b967c356b6d5bcde51c685bd7ab24f415ffd5ac2a9b1c04a7cf2a674eeae13aba&}}
如果没找到 信息返回
{&api&:&com.taobao.client.mtop.getUserSessionKey&,&v&:&*&,&ret&:[&NOT_FOUND_USER::没有找到该Token绑定的用户信息&],&data&:{}}
自动登录接口
Service:com.taobao.client.sys.autologin
用户登录之后 获取到token ,当sid失效时可以用来自动登录,无需输入用户名密码,可直接登录
http://api./rest/api2.do?api=com.taobao.client.sys.autologin
输入参数说明
com.taobao.client.sys.autologin
com.taobao.client.sys.autologin
自动登录串
登录接口返回的自动登录串
top的appKey
top的加密串
md5(appKey+md5(appSecret)+nick+t),所有字段都是GBK编码
输出参数说明
topSession
topSession
top平台使用的session值
安全字符串
是之前提到的在mtop上加签需要使用登录信息(需要sid)时必须加入前面的参数
无线sessionid
无线sessionid用户在无线使用的用户会话标识
登录时间,时间戳,以秒为单位
请求URL样例
http://api./rest/api2.do?api=com.taobao.client.sys.autologin&v=*&imei=.&imsi=2016267j&appkey=&ttid=57918@wxyy_android_2_2&t=&sign=bf1df6b1effcc67c381a024d550151be&data={&token&:&b4c35da14a5b6d749e5bade8abaedf6bd23a77c78d4d7ac4ebd50bba460d4887477ebe6d75737ff48efa4c230d3a5b967c356b6d5bcde51c685bd7ab24f415ffd5ac2a9b1c04a7cf2a674eeae13aba&,&appKey&:&&,&topToken&:&fcb04e671c166b18ad4aa6&}
返回结果样例
{&api&:&com.taobao.client.sys.autologin&,&v&:&*&,&ret&:[&SUCCESS::调用成功&],&data&:{&sid&:&a64c044e9e438dad60bfec3bbb4b209e&,&ecode&:&uLRvv&,&nick&:&ranson_zop&,&logintime&:&&,&userId&:&&,&topSession&:&ba65dd99377dab5bdc9b666128pLHYVsb16581&}}
{&api&:&com.taobao.client.sys.autologin&,&v&:&*&,&ret&:[&INVALID_TOKEN::非法的自动登录token&],&data&:{}}
关于此文档暂时还没有FAQ}

我要回帖

更多关于 微信token验证失败 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信