用PHP发送模板消息
public function sendMsgToAll($sign,$content,$memo){
$success=0;
$noSuccess=0;
$resultList=Db::table('user')->where("form_id <> ''")->select();
foreach ($resultList as $k=>$v){
$post_data=$this->getJsonData($v,$sign,$content,$memo);
//1向qq发送模板消息 2向微信发送模板消息
if($v['status'] == 1){
$url="https://api.q.qq.com/api/json/template/send?access_token=".$this->getAccessToken(1);
}else{
$url="https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=".$this->getAccessToken();
}
$data=$this->curl($url,'post',$post_data);
$arr=json_decode($data,true);
if($arr['errcode']==0){
$success+=1;
}else{
$noSuccess+=1;
}
}
return [
'status'=>200,
'msg'=>"$success 条发送成功,$noSuccess 条发送失败"
];
}
因为qq小程序和微信小程序openId都放到了一起 所以我中间用状态区分了一下
把数据整理成模板消息需要的样子
public function getJsonData($data,$sign,$content,$memo){
$post_data=array(
"touser"=>$data['openId'],
"template_id"=>$data["status"] == 1?"":"",//模板Id
"page"=>"",
"form_id"=>$data['form_id'],
"data"=>array(
"keyword1"=>array("value"=>urlencode("$sign")),
"keyword2"=>array("value"=>urlencode("$content")),
"keyword3"=>array("value"=>urlencode("$memo")),
),
"emphasis_keyword"=>""
);
$post_data=urldecode(json_encode($post_data));
return $post_data;
}
获取getAccessToken 中间也区分了qq小程序和微信小程序
public function getAccessToken($status = null){
if($status == 1){
$url="https://api.q.qq.com/api/getToken?grant_type=client_credential&appid=".$this->qqAppId."&secret=".$this->qqSecret;
}else{
$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appId."&secret=".$this->secret;
}
//模拟请求获取access_token
$res=$this->curl($url);
//将结果转为数组
$arr=json_decode($res,true);
//取出access_token
$access_token=$arr['access_token'];
return $access_token;
}
模拟curl访问
public function curl($url,$type='get',$post_data=''){
$curl=curl_init();
curl_setopt($curl,CURLOPT_URL,$url);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
if($type=='post'){
curl_setopt($curl,CURLOPT_POST,1);
curl_setopt($curl,CURLOPT_POSTFIELDS,$post_data);
$headers = array(
"Content-type: application/json;charset='utf-8'",
"Accept: application/json",
"Cache-Control: no-cache",
"Pragma: no-cache",
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
}
$res=curl_exec($curl);
curl_close($curl);
return $res;
}