屏蔽掉 公众号配置出错Request access_token fail: {“errcode“:41002 提示
摘要:系统在微信手机端打开时出现公众号配置错误提示(errcode:41002),但实际上只需手机号登录功能。为解决该问题,修改了WechatLogic.php文件中的jsConfig方法,当检测到未配置app_id时静默返回空数组,避免前端报错弹窗影响用户体验。核心修改包括:1) 空app_id检查直接返回;2) 捕获异常时静默处理;3) 移除不必要的JSAPI权限配置。这既解决了错误提示问题,
由于客户不需要做微信授权登录,只需要简单的手机号码注册登录就行了,但是在微信手机端里面一打开还是提示说
公众号配置出错Request access_token fail: {“errcode”:41002,“errmsg”:“appid missing rid:6a1f91dc-4743abb7-1658b95c”}
让人看着这揪心,还以为商城系统运行出错导致的,
现在只好修改代码让它,屏蔽
文件路径在 \server\app\api\logic\WechatLogic.php
/**
* 获取微信配置
* @param $url
* @return array|string
* @throws \EasyWeChat\Kernel\Exceptions\InvalidConfigException
* @throws \EasyWeChat\Kernel\Exceptions\RuntimeException
* @throws \Psr\SimpleCache\InvalidArgumentException
*/
public static function jsConfig($url)
{
$config = WeChatServer::getOaConfig();
// 公众号未配置 app_id 时静默返回,不弹错误提示
if (empty($config['app_id'])) {
return data_success('', []);
}
$app = Factory::officialAccount($config);
$url = urldecode($url);
$app->jssdk->setUrl($url);
$apis = [
'onMenuShareTimeline',
'onMenuShareAppMessage',
'onMenuShareQQ',
'onMenuShareWeibo',
'onMenuShareQZone',
'openLocation',
'getLocation',
'chooseWXPay',
'updateAppMessageShareData',
'updateTimelineShareData',
'openAddress',
'requestMerchantTransfer'
];
try {
$data = $app->jssdk->getConfigArray($apis, $debug = false, $beta = false);
return data_success('', $data);
} catch (Exception $e) {
// 静默返回,避免前端弹窗影响用户体验
return data_success('', []);
}
}
在 WechatLogic.php 的 jsConfig() 方法中做了两处改动:
入口拦截:在创建 EasyWeChat 实例之前,先检查 app_id 是否为空,为空直接返回成功(空数据),根本不会去请求微信 API。
异常兜底:catch 中原来返回 data_error()(会弹错误 toast),改为返回 data_success()(静默通过)。
这样公众号没配好时,页面正常使用,不会弹任何错误提示。等以后配好了公众号 app_id,微信分享、支付等功能自动恢复正常。
更多推荐

所有评论(0)