话不多说 直接上代码
public function to_invite(){
$user_id = $this->request->post("user_id");
$public_path = ROOT_PATH . "public";
$file_name = "/uploads/applet_qrcode/" . $user_id . '.jpg';
if( !file_exists($public_path . $file_name) ){
$appid = config('apple.AppID');
$appSecret = config('apple.AppSecret');
$access_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appSecret}";
$access_token = file_get_contents($access_url);
$access_token = json_decode($access_token, true);
$request_data = [
'path' => "/pages/home/home?user_superior=" . $user_id,
'width' => 280
];
$request_url = 'https://api.weixin.qq.com/wxa/getwxacode?access_token='.$access_token['access_token'];
$request_data = json_encode($request_data);
$result = $this->_requestPost($request_url, $request_data);
file_put_contents($public_path . $file_name, $result);
}
$this->return_json(200,'获取成功', $file_name);
}
// 我写的curl方法包含了很多逻辑,所以在网上随便找了个,亲测有效的
public function _requestPost($url, $data, $ssl=true)
{
//curl完成
$curl = curl_init();
//设置curl选项
curl_setopt($curl, CURLOPT_URL, $url);//URL
$user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0 FirePHP/0.7.4';
curl_setopt($curl, CURLOPT_USERAGENT, $user_agent);//user_agent,请求代理信息
curl_setopt($curl, CURLOPT_AUTOREFERER, true);//referer头,请求来源
curl_setopt($curl, CURLOPT_TIMEOUT, 30);//设置超时时间
//SSL相关
if ($ssl) {
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//禁用后cURL将终止从服务端进行验证
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//检查服务器SSL证书中是否存在一个公用名(common name)。
}
// 处理post相关选项
curl_setopt($curl, CURLOPT_POST, true);// 是否为POST请求
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);// 处理请求数据
// 处理响应结果
curl_setopt($curl, CURLOPT_HEADER, false);//是否处理响应头
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);//curl_exec()是否返回响应结果
// 发出请求
$response = curl_exec($curl);
if (false === $response) {
echo '<br>', curl_error($curl), '<br>';
return false;
}
curl_close($curl);
return $response;
}
/**
* 返回JSON数据
* @param $code 状态码
* @param $msg 提示信息
* @param $data 返回数据
* @return $json 返回JSON数据
*/
public function return_json($code, $msg, $data = '') {
$return_json = array(
'errorCode' => $code,
'errorMsg' => $msg,
'result' => $data,
);
echo json_encode($return_json);
}