前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >crmeb 多商户系统小程序授权问题解决贴

crmeb 多商户系统小程序授权问题解决贴

原创
作者头像
PHP开发工程师
修改2021-05-10 18:14:13
修改2021-05-10 18:14:13
1.6K00
代码可运行
举报
文章被收录于专栏:thinkphp+vuethinkphp+vue
运行总次数:0
代码可运行

替换这个方法

public function mpAuth() { list($code, $post_cache_key) = $this->request->params([ ‘code’, ‘cache_key’, ], true); $session_key = Cache::get(‘eb_api_code_’ . post_cache_key); if (!postcachekey);if(!code && !$session_key) return app(‘json’)->fail(‘授权失败,参数有误’); miniProgramService = MiniProgramService::create(); if (miniProgramService=MiniProgramService::create();if(code && !$session_key) { try { $userInfoCong = miniProgramService->getUserInfo(miniProgramService−>getUserInfo(code); $session_key = $userInfoCong[‘session_key’]; $cache_key = md5(time() . $code); Cache::set(‘eb_api_code_’ . $cache_key, $session_key, 86400); } catch (Exception $e) { return app(‘json’)->fail(‘获取session_key失败,请检查您的配置!’, [‘line’ => $e->getLine(), ‘message’ => $e->getMessage()]); } }

代码语言:javascript
代码运行次数:0
运行
复制
    $data = $this->request->params([
        ['spread_spid', 0],
        ['spread_code', ''],
        ['iv', ''],
        ['encryptedData', ''],
    ]);

    try {
        //解密获取用户信息
        $userInfo = $miniProgramService->encryptor($session_key, $data['iv'], $data['encryptedData']);
    } catch (Exception $e) {
        if ($e->getCode() == '-41003') return app('json')->fail('获取会话密匙失败', ['line' => $e->getLine(), 'message' => $e->getMessage()]);
        throw $e;
    }
    if (!$userInfo) return app('json')->fail('openid获取失败');
    if (!isset($userInfo['openId'])) $userInfo['openId'] = $userInfoCong['openid'] ?? '';
    $userInfo['unionId'] = $userInfoCong['unionid'] ?? $userInfo['unionId'] ?? '';
    if (!$userInfo['openId']) return app('json')->fail('openid获取失败');

    /** @var WechatUserRepository $make */
    $make = app()->make(WechatUserRepository::class);
    $user = $make->syncRoutineUser($userInfo['openId'], $userInfo);
    if (!$user)
        return app('json')->fail('授权失败');
    /** @var UserRepository $make */
    $userRepository = app()->make(UserRepository::class);
    $user[1] = $userRepository->mainUser($user[1]);
    $code = intval($data['spread_code']['id'] ?? $data['spread_code']);
    //获取是否有扫码进小程序
    if ($code && ($info = app()->make(RoutineQrcodeRepository::class)->getRoutineQrcodeFindType($code))) {
        $data['spread_spid'] = $info['third_id'];
    }
    $userRepository->bindSpread($user[1], intval($data['spread_spid']));
    $tokenInfo = $userRepository->createToken($user[1]);
    $userRepository->loginAfter($user[1]);

    return app('json')->success($userRepository->returnToken($user[1], $tokenInfo));
}

完整实例:http://github.crmeb.net/u/defu

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档