1. 程式人生 > >微信公眾號自定義選單欄的步驟

微信公眾號自定義選單欄的步驟

1、

//獲取token值存入檔案

$appid= '寫入自己的公眾號的appid';
$app_secret = '寫入自己的公眾號的appsecret';
$menu_url=__DIR__.'/menu.txt';
if(!file_exists($menu_url) || time() - filemtime( $menu_url ) > 7100){
//獲取token值
$token_url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.
$app_secret; $token_json=file_get_contents( $token_url ); $token_data=json_decode($token_json,true); if(!empty($token_data['access_token'])){ $a=file_put_contents($menu_url ,$token_data['access_token']); } $token = $token_data['access_token']; }else{ $token = file_get_contents($menu_url); }

2、

定義json串例如

$param_str='{
     "button":[
     {
          "type":"click",
          "name":"今日歌曲",
          "key":"V1001_TODAY_MUSIC"
      },
      {
           "name":"樂檸教育",
           "sub_button":[
                   {
                       "type":"view",
                       "name":"百度一下,你就知道",
"url":"http://www.baidu.com/" }, { "type":"view", "name":"贊一下我們", "url":"http://132.232.17.237/" }] }] }';
3、用一個函式來對微信伺服器進行請求
function CurlPost($url, $param = [],  $is_post = 1,  $timeout = 5 )
{
//初始化curl
$curl = curl_init();
// 設定請求的路徑
curl_setopt($curl, CURLOPT_URL, $url);
if( $is_post == 1 ){
//設定POST提交
curl_setopt($curl, CURLOPT_POST, 0 );
        }
//顯示輸出結果  1代表 把介面返回的結果當作一個字串處理
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// 設定請求超時時間
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout);
curl_setopt( $curl ,CURLOPT_SSL_VERIFYHOST , false );
curl_setopt( $curl ,CURLOPT_SSL_VERIFYPEER , false );
if( $is_post == 1 ){
//提交資料 -- 設定post提交的資料
if (is_array($param)) {
//http_build_query
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($param));
                } else {
curl_setopt($curl, CURLOPT_POSTFIELDS, $param);
                }
        }
//執行請求
$data = $data_str = curl_exec($curl);
//處理錯誤
if ($error = curl_error($curl)) {
$log_data = array(
'url' => $url,
'param' => $param,
'error' => '<span style="color:red;font-weight: bold">' . $error . '</span>',
                );
var_dump($log_data);
exit;
        }
# 關閉CURL
curl_close($curl);
//json資料轉換為陣列
$data = json_decode($data, true);
if (!is_array($data)) {
$data = $data_str;
        }
#呼叫玩介面之後寫一個日誌
$log = [
'url'  => $url ,
'param' => $param ,
'response' => $data_str
];
file_put_contents( __DIR__.'/wechat.log' , print_r( $log , true ) , 8 );
return $data;

}

4、呼叫的時候可能報錯因為json串的原因

$param_str= rtrim($param_str);
去掉最右邊的多餘部分就行了