一、将 createObj(),modelMessage(),https_request()几个函数放在公共函数中,tp3 放在common下的function.php,tp5放在common.php
/**
* @param string $value 值
* @param string $color 颜色
* @return 对象数组
*/
function createObj($value, $color) {
$data = new stdClass;
$data->value = $value;
$data->color = $color;
return $data;
}
/**
* 模板消息方法
* @param [type] $touser 用户的openid
* @param [type] $template_id 模板消息ID
* @param [type] $url 可选 是否有连接可以点击查看详情
* @param [type] $data 详细数据
*/
function modelMessage($touser,$template_id,$url,$data)
{
$jsonObj = new stdClass;// 创建一个没有成员方法和属性的空对象
$jsonObj->touser = $touser;
$jsonObj->template_id = $template_id;
$jsonObj->url = $url;
$jsonObj->data = $data;
return json_encode($jsonObj, JSON_UNESCAPED_UNICODE);//后面参数确保不会产生原始编码
}
function https_request($url,$data=null)//如果数据为空(即需要自己get)就是get请求,如果有数据就用post
{
$curl = curl_init();//获取curl资源
//get方式的curl设置
curl_setopt($curl, CURLOPT_URL, $url);//设置
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);//https协议需要设置这两个verify
if(!empty($data))//data不为空
{
//data不为空即有值post过来,下面为curl的post设置
curl_setopt($curl,CURLOPT_POST,1);
curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
}
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);//设置为1就不能直接输出,0就直接输出
$output = curl_exec($curl);
curl_close($curl);//关闭curl
return $output;
}
二、在控制器中发送模板消息
/**
* 模板消息方法
* @param [type] $openid 用户的openid
* @param [type] $template_id 模板消息ID
* @param [type] $url 可选 是否有连接可以点击查看详情
*/
public function Modelnews($openid,$template_id,$url)
{
$access_token = get_access_token();
$url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={$access_token}";
$data = new stdClass;
$data->name = createObj('恭喜你购买成功!', '#173177');
$data->money = createObj('100元', '#173177');
$data->date = createObj(date('Y-m-d H:i:s'), '#173177');
$jsonstr = ModelMessage($openid, $template_id, $url,$data );
$result = https_request($url,$jsonstr);//利用curl实现接口对接,传输数据,返回的也是json数据包
$json = json_decode($result);//对json数据包进行解码
print_r($jsonstr);
}
有疑问的,下方评论区见。有更好的欢迎私信哟。