thinkphp後臺獲取微信小程式使用者資訊
阿新 • • 發佈:2019-01-04
public function sendCode(){ $APPID = '################APPID'; $AppSecret = '#################'; $code = input('get.code'); $url = 'https://api.weixin.qq.com/sns/jscode2session?appid='.$APPID.'&secret='.$AppSecret.'&js_code='.$code.'&grant_type=authorization_code'; $arr = $this -> vegt($url); $arr = json_decode($arr,true); // $openid = $arr['openid']; $session_key = $arr['session_key']; // 數字簽名校驗 $signature = input('get.signature'); $signature2 = sha1($_GET['rawData'].$session_key); if($signature != $signature2){ echo "數字簽名失敗"; die; } // 獲取資訊,對介面進行解密 Vendor("PHP.wxBizDataCrypt"); $encryptedData = $_GET['encryptedData']; $iv = $_GET['iv']; if(empty($signature) || empty($encryptedData) || empty($iv)){ echo "傳遞資訊不全"; } include_once "PHP/wxBizDataCrypt.php"; $pc = new \WXBizDataCrypt($APPID,$session_key); $errCode = $pc->decryptData($encryptedData,$iv,$data); if($errCode != 0){ echo "解密資料失敗"; die; }else { $data = json_decode($data,true); session('myinfo',$data); $save['openid'] = $data['openId']; $save['uname'] = $data['nickName']; $save['unex'] = $data['gender']; $save['address'] = $data['city']; $save['time'] = time(); $map['openid'] = $data['openId']; !empty($data['unionId']) && $save['unionId'] = $data['unionId']; $res = \think\Db::name('user') -> where($map) -> find(); if(!$res){ $db = \think\Db::name('user') -> insert($save); if($db !== false){ echo "儲存使用者成功"; }else{ echo "error"; } }else{ echo "使用者已經存在"; } } //生成第三方3rd_session $session3rd = null; $strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"; $max = strlen($strPol)-1; for($i=0;$i<16;$i++){ $session3rd .=$strPol[rand(0,$max)]; } // echo $session3rd; } public function vegt($url){ $info = curl_init(); curl_setopt($info,CURLOPT_RETURNTRANSFER,true); curl_setopt($info,CURLOPT_HEADER,0); curl_setopt($info,CURLOPT_NOBODY,0); curl_setopt($info,CURLOPT_SSL_VERIFYPEER, false); curl_setopt($info,CURLOPT_SSL_VERIFYHOST, false); curl_setopt($info,CURLOPT_URL,$url); $output= curl_exec($info); curl_close($info); return $output; }