error('授权失败,参数有误'); if ($code && !$session_key) { try { $userInfoCong = MiniProgramService::getUserInfo($this->cid,$code); $session_key = $userInfoCong['session_key']; $cache_key = md5(time() . $code); cache('eb_api_code_'.$cache_key,$session_key, 86400); } catch (\Exception $e) { $this->error('',['message' => $e->getMessage(), 'line' => $e->getLine()]); } } $data = UtilService::postMore([ ['spread_spid', 0], ['spread_code', ''], ['iv', ''], ['encryptedData', ''], ]);//获取前台传的code try { //解密获取用户信息 $userInfo = MiniProgramService::encryptor($this->cid,$session_key, $data['iv'], $data['encryptedData']); } catch (\Exception $e) { $this->error('签名无效,重新刷新'.$e->getMessage()); } if (!isset($userInfo['unionId'])) $userInfo['unionId'] = ''; if(!isset($userInfo['openId']) && isset($userInfoCong['openid'])) $userInfo['openId'] = $userInfoCong['openid']; if(!isset($userInfo['openId'])) $this->error('获取openId失败!'); $userInfo['spid'] = $data['spread_spid']; $userInfo['code'] = $data['spread_code']; $userInfo['session_key'] = $session_key; $userInfo['login_type'] = $login_type; $userInfo['cid'] = $this->cid; User::routineOauth($userInfo); $user = User::where('id', UserRelation::openidToUid($userInfo['openId'], 'routine_openid'))->find(); if (!$user) $this->error('获取用户失败'); $this->auth->direct($user['id']); return $this->success('登录成功', $this->auth->getUserinfo()); } /** * 小程序支付回调 */ public function notify() { MiniProgramService::handleNotify(); } /** * 获取小程序订阅消息id * @return mixed */ public function teml_ids() { $temlIdsName = SubscribeTemplateService::getConstants(); $temlIdsList = CacheService::get('TEML_IDS_LIST', function () use ($temlIdsName) { $temlId = []; foreach ($temlIdsName as $key => $item) { $temlId[strtolower($key)] = SubscribeTemplateService::setTemplateId($item); } return $temlId; }); return app('json')->success($temlIdsList); } }