由于客户不需要做微信授权登录,只需要简单的手机号码注册登录就行了,但是在微信手机端里面一打开还是提示说
公众号配置出错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,微信分享、支付等功能自动恢复正常。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐