根据微信企业号开发平台中提供的信息查询得知,-40005是corpid 校验错误,也就是说suiteid较验错误。
而比较奇怪的是在Samplephp在未修改任何参数情况下没有任何错误返回值,能够正确的解密数据,但只要一换成suite_ticket推送的4个值和3个套件参数就出现了错误代码。
这个问题困扰我已经四天了,几天里也经过了反复的调试和查找相关解决方法,结果如下:
1、POST过来的值肯定没有获取和输入性错误
$sReqMsgSig、$sReqTimeStamp、$sReqNonce是通过$_GET得到的,$sReqData数据是通过$GLOBALS["HTTP_RAW_POST_DATA"]方法得到的,通过复制粘贴的方式修改的Samplephp文件。另外为了保证该数据的准确性,在服务器端还通过抓包工具将微信POST的数据包进行了抓取,将内容与之对比,没有差异。
2、引用的文件位置没有问题
3、php环境中的mcrypt扩展已经开启
4、微信企业号开发文件中提到的corpid已经替换成了suiteid,并且sPostData数据结构明显是加密的,并不是明文,是需要进行解密后再使用的。
5、设置断点,比较差异
提示的-40005错误通过在解密过程中设置断点,并且与最初能够正确解密的Samplephp文件进行了结果对比,发现在pkcs7Encoderphp的112和120行出现了差异,造成了最后比较corpid时出现了不匹配。
经过几天的折腾,发现只要使用推送的第三方suite_ticket协议中的各项参数,在解密的时候就出现-40005错误,而例子文件和其他关注事件的推送信息,通过同样的方法就可以正常解密。只要将参数修改成应用套件的,就出错。
不知道您能不能看懂,如果您有兴趣可以私聊我,我这里有截图,有的截图弄不上去。
谢谢 。 来自畅移,您的贴心伴侣
1、相互认可且紧密的关系,企业号连接相互信任的关系,组织与成员之间、成员与成员之间相互信任,允许双向频繁的信息沟通及协作。
2、互联网化连接器,企业已进入互联网化时代,企业号可以方便地连接员工、上下游、 最终用户与社会共享资源,帮助企业实现互联网化。
3、有限的关注,无限的信息,微信企业号与公众号最主要的区别是,只有限定范围内的用户才可以关注对应的企业号,使用企业号发送的信息数量几乎不受限制。
4、广泛并有效的连接,微信企业号能帮助企业、政府机关、学校、医院等事业单位和非政府组织建立与员工、上下游供应链及内部IT系统间的连接,并能有效地简化管理流程、提高信息的沟通和协同效率、提升对一线员工的服务及管理能力。
5、开放且有利的平台,基于于微信的数亿活跃用户及充分开放的接口,第三方开发者可以为不同企业客户,提供多样且个性化的产品和服务,并能有效提升开发、部署效率、确保应用活跃度。不断增长的企业客户,将持续提升开发者价值。
6、让信息传递随时随地,微信全平台客户端的覆盖和方便灵活的企业号后台管理及连接能力,使得员工无论是在办公室还是奔波于一线,企业信息的传递在时间和空间上将不再有任何的阻碍。