上天赐予了你宝贵的生命,必定要让你在一生中,坚持,奋斗到最后一秒,燃烧尽生命的火焰。
1、生成二维码:
01、生成accessToken并保存到文件中
/*
* 封装curl请求方法
* @param { (string) $url } 请求的url
* @param { (array) $post_data } 请求的参数
* @param { (boolean) $ispost } post/get 默认post
* @param {(boolean) $isJson} 是否发送json数据
*/
function send_request($url, $post_data = array(), $ispost = true,$isJson=false)
{
if (empty($url) || empty($post_data)) {
return false;
}
if($isJson)
{
$post_data=json_encode($post_data);
}else
$o = http_build_query($post_data);
if (!$ispost) {
$post_data =$o;
if(!strpos($url,'?'))
$url =trim($url . '?' . $post_data);
else
{
$url =trim($url.$post_data);
}
}
//初始化curl
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
//设置header
curl_setopt($ch, CURLOPT_HEADER, 0);
//要求结果为字符串且输出到屏幕上
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if ($ispost) {
//post提交方式
curl_setopt($ch, CURLOPT_POST, 1);
// $post_data为array类型时multipart/formdata请求,string类型时application/x-www-form-urlencoded
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
}
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //不验证证书下同
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$data = curl_exec($ch);//运行curl
curl_close($ch);
return $data;
}
/*得到微信accessToken并写入文件*/
function writeAccessToken($appid,$secret){
$url ='https://api.weixin.qq.com/cgi-bin/token';
$res = send_request($url,array('grant_type'=>'client_credential','appid'=>$appid,'secret'=>$secret),false);
$res = json_decode($res,1);
if(isset($res['errcode'])) throw new Exception($res['errmsg']);
file_put_contents('token.php','<?php exit;?>'.$res['access_token'].','.time());
return $res['access_token'];
}
/*得到微信accessToken*/
function getAccessToken(){
$file='';
if(file_exists('token.php'))
$file=file_get_contents('token.php');
if($file!='')
{
$content=str_replace('<?php exit;?>','',$file);
$arr=explode(',',$content);
if(time()-$arr[1]>3000)
{
return writeAccessToken('wx5f0163b88','a003ed7f659e');
}
return $arr[0];
}else
{
return writeAccessToken('wx5f01641a','a003edcc043bb059e');
}
}
02、通过accessToken生成二维码
参考文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1443433542
/*生成二维码*/
function generrate()
{
$qrcode_url = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token='.getAccessToken();
$post_data = array();
$post_data['expire_seconds'] = 3600 * 24; //有效时间
$post_data['action_name'] = 'QR_SCENE';
$post_data['action_info']['scene']['scene_id'] = 123; //可以用户uid,微信端可获取,用户推广使用
$json =json_decode(send_request($qrcode_url, $post_data,true,true),true);
// echo var_dump($json);
if (!$json['errcode']) {
$ticket = $json['ticket'];
echo '<img src=\'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=' . urlencode($ticket).'\' width=\'260\' height=\'260\'/>';
} else {
echo '发生错误:错误代码 ' . $json['errcode'] . ',微信返回错误信息:' . $json['errmsg'];
exit;
}
}
2、微信公众号配置
参考文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319
配置成功后记得点击启用配置
3、处理推送事件
参考文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140454
/*处理推送事件*/
function reponseMsg()
{
$content=file_get_contents("php://input");
if(!empty($content))
{
$postObj = simplexml_load_string($content, 'SimpleXMLElement', LIBXML_NOCDATA);
file_put_contents('log.txt',date('Y-m-d H:i:s').'\n'.$content);
$openid = $postObj->FromUserName; //用户openid
$Event=strtolower($postObj->Event);
/*当等于subscribe为已关注用户*/
if ($Event == 'subscribe') {//首次关注
$is_first = 0;
} elseif ($Event == 'scan') {//已关注
$is_first = 1;
}
}
else
{
file_put_contents('log.txt',date('Y-m-d H:i:s').'\n无法获取到内容');
exit;
}
}
/*处理微信推送过的信息:注意只有当用户点击关注公众号了或者已经关注了才会推送信息*/
$signature=$_GET['signature'];
if($signature!='')
{
$getInfo=getSHA1('NfzAVfnFD1fv63f4xVtVRNFtRmF1RyRT',$_GET['timestamp'],$_GET['nonce']);
$echostr=$_GET['echostr'];
if($getInfo[1]!= $signature)
{
echo '签名失败';
exit;
}
if( $echostr){
//第一次接入weixin api接口的时候
echo $echostr;
exit;
}else{
//echo 'adss';
reponseMsg();
}
}
本文PHP微信扫描二维码关注公众号后自动登录第三方网站到此结束。以上进奋斗为荣,以无所事事为耻。小编再次感谢大家对我们的支持!