1. 程式人生 > >微信公眾號掃碼關注和一鍵關注公眾號的方法

微信公眾號掃碼關注和一鍵關注公眾號的方法

一鍵關注公眾號的方法自己看百度連結https://jingyan.baidu.com/article/e75057f2f5ecf9ebc91a89f3.html

一鍵關注公眾號的程式碼,原來通過獲取

獲取自定義選單配置介面取出當前公眾號的唯一標識__biz;(看到網上都沒有這方面的資料,大家記得點關注或贊,謝謝)

/*
 * 獲取一鍵關注授權標識
 * */
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自定義擷取中間部分字串方法,上面用到了,貼出來吧!
/*
 * php擷取指定兩個字元之間字串
 * */
function get_between($input, $start, $end)
{
    $substr = substr($input, strlen($start) + strpos($input, $start), (strlen($input) - strpos($input, $end)) * (-1));
return $substr;
}

微信公眾號掃碼關注程式碼

先上前後微信公眾號掃碼關注端不分離的程式碼

<?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;
    }
}
?>
<div style="text-align: center;">
<p>關注素材火公眾號</p>
<img src="<?php echo $qrcode; ?>" alt="關注公眾號二維碼" style="width:100px;height:100px;"/>
</div>

再放改成介面的程式碼

post方式

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封裝類
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);
}