1. 程式人生 > >PHP 微信公眾號傳送模版訊息

PHP 微信公眾號傳送模版訊息

public function index()
	{
		require_once VENDOR_PATH."jssdk/jssdk.php";
        $appid = '';        //微信公眾號後臺獲取
        $appsecret = '';   //微信公眾號後臺獲取
        $access_token = $jssdk->getAccessToken();
        $jssdk = new \JSSDK($appid,$appsecret);
        return $res = $this->sendTemplets($access_token,$openid);
	}

	private function sendTemplets($access_token,$openid)
    {
        $data['touser'] =$openid; 
        $data['template_id'] = 'o6G9CmD1JI0cm9RK_wCEIgmu4FfnWCD7vPBwY3ncmoM';//模版id(微信公眾號後臺獲取)
        $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
        $data['url'] = $protocol.$_SERVER['HTTP_HOST']."/index.php/Portal/Index/index";//跳轉連結
        $data['data']['first']['value'] = '標題內容';
        $data['data']['first']['color'] = '#06C';
        $data['data']['keyword1']['value'] = '詳情1';
        $data['data']['keyword1']['color'] = '#06C';
        $data['data']['keyword2']['value'] = '詳情2';
        $data['data']['keyword2']['color'] = '#06C';
        $data['data']['keyword3']['value'] = '詳情3';
        $data['data']['keyword3']['color'] = '#06C';
        $data['data']['remark']['value'] = '結尾資訊';
        $data['data']['remark']['color'] = '#06C';
        $data = json_encode($data);
        //出現亂碼則開啟下面註釋
        // $data=preg_replace("#\\\u([0-9a-f]{4})#ie", "iconv('UCS-2BE', 'UTF-8', pack('H4', '\\1'))", $data);
        $url="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$access_token;
        $this->post_by_curl($url,$data);
    }

    private function post_by_curl($url,$data)
    {
        $curl = curl_init();// 啟動一個CURL會話
        curl_setopt($curl, CURLOPT_URL, $url); // 要訪問的地址
        curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模擬使用者使用的瀏覽器(報錯則刪掉)
        curl_setopt($curl, CURLOPT_POST, true); // 傳送一個常規的Post請求
        curl_setopt($curl, CURLOPT_POSTFIELDS,  $data); // Post提交的資料包
        curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 設定超時限制防止死迴圈
        curl_setopt($curl, CURLOPT_HEADER, true); // 顯示返回的Header區域內容
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // 獲取的資訊以檔案流的形式返回
        curl_exec($curl); // 執行操作
    }