微信公衆号是(shì)否關注及發送模闆消息 - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 公衆号相關 >

微信公衆号是(shì)否關注及發送模闆消息

發表時(shí)間:2020-10-29

發布人(rén):融晨科技

浏覽次數:57

最近遇到(dào)一個(gè)項目是(shì)關于(yú)微信公衆号開發的(de)。
公衆号連接裏點菜單,生成一個(gè)帶二維碼的(de)專屬海報,分享海報到(dào)好友或者朋友圈讓好點點擊,好友關注後算是(shì)助力成功,集夠相應好友數獲得獎勵。
每一次好友助力,分享者都會收到(dào)消息,如果助力者之(zhī)前沒關注過公衆号提示成功助力一人(rén),關注過提醒助失敗。
助力者也(yě)可以(yǐ)生成專屬海報,形成閉環。

開發過程中主要(yào / yāo)用到(dào)對授權用戶進行判斷,用戶是(shì)否關注過公衆号,以(yǐ)及微信公衆号消息接口。
下面記錄下具體實現的(de)代碼。

<?php
/*
 * 模闆消息發送,電腦端測試時(shí)需要(yào / yāo)手動填寫openid 
 * 微信端會自動獲取當前openid發送無需填寫
 */
header("Content-type: text/html; charset=utf-8");
date_default_timezone_set("Asia/Shanghai");

$temp = new template();


//判斷用戶是(shì)否關注公衆号
function issub($openid){

	$access_token = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=SECRET";
    $access_msg = json_decode(file_get_contents($access_token));
    $token = $access_msg->access_token;
    $subscribe_msg = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=$token&openid=$openid";
    $subscribe = json_decode(file_get_contents($subscribe_msg));
    $gzxx = $subscribe->subscribe;
    //
    if($gzxx === 1){
    	echo "已關注";
    }else{
    	echo "未關注請關注。<img src='/public/images/gzh.png' />";
 	}
	
}
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) {
    if (!empty($_GET['code'])) {
        $openid = $temp->GetOpenid();        
        issub($openid);
        if ($openid) {
            $result = $temp->sendMsg($openid);
            if ($result['errmsg'] == 'ok') {
                echo '<script>alert("發送成功!");</script>';
            } else {
                echo '發送失敗!';
            }
        } else {
            echo '<script>alert("獲取openID失敗!");</script>';
        }
    } else {
        $temp->GET_Code();
    }
} else {
    echo '<script>alert("發送模闆需要(yào / yāo)先獲取openID!");</script>';
    $openid='orpdAwprTZvFaUwPDfW4WSanlZIk';
    $result = $temp->sendMsg($openid);
    if ($result['errmsg'] == 'ok') {
        echo '<script>alert("發送成功!");</script>';
    } else {
        echo '發送失敗!' . $result['errmsg'];
    }
}
 
class template {
 
    public $appid = "APPID";
    public $secret = "SECRET";
 
    public function sendMsg($openid) {
 
        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $this->appid . "&secret=" . $this->secret;
        //獲取access_token
        $resultData = $this->https_getRequest($url);
        $access_token = $resultData["access_token"];
 
        //$openid = 'orpdAwprTZvFaUwPDfW4WSanlZIk';
        $templateid = '模闆ID';
        $title = "标題";
        $data1 = "變量一";
        $data2 = "變量二";
        $data3 = "變量三";
        $data4 = date("Y年m月d日 H:i", time());
        $remark = "内容說(shuō)明!";
 
        $url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" . $access_token;
        /*
         * @miniprogram 跳小程序所需數據,不(bù)需跳小程序可不(bù)用傳該數據
         * @appid       appid必須與發模闆消息的(de)公衆号是(shì)綁定關聯關系)
         * @pagepath    所需跳轉到(dào)小程序的(de)具體頁面路徑,支持帶參數,(示例index?foo=bar)
         */
 
        $data = '{
           "touser":"' . $openid . '",
           "template_id":"' . $templateid . '",
           "url":"模闆跳轉網址", 
           "miniprogram":{
             "appid":"",
             "pagepath":""
           },         
           "data":{
                   "first": {
                       "value":"' . $title . '",
                       "color":"#7A378B"
                   },
                   "keyword1":{
                       "value":"' . $data1 . '",
                       "color":"#787878"
                   },
                   "keyword2": {
                       "value":"' . $data2 . '",
                       "color":"#787878"
                   },
                   "keyword3": {
                       "value":"' . $data3 . '",
                       "color":"#787878"
                   },
                   "keyword4": {
                       "value":"' . $data4 . '",
                       "color":"#787878"
                   },
                   "remark":{
                       "value":"' . $remark . '",
                       "color":"#C5C1AA"
                   }
           }
       }';
        $send = $this->https_request($url, $data);
        $send = json_decode($send, true);
        return $send;
    }
 
    //發起獲得code值鏈接
    public function GET_Code() {
        $get_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . $this->appid;
        $url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
        header("location:" . $get_url . "&redirect_uri=" . $url . "&response_type=code&scope=snsapi_base&state=1#wechat_redirect");
    }
 
    //獲取用戶openid
    public function GetOpenid() {
        $get_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $this->appid . '&secret=' . $this->secret . '&code=' . $_GET['code'] . '&grant_type=authorization_code';
        $json_obj = $this->https_getRequest($get_token_url);
        // $access_token = $json_obj['access_token'];
        return $json_obj['openid'];
    }
 
    /*
     * 獲取數據
     */
 
    public function https_getRequest($url) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($ch);
        curl_close($ch);
        $jsonData = json_decode($output, true);
        return $jsonData;
    }
 
    //通用數據處理方法發送模闆消息
    public function https_request($url, $data = null) {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        if (!empty($data)) {
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    }
 
}
?>

其它配制詳見微信公衆平台開發者文檔呢。

相關案例查看更多