技术饭
微信第三方平台全网发布返回Api、普通文本信息失败解决方案
这几天在做微信开放平台的第三方平台对接工作,本来申请的时候就云里雾里的,测试了好几个号才正式的把一些配置弄好,等待程序开发完成之后需要配置授权测试的公众号进行全网发布,当提交发布时,提示等待5分钟后,报错的结果就是返回Api、普通文本信息失败,这时候看下文档才知道,全网发布是需要验证的。
客服消息文档:https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Service_Center_messages.html#7
在微信开放社区也看到很多人吐槽这第三方平台开放,实在太烂了。
首先,在全网发布前,请做好授权、事件接收等工作,提交发布监测结果:
查看了文档,发现自己的代码并没有检测返回Api、普通文本信息,然后根据文档加了检测代码,可是提交了好几遍还是报各种错误
错误一:只有一个感叹号(图是别人的)
错误二:授权错误
错误三:提示资源不足,请等待
真的是感到心累了。。。
解决代码就是在 消息与事件接收URL 的代码里加入检测代码:
public function eventmsg() {
//获取参数
$params = $this->request->param();
if(!isset($params['appid']) || empty($params['appid'])){
exit();
}
//实例化第三方平台类
$Thirdplatform = new \wechat\Thirdplatform($this->prefix);
//消息解密
$data = $Thirdplatform->decryptMsg();
//处理消息事件
if(!empty($data)){
//第三方平台全网审核发布模拟测试普通消息
if($data['Content'] == 'TESTCOMPONENT_MSG_TYPE_TEXT'){
$Thirdplatform->response('TESTCOMPONENT_MSG_TYPE_TEXT_callback', $data);
}
//第三方平台全网审核发布模拟测试Api消息
if(preg_match('/QUERY_AUTH_CODE:/', $data['Content'])){
//获得模拟的auth_code
$query_auth_code = str_replace("QUERY_AUTH_CODE:", "", $data['Content']);
//通过code获取授权信息
$auth_code_info = $Thirdplatform->get_query_auth($query_auth_code);
//发送客服消息
$data['query_auth_code'] = $query_auth_code;
$res = $Thirdplatform->custom_send($auth_code_info['authorizer_access_token'], $data);
exit();
}
}
其中:get_query_auth、custom_send根据文档去获取就可以了
最终检测了喝多次才成功,也真的心累啊~~~
参考资料:https://blog.csdn.net/weixin_43652106/article/details/102836176
文明上网理性发言!