platform = $this->request->header('platform', ''); if ($this->platform === '') { $this->error('参数错误'); } $this->payload = $this->request->post('payload/a', '') ?? []; $this->wechat = new WechatService($this->platform, $this->payload); } // 微信登陆(小程序+公众号+开放平台) public function login() { $result = Db::transaction(function () { return $this->wechat->login(); }); if ($result) { $this->success('登陆成功'); } $this->error('登陆失败'); } // 获取小程序sessionId+自动登录 public function getSessionId() { $result = $this->wechat->getSessionId(); $this->success('', $result); } // 获取网页授权地址 public function oauthLogin() { $result = $this->wechat->oauthLogin(); if (isset($result['login_url'])) { $this->success('', $result); } if (isset($result['redirect_url'])) { return redirect($result['redirect_url']); } } // 绑定用户手机号 public function bindUserPhoneNumber() { $result = Db::transaction(function () { $user = auth_user(); $mobile = $this->wechat->getUserPhoneNumber(); $this->validate(['mobile' => $mobile], '.bindWechatMiniProgramMobile'); $user->mobile = $mobile; $verification = $user->verification; $verification->mobile = 1; $user->verification = $verification; return $user->save(); }); if ($result) { $this->success('绑定成功'); } $this->error('操作失败'); } // 绑定微信账号 public function bind() { $result = Db::transaction(function () { $user = auth_user(); return $this->wechat->bind($user); }); if ($result) { $this->success('绑定成功'); } $this->error('绑定失败'); } // 解绑微信账号 public function unbind() { $result = Db::transaction(function () { return $this->wechat->unbind(); }); if ($result) { $this->success('解绑成功'); } $this->error('解绑失败'); } // 微信网页jssdk public function jssdk() { $apis = [ 'checkJsApi', 'updateTimelineShareData', 'updateAppMessageShareData', 'getLocation', //获取位置 'openLocation', //打开位置 'scanQRCode', //扫一扫接口 'chooseWXPay', //微信支付 'chooseImage', //拍照或从手机相册中选图接口 'previewImage', //预览图片接口 'uploadImage', //上传图片 'openAddress', // 获取微信地址 'requestMerchantTransfer', // 微信商家转账 ]; // $openTagList = [ // 'wx-open-subscribe' // ]; try { $data = $this->wechat->jssdk($apis); } catch (HttpResponseException $e) { $data = $e->getResponse()->getData(); $message = $data ? ($data['msg'] ?? '') : $e->getMessage(); $this->error($message); } catch (\Exception $e) { $this->error($e->getMessage()); } $this->success('jssdkApi', $data); } /** * 微信小程序码接口 */ public function wxacode() { $mp = $this->wechat->getApp(); $path = $this->payload['path']; list($page, $scene) = explode('?', $path); $content = $mp->app_code->getUnlimit($scene, [ 'page' => substr($page, 1), 'is_hyaline' => true, // 'env_version' => 'develop' 'env_version' => 'release' ]); if ($content instanceof \EasyWeChat\Kernel\Http\StreamResponse) { return response($content->getBody(), 200, ['Content-Length' => strlen($content->getBodyContents())])->contentType('image/png'); } else { // 小程序码获取失败 $msg = $content['errcode'] ?? '-'; $msg .= $content['errmsg'] ?? ''; $this->error($msg); } } }