*/ private function initWechat() { $this->app = Factory::officialAccount(Config::get('wechat')); } /** * Notes : 获取微信授权的地址并跳转 * * @Date : 2022/9/9 11:29 * @Author : */ public function url(): string { $url = $GLOBALS['data']['data']['url']; $redirect = Route::buildUrl('wechat/code', ['callback' => $url]) ->suffix(false) ->domain(true); $this->initWechat(); return $this->app->oauth->scopes(['snsapi_userinfo'])->redirect($redirect); } /** * Notes : 微信授权回调地址,获取到用户信息后,自行保存 * * @Date : 2022/9/9 11:29 * @Author : */ public function code() { $this->initWechat(); $user = $this->app->oauth->user(); $callback = Request::get('callback'); $token = '怎样获得一个 token'; return redirect($callback.'?token='.$token); // $user 可以用的方法: // $user->getId(); // 对应微信的 OPENID // $user->getNickname(); // 对应微信的 nickname // $user->getName(); // 对应微信的 nickname // $user->getAvatar(); // 头像网址 // $user->getOriginal(); // 原始API返回的结果 // $user->getToken(); // access_token, 比如用于地址共享时使用 } /** * Notes : 显示支付的页面,支付逻辑 * * @Date : 2022/9/9 11:32 * @Author : */ public function payment() { $notifyUrl = Route::buildUrl('wechat/paid') ->suffix(false) ->domain(true); $config = Config::get('wechat.payment'); $payment = Factory::payment($config); $unify = $payment->order->unify([ 'body' => '商品订单', 'out_trade_no' => time(), 'total_fee' => 100, 'notify_url' => $notifyUrl, 'trade_type' => 'JSAPI', 'openid' => '$openid', ]); dump($unify); // $prepayId = $unify->prepay_id; // $jssdk = $payment->jssdk->bridgeConfig($prepayId); // return View::fetch('', ['jssdk' => $jssdk]); } /** * Notes : 支付完成回调 * * @Date : 2022/9/9 11:33 * @Author : */ public function paid() { } }