前兩節說的都是微信開發的初級篇,這一節說高級篇。微信公眾號關注以后,下面都是有菜單的,底部有三個一級菜單,每個一級菜單可以添加5個二級菜單。一級菜單最多四個漢字,二級菜單最多7個漢字,多出來的漢字用“......”號,菜單自定義以后,由於緩存原因,需要取消再次關注才能生效。微信的菜單本質上就是一個按鈕,既然是按鈕,他就是有多種屬性的按鈕,微信開發中我們最常用的按鈕類型是click
、view
,其他的按鈕類型還有scancode_push
(調用掃一掃)、scancode_waitmsg
、pic_sysphoto
、pic_photo_or_album
、pic_weixin
等等,這些不常用而已。所以我主要說的菜單類型click,view這兩種,創建菜單,代碼如下:
<?php
//自定義菜單需要access_token,所以我們這里先獲取票據access_token,這里可以寫一個方法,
public function getToken(){
//由於token一天的訪問次數是兩千次,並且每次的有效時長是7200秒,所以我們可以給他做一存儲,可以在cookie,session,redis,memcache,mysql中都可以,我們這里存儲在session中
if( $SESSION['token'] && $SESSION[keeptime]>time() ){
//直接返回票據access_token()
return $SESSION['token'];
}else{
$appid = ""; //這里填寫你自己的公眾號里的appid
$appsecret = ""; //這里填寫你自己的公眾號里的appsecret
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=
".$appsecret;
//初始化curl
$ch = curl_init();
//設置參數
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRNSFER,1);
//執行curl
$token = curl_exec($ch);
//關閉curl
curl_close();
//由於返回的數據是json個格式,需要進行轉換
$token = json_decode($token,true);
$SESSION['token'] = $token['access_token
'];
$SESSION['keeptime'] = $tokenp['exprires_in']+time();
}
}
//定義自定義菜單的方法
public function createcai(){
//獲取token
$token = $this->$getToken();
//api請求URL,這里用的是POST方法
$url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$token;
//數據設置
/**
下面是微信公眾平台官方提供的數據格式
{
"button":[
{
"type":"click",
"name":"今日歌曲",
"key":"V1001_TODAY_MUSIC"
},
{
"name":"菜單",
"sub_button":[
{
"type":"view",
"name":"搜索",
"url":"http://www.soso.com/"
},
{
"type":"miniprogram",
"name":"wxa",
"url":"http://mp.weixin.qq.com",
"appid":"wx286b93c14bbf93aa",
"pagepath":"pages/lunar/index"
},
{
"type":"click",
"name":"贊一下我們",
"key":"V1001_GOOD"
}]
}]
}
**/
//數據設置
$arr = array(
"button"=>array(
array("type"=>"click","name"=>"今日新聞","key"=>"item1"),
array("name"=>"網紅新聞","sub_button"=>array(
array("type"=>"view","name"=>"網紅天佑","url"=>"http://www.baidu.com"),
array("type"=>"click","name"=>"網紅大事件","key"=>"item2"),
),
array("type"=>"click","name"=>"關於我們","key"=>"item3")
);
);
//把上面的數據的轉換為json個格式,這里需要注意一個問題,json_encode()函數在轉換時,中文的會亂碼,所以這里需要urlencode()函數
$arr = urldecode(json_decode(urlencode($arr)));
//使用curl的post請求,curl在微信開發中的使用非常的頻繁,可以寫一個方法封裝好,我這里為了方便大家學習就沒有封裝
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_HEADER,false);
curl_setopt($ch,CURLOPT_POSTFILDS,$arr);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$res = curl_exec();
if(curl_errno($ch)){
return curl_error($ch);
}else{
return json_decode($res,true);
}
curl_close();
}
這樣自定義菜單就實現了,其實還是非常簡單的,需要大家反復的聯系。
微信公眾號群發功能也是一個常見的功能,群發功能是訂閱號每天一次,服務號是一個月4次,所以開發的時候切記不要直接用群發接口,可以使用預覽接口,這樣可以防止錯誤后不能再發順。群發可以是文本,圖片,視頻,音頻等。這個功能實現起來也是非常簡單,話不多說,代碼如下:
<?php
//這里我調用的接口是預覽接口,其實是一樣的,只是把請求的URL換掉就可以了
public function qunfa(){
//獲取token
$token = $this->getToken();
//這是預覽接口的url,POST請求
$url = "https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=
".$token;
/**
這是文本的格式
{
"touser":"OPENID",
"text":{
"content":"CONTENT"
},
"msgtype":"text"
}
**/
//設置數據,按照文檔給的文本格式
$arr = array(
"touser"=>" 填寫用戶ID","text"=>array("content"=>"大家好,新年快樂!"),"msgtype"=>"text"
);
//curl發順請求
$ch = curl_init();
//設置參數
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$arr);
curl_setopt($ch,CURLOPT_POST,true);
$res = curl_exec();
if(curl_errno($ch)){
return curl_error($ch);
}else{
return json_decode($res,true);
}
}
以上就是預覽群發功能,接下來是給大家講一講網頁授權的功能
網頁授權是微信開發非常重要的知識點,也是必須要掌握的,在公司的營銷,以及業務場景中是經常用到的,學習的時候建議結合開發文檔進行,應用場景:如果用戶在微信客戶端中訪問第三方網頁,公眾號可以通過微信網頁授權機制,來獲取用戶基本信息,進而實現業務邏輯。今天有點累了,后邊明天給大家分享。