| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 | <?phpnamespace app\api\controller\h5;use app\hander\HelpHander;use think\Controller;use think\Db;use think\Exception;class Oauth extends Controller{    public function checkCode(){        try{            $type = input('type/d',1); //1=微信公众号 2=微信小城序 3=陪护小程序            $code = input('code','','trim');            $openid = "";            $avatar = "";            $nickname = "";            if($type == 1){                $config = config('app.wx_config');                $app = \EasyWeChat\Factory::officialAccount($config);                $user = $app->oauth->user();                $openid = $user->id;                $avatar = $user->avatar;                $nickname = $user->nickname;            }else if($type == 2){                $config = config('app.wx_mini_config');                $app = \EasyWeChat\Factory::miniProgram($config);                $ret = $app->auth->session($code);                if(!isset($ret['openid']) || !$ret['openid']){                    throw new Exception('登录失败');                }                $openid = $ret['openid'];            }else if($type == 3){                $config = config('app.wx_mini_config_ph');                $app = \EasyWeChat\Factory::miniProgram($config);                $ret = $app->auth->session($code);                if(!isset($ret['openid']) || !$ret['openid']){                    throw new Exception('登录失败');                }                $openid = $ret['openid'];            }            if(!$openid){                \exception('参数错误');            }            $info = Db::name('wxuser')->where('type',$type)->where('openid',$openid)->find();            if($info){                $token = create_token($info['id']);                $userId = $info['id'];                if($info['del'] != 0||$info['enable'] != 1){                    \exception('用户被禁用,请联系管理员');                }                $ret = Db::name('wxuser')->where('id',$info['id'])->update([                    'nickname' => $nickname,                    'token' => $token,                    'img' => $avatar,                    'update_time' => date('Y-m-d H:i:s')                ]);                if(!$ret){                    \exception('登录失败');                }            }else{                $ret = Db::name('wxuser')->insertGetId([                    'openid' => $openid,                    'nickname' => $nickname,                    'img' => $avatar,                    'type' => $type,                    'create_time' => date('Y-m-d H:i:s'),                    'update_time' => date('Y-m-d H:i:s')                ]);                if(!$ret){                    \exception('注册失败');                }                $userId = $ret;                $token = create_token($userId);                $ret = Db::name('wxuser')->where('id',$userId)->update([                    'token' => $token,                ]);                if(!$ret){                    \exception('登录失败');                }            }        }catch (Exception $e){            trace('微信登录:'.$e->getMessage());            HelpHander::error('登录失败');        }        HelpHander::success(['token'=>$token,'user_id' => $userId]);    }    // 获取jssdk参数    public function jssdk(){        try{            $url = input('url');            $config = config('app.wx_config');            $app = \EasyWeChat\Factory::officialAccount($config);            $apis = ['checkJsApi','chooseWXPay','hideOptionMenu'];            $app->jssdk->setUrl(urldecode($url));            $ret = $app->jssdk->buildConfig($apis, false, false, false);            trace($ret);        }catch (\Exception $e){            trace('获取分享参数:'.$e->getMessage());            HelpHander::error('获取jssdk配置失败');        }        HelpHander::success($ret);    }}
 |