thinkphp 5.0 对接微信模板消息

thinkphp 5.0 通过公众号推送消息

微信公众平台获取到AppID,AppSecret

登录到微信公众平台,找到 开发—基本设置,如图1,图2:
thinkphp 5.0 对接微信模板消息_第1张图片
thinkphp 5.0 对接微信模板消息_第2张图片
获取到AppId和AppSecret,顺手把你服务器的ip添加到白名单,用来获取用户的openid,具体怎么获取用户的openid,可以去网上查一下。

选择模板消息

在微信公众平台首页,上面部分找到 模板消息,会看到自己添加的模板消息列表,如果没有可以去模板库找到相应模板,记下模板ID。如下图:模板消息模板
thinkphp 5.0 对接微信模板消息_第3张图片
接下来万事俱备,就差代码了:

//   发送消息方法
    public function sendMsg($tem_id,$data,$openid,$return_url='')
    {
        if($tem_id == ''){
            $tem_id = "7wuhorQScRZHbn_NpPWlR4uoCN4CcZKtxEL_hwnNVZI";
        }
        $appid = config('wx.appid');
        $appsecret = config('wx.appsecret');
        $return_url = '';      //  你的消息详情页面,如果为空。点进去之后是空白页面
        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
        if (cookie('access_token')){
            $access_token2 =cookie('access_token');
        }else{
            $json_token=$this->curl_post($url);
            $access_token1=json_decode($json_token,true);
            $access_token2 = $access_token1['access_token'];
            setcookie('access_token',$access_token2,7200);
        }//缓存assesstoken
        $params1 = json_encode($this->json_tempalte($openid,$return_url,$data,$tem_id),JSON_UNESCAPED_UNICODE);
        $url="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$access_token2;
        $params = $this->curl_post($url,urldecode($params1));
        $params = json_decode($params,true);
        if ($params['errcode']==0){
            return '发送成功';
        }else{
            return '发送失败';
        }
    }


    /**
     *  curl请求
     * @param $url  请求的目的地址
     * @param array $data 请求带的数据
     * @return mixed
     *
     */
    function curl_post($url , $data=array()){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        // POST数据
        curl_setopt($ch, CURLOPT_POST, 1);
        // 把post的变量加上
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        $output = curl_exec($ch);
        curl_close($ch);
        return $output;
    }
   
/**
     * @param $openid 用户的openid
     * @param string $url  点击消息详情的链接
     * @param array $data     消息配置  具体根据每个模板的要求进行设置
     * @param string $template_id     模板id
     * @return array
     */
     function json_tempalte($openid,$url='',$data,$template_id = ''){
        $template=[
            'touser'=>$openid,//openID
            'template_id'=>$template_id,//模版id
            'url'=>$url,
            'topcolor'=>"#7B68EE",
            'data'=>$data
        ];//各个参数不明白的就去看文档,很详细。
        return $template;
    }
    

发送消息 sendMsg()方法里面的$data 是模板消息需要的参数,如佣金提醒模板
$data = [
‘first’=>[‘value’=>‘test’,‘color’=>"#000"],
‘keyword1’=>[‘value’=>‘test’,‘color’=>’#F70997’],
‘keyword2’=>[‘value’=>‘test’,‘color’=>’#248d24’],
‘keyword3’=>[‘value’=>date(“Y-m-d H:i:s”),‘color’=>’#000’],
‘remark’ =>[‘value’=>‘test’,‘color’=>’#1784e8’]
];
我是直接把appid和appsecret放到配置文件里面了,openid因为用的地方比较多,就直接存数据库了。
就这么多了,写的不那么详细,请大家多多指正哦!

你可能感兴趣的:(php,微信,消息推送,公众号消息,PHP)