123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <?php
- namespace app\api\controller;
- use liuniu\MiniProgramService;
- use liuniu\UtilService;
- use think\Cache;
- use app\common\model\User;
- class Routine
- {
-
- protected $noNeedLogin = ['*'];
-
- public function notify()
- {
- ob_clean();
- MiniProgramService::handleNotify(input('cid',0));
- }
-
- public function mp_auth(Request $request)
- {
- $cache_key = '';
- list($code, $post_cache_key, $login_type) = UtilService::postMore([
- ['code', ''],
- ['cache_key', ''],
- ['login_type', 2]
- ], $request, true);
- $session_key = Cache::get('eb_api_code_' . $post_cache_key);
- if (!$code && !$session_key)
- $this->error('授权失败,参数有误');
- if ($code && !$session_key) {
- try {
- $userInfoCong = 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) {
- $this->error('获取session_key失败,请检查您的配置!');
- }
- }
- $data = UtilService::postMore([
- ['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('获取会话密匙失败');
- }
- if (!isset($userInfoCong['openid'])) return app('json')->fail('openid获取失败');
- if (!isset($userInfo['unionId'])) $userInfo['unionId'] = '';
- $userInfo['openId'] = $userInfoCong['openid'];
- $userInfo['spid'] = $data['spread_spid'];
- $userInfo['code'] = $data['spread_code'];
- $userInfo['session_key'] = $session_key;
- $userInfo['login_type'] = $login_type;
- $uid = User::setRoutineUser($userInfo);
- $user = User::where('uid', $uid)->find();
- $this->auth->direct($user['id']);
-
- User::setSpread(intval($data['spread_spid']), $user->id);
- return $this->success('登录成功', $this->auth->getUserinfo());
- }
- }
|