success(json_decode(WechatService::jsSdk($request->get('url')), true)); } /** * 公众号授权登陆 * @param Request $request * @return mixed * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ public function auth(Request $request) { $spreadId = intval($request->param('spread')); $login_type = $request->param('login_type', 1); @file_put_contents("auth.txt", json_encode(input())); try { $wechatInfo = WechatService::oauthService($this->cid)->user()->getOriginal(); } catch (\Exception $e) { $this->error(['message' => $e->getMessage(), 'line' => $e->getLine()]); } @file_put_contents("auth.txt", "\r\n" . json_encode($wechatInfo), 8); try { if (!isset($wechatInfo['nickname'])) { try { $wechatInfo = WechatService::getUserInfo($this->cid, $wechatInfo['openid']); } catch (\Exception $e) { $this->error(['message' => $e->getMessage(), 'line' => $e->getLine()]); } if (!$wechatInfo['subscribe'] && !isset($wechatInfo['nickname'])) exit(WechatService::oauthService($this->cid)->scopes(['snsapi_userinfo']) ->redirect($this->request->url(true))->send()); if (isset($wechatInfo['tagid_list'])) $wechatInfo['tagid_list'] = implode(',', $wechatInfo['tagid_list']); } else { if (isset($wechatInfo['privilege'])) unset($wechatInfo['privilege']); if (!UserRelation::where(['openid' => $wechatInfo['openid']])->find()) $wechatInfo['subscribe'] = 0; } $openid = $wechatInfo['openid']; $wechatInfo['cid'] = $this->cid; $params = [$openid, $wechatInfo, $spreadId, $login_type]; @file_put_contents("auth.txt", "\r\n" . json_encode($params), 8); Hook::exec("\\app\admin\\behavior\\User", "WechatOauth", $params); $user = User::where('id', UserRelation::openidToUid($openid, 'openid'))->find(); if (!$user) $this->error('获取用户失败'); $this->auth->direct($user['id']); // 设置推广关系 User::setSpread(intval($spreadId), $user->id); return $this->success('登录成功', $this->auth->getUserinfo()); } catch (Exception $e) { @file_put_contents("error.txt", $e->getFile() . '-', $e->getLine(), '-' . $e->getMessage()); } } // /** // * 扣款服务 // * @param Request $request // * @return mixed // * @throws \think\db\exception\DataNotFoundException // * @throws \think\db\exception\ModelNotFoundException // * @throws \think\exception\DbException // */ // public function signing(Request $request) // { // $peice = intval($request->param('peice')); // $uid = intval($request->param('uid')); // $plan_id = WechatPlan::where('price',$peice)->value('plan_id'); // $login_type = $request->param('login_type', 1); // @file_put_contents("auth.txt", json_encode(input())); // try { // //// $notify_url=Request::instance()->domain() . "/api/wechat/notify/" . $cid; //回调接口 // $app_id='wx5681205d1ef4d9d3'; // $mch_id =''; // $sub_mch_id =''; // $contract_code =$this->generateRandomString(6); // $notify_url=Request::instance()->domain() . "/api/wechat/notify/" . 12; //回调接口 $cid 企业id //// $num = time() + mt_rand(10, 999999) . '' . substr($msec, 2, 3);//生成随机数 // $request_serial=$this->generateUniqueSerialNumber(); // $contract_display_account='咸宁红十字'; // $timestamp=time(); // $version=1.0; // $array = array( // 'appid' => $app_id, // 'mch_id' => $mch_id, // 'plan_id' => $plan_id, // 'sub_mch_id' => $sub_mch_id, // 'contract_code' => $contract_code, // 'notify_url' => $notify_url, // 'contract_display_account' => $contract_display_account, // 'request_serial' => $request_serial, // 'timestamp' => $timestamp, // 'version' => $version, // // ); // $arr=ksort($array); // $sign=$this->md5_sign($arr,''); // $url=$this->OfficialAccountSigning($app_id,$mch_id,$plan_id,$sub_mch_id,$contract_code,$request_serial,$contract_display_account,$notify_url,$version,$sign,$timestamp); // return $url; // } catch (Exception $e) { // @file_put_contents("error.txt", $e->getFile() . '-', $e->getLine(), '-' . $e->getMessage()); // } // } // // public function generateRandomString($length) { // $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; // $charactersLength = strlen($characters); // $randomString = ''; // for ($i = 0; $i < $length; $i++) { // $randomString .= $characters[rand(0, $charactersLength - 1)]; // } // return $randomString; // } //// 生成唯一序列号 // public function generateUniqueSerialNumber() { // // 使用uniqid生成一个唯一ID,并去除前缀的'0' // $uniqueId = ltrim(uniqid('', true), '0'); // // // 确保生成的ID不以0开头且长度不超过19位(int64的最大长度) // while (strlen($uniqueId) > 19 || substr($uniqueId, 0, 1) === '0') { // $uniqueId = ltrim(uniqid('', true), '0'); // } // // // 将生成的ID转换为纯数字 // $serialNumber = preg_replace('/\D/', '', $uniqueId); // // // 确保生成的序列号不以0开头 // if (substr($serialNumber, 0, 1) === '0') { // $serialNumber = generateUniqueSerialNumber(); // 递归调用以重新生成 // } // // return $serialNumber; // } // // // public function curl_post($url = '', $name = array(), $timeout = 100) // { // // var_dump($url);die(); // $ch = curl_init(); // curl_setopt($ch, CURLOPT_URL, $url); // curl_setopt($ch, CURLOPT_HEADER, false); //是否显示头部 // curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//是否直接输出到屏幕 // curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); // curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查 // curl_setopt($ch, CURLOPT_POST, true); //是否以post方式 // //设置post数据 // $post_data = json_encode($name); // // curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); // curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); // $content = curl_exec($ch); // // var_dump($content);die(); // curl_close($ch); // $content = json_decode($content, true); // return $content; // // } // public function md5_sign($data, $key){ // $stringSignTemp=$data."&key=$key"; //注:key为商户平台设置的密钥key // // $sign=MD5($stringSignTemp); //MD5加密 // $sign=strtoupper($sign); //大写 // return $sign; // } // // /** // * 公众号签约 // * see:https://pay.weixin.qq.com/wiki/doc/api/wxpay_v2/papay/chapter5_1.shtml // * @param array $data // * // * @return array // * @throws AuthorizeFailedException // */ // public function OfficialAccountSigning(string $appid,string $mch_id, string $plan_id,string $sub_mch_id, string $contract_code, string $request_serial, string $contract_display_account, string $notify_url, string $version, string $sign,string $timestamp): array // { // // $url = 'https://api.mch.weixin.qq.com/papay/partner/entrustweb'; // $info = [ // 'appid' => $appid, //应用ID // 'mch_id' => $mch_id, //商户号 // 'plan_id' => $plan_id, //子商户号 // 'sub_mch_id' => $sub_mch_id, //模板id // 'contract_code' => $contract_code, //签约协议号 // 'request_serial' => $request_serial, //请求序列号 // 'contract_display_account' => $contract_display_account, //用户账户展示名称 // 'notify_url' => $notify_url, //回调通知url // 'version' => $version, //版本号 固定值1.0 // 'sign' => $sign, //签名 // 'timestamp' => $timestamp // ]; // $response = $this->curl_post($url, $info); // return $response; // } public function test() { return '123456'; } }