2.根目錄下的/Application/Home/Controller文件夾中的MassController.class.php文件,書寫代碼為:
~~~
<?php
namespace Home\Controller;
use Think\Controller;
use Com\Wechat;
use Com\WechatAuth;
class MassController extends Controller
{
private $appid="wx165112bf167af76c";
private $appSecret="c65b22bfcf03fdd98504eac299701b03";
private $WechatAuth="";//初始化WechatAuth類
private $access_token="";//緩存token
/**
* 微信api根路徑
* @var string
*/
private $apiURL = 'https://api.weixin.qq.com/cgi-bin';
public function __construct(){
parent::__construct();//可能內部已經有這個構造方法了,因此加上這個
if(!session('token')){
$this->WechatAuth=new WechatAuth($this->appid,$this->appSecret);//初始化WechatAuth類
$WechatAuth=$this->WechatAuth;
$token=$WechatAuth->getAccessToken();
session(array('expire'=>$token['expires_in']));//設置過期時間
session('token',$token['access_token']);//緩存token
$this->access_token=$token;
}else{
$token=session('token');
$this->WechatAuth=new WechatAuth($this->appid,$this->appSecret,$token);//初始化WechatAuth類
$this->access_token=$token;//緩存token
}
}
//預覽群發消息
public function send(){
header('Content-type:text/html;charset=utf-8;');
$WechatAuth=$this->WechatAuth;
$msgtype="text";
$openid="orVDLwCI0NcQk0skZPNrfZkaj-aE";//暫時直接從數據庫中復制的openid
$content="你好,我在預覽群發消息";
$arr=$WechatAuth->meassageMass($msgtype,$openid,$content);
var_dump($arr);
}
/**
* 群發接口
*/
public function sendAllmessage(){
$group_id=null;
$msgtype="text";
$content="xi wang ke yi cheng gong a";
$data=array(
'filter'=>array("is_to_all"=>true,'group_id'=>$group_id),
$msgtype=>array('content'=>$content),
'msgtype'=>$msgtype
);
$arr=$this->api("message/mass/sendall",$data);
var_dump($arr);
}
/**
* 調用微信api獲取響應數據
* @param string $name API名稱
* @param string $data POST請求數據
* @param string $method 請求方式
* @param string $param GET請求參數
* @return array api返回結果
*/
public function api($name, $data = '', $method = 'POST', $param = '', $json = true){
$params = array('access_token' => $this->access_token);
if(!empty($param) && is_array($param)){
$params = array_merge($params, $param);
}
$url = "{$this->apiURL}/{$name}";
$data = json_encode($data);
$data = self::http($url, $params, $data, $method);
return json_decode($data, true);
}
/**
* 發送HTTP請求方法,目前只支持CURL發送請求
* @param string $url 請求URL
* @param array $param GET參數數組
* @param array $data POST的數據,GET請求時該參數無效
* @param string $method 請求方法GET/POST
* @return array 響應數據
*/
protected static function http($url, $param, $data = '', $method = 'GET'){
$opts = array(
CURLOPT_TIMEOUT => 30,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
);
/* 根據請求類型設置特定參數 */
$opts[CURLOPT_URL] = $url . '?' . http_build_query($param);
if(strtoupper($method) == 'POST'){
$opts[CURLOPT_POST] = 1;
$opts[CURLOPT_POSTFIELDS] = $data;
if(is_string($data)){ //發送JSON數據
$opts[CURLOPT_HTTPHEADER] = array(
'Content-Type: application/json; charset=utf-8',
'Content-Length: ' . strlen($data),
);
}
}
/* 初始化并執行curl請求 */
$ch = curl_init();
curl_setopt_array($ch, $opts);
$data = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
//發生錯誤,拋出異常
if($error) throw new \Exception('請求發生錯誤:' . $error);
return $data;
}
}
~~~
2.運行結果
