request->param('code/s'); $appId = $config["appId"];//appid $appSecret = $config["appSecret"];//appsecret $url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' . $appId . '&secret=' . $appSecret . '&js_code=' . $code . '&grant_type=authorization_code'; $datas = json_decode(Tool::httpRequest($url, "get"), true); //返回状态 if (isset($datas["openid"])) { return $this->json(0, "ok", $datas); } return $this->json(1, "null"); } /** * 小程序用户登录 创建用户或更新用户信息 */ public function wechatMiniLogin() { $data = []; $data['openid'] = $this->request->post('openid/s');//微信用户openid $data['headimgurl'] = $this->request->post('avatarUrl/s');//微信头像 $data['nickname'] = $this->request->post('nickName/s');//用户昵称 try { validate(Vuser::class)->check($data); } catch (ValidateException $e) { return $this->json(1, "异常请求"); } $user = User::getByOpenid($data['openid']); $time = time(); $token_close_time = $time + User::TokenCloseTime; $data["login_ip"] = $this->request->ip(); $data["last_login"] = $time; $data["token_close_time"] = $token_close_time; $data["token"] = md5($data["openid"] . $time . randomStr(1, 16)); Db::startTrans(); try { //如果没有注册过 就添加 if (!empty($user)) { User::create($data); } else { User::updateById($user['id'], $data); } //提交事务 Db::commit(); return $this->json(0, "ok", [ "token" => $data["token"], ]); } catch (Exception $e) { Db::rollback(); return $this->json(2, $e->getMessage()); } } }