Home > Article > Backend Development > Implementation code for scanning QR code to follow and one-click following WeChat official account
* 获取一键关注授权标识 * */ public function getIdentification() { $burl = "https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info?access_token=" . $this->access_tokens . ""; $result = curl_get($burl); preg_match('/__biz.*&mid/', $result, $matches);//正则截取字符串 $sVid = $this->get_between($matches[0], "__biz=", "==&mid");//截取出微信公众号唯一标识 $okurl="https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=".$sVid."==&scene=124#wechat_redirect"; jumpUrl($okurl); }
php custom interception of the middle part of the string method, used above, post it!
/* * php截取指定两个字符之间字符串 * */function get_between($input, $start, $end) { $substr = substr($input, strlen($start) + strpos($input, $start), (strlen($input) - strpos($input, $end)) * (-1)); return $substr;}
WeChat public account scan code to follow the code
<?php header("Content-type: text/html; charset=utf-8"); //http://pay.sucaihuo.com/project/access_token //php获取微信access_token,appid和app_secret得到微信access_token //php根据appid和secret获取微信access_token,php通过curl远程获取微信access_token信息 $appid = '自己公众号的appid'; $secret = '自己公众号的secret '; $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $appid . "&secret=" . $secret . ""; $ch = curl_init(); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); if($result == false) { echo 'Curl error: ' . curl_error($ch); } curl_close($ch); $access_tokens = json_decode($result, true); //print_r($access_tokens); $access_token = $access_tokens['access_token']; function getTemporaryQrcode($access_token, $orderId) { $url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" . $access_token . ""; $qrcode = '{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": ' . $orderId . '}}}'; $result = api_notice_increment($url, $qrcode); $rs = json_decode($result, true); return $rs; // return urldecode($rs['url']); } $rs = getTemporaryQrcode($access_token, 1123); //print_r($rs); $ticket = $rs['ticket']; $qrcode = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" . $ticket . ""; //print_r($qrcode); function api_notice_increment($url, $data) { $ch = curl_init(); // $header = "Content-type: text/xml"; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_AUTOREFERER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $tmpInfo = curl_exec($ch); if (curl_errno($ch)) { curl_close($ch); return $ch; } else { curl_close($ch); return $tmpInfo; } } ?> <p style="text-align: center;"> <p>关注素材火公众号</p> <img src="<?php echo $qrcode; ?>" alt="关注公众号二维码" style="width:100px;height:100px;"/> </p>
post method
class Wxfollow { protected $appid = 'wxf1d959b99f33b156'; protected $secret = '248f3a560604555ec96215c085cb2723'; protected $url = ""; protected $access_tokens = ""; public function __construct() { //获取$access_token $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $this->appid . "&secret=" . $this->secret . ""; $result = curl_post($url); $access_tokens = json_decode($result, true); $this->access_tokens = $access_tokens['access_token']; } public function Follow(){ //非必传项 $rs = $this->getTemporaryQrcode($this->access_tokens, 123); $ticket = $rs['ticket']; $qrcode = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" . $ticket . ""; ///打印二维码显示 jumpUrl($qrcode); } //生成二维码 public function getTemporaryQrcode($access_tokens,$orderId) { $url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" .$access_tokens . ""; //生成二维码需要的参数 $qrcode = '{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": ' . $orderId . '}}}'; $momo = json_decode($qrcode, true); $result = curl_post($url, $momo); $rs = json_decode($result, true); return $rs; }
curl encapsulation class
function curl_post($url, array $params = array()) { $data_string = json_encode($params); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json' ) ); $data = curl_exec($ch); curl_close($ch); return ($data); }
Related recommendations :
Use php to determine whether the user follows the WeChat public account
PHP background development WeChat public account example
The above is the detailed content of Implementation code for scanning QR code to follow and one-click following WeChat official account. For more information, please follow other related articles on the PHP Chinese website!