zoukankan      html  css  js  c++  java
  • PHP实现微信模板消息发送给指定用户

    收到很多童鞋的咨询,利用微信公众号的接口能不能给某个用户发送消息呢,如果说直接发送呢那还真有些限制,一个是客服消息接口,但是这个需要用户在48小时内和公众号有互动才可以发送。另外一个就是微信的模板消息,这个没有发送时间限制,但是微信为了防止一些垃圾数据需要使用模板才可以发送。相信我们平时也收到很多模板消息,实际效果如下:

     这种微信模板消息的效果如何实现呢?

    首先需要在微信公众平台后台的"功能"菜单中选择模板消息,如果菜单中没有模板消息,需要点击功能插件进行添加,如下图:

    添加插件之后可以在模板库中选择模板使用,当然也可以创建模板,一般来说模板库中已经够用了,选择模板后一定要记住模板ID,这在后续的PHP程序中要用到。

    接下来说一下接口的调用规则:

    http请求方式: POST
    https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN

    发送什么格式的数据呢?发送的数据为json格式,以如下模板为例:

    JSON格式如下:

    {
        "touser": "这里是接收用户的OPENID",
        "template_id": "这里是模板ID",
        "url": "这里是点击详情后跳转的网址",
        "data": {
            "first": {
                "value": "您好!有访客访给您留言了。",
                "color": "#173177"
            },
            "user": {
                "value": "张三",
                "color": "#FF0000"
            },
            "ask": {
                "value": "您好,非常关注黎明互联,有没有关于支付宝的视频教程?",
                "color": "#173177"
            },
            "remark": {
                "value": "该用户已注册12天",
                "color": "blue"
            }
        }
    }

    数据格式现在我们明白了,那么如何使用PHP发送到服务器呢,另外在代码里面JSON只能定义成数据拼接完成的字符串吗?如果不熟悉字符串或者不喜欢用字符串可以用数组转换,下面以数组为例给出PHP代码片段实现微信模板消息:

    class WxTmp
    {
        //请求模板消息的地址
        const TEMP_URL = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=';
        public function getAccessToken(){
            //这里获取accesstoken  请根据自己的程序进行修改
            return $access_token;
        }
        /**
        * 微信模板消息发送
        * @param $openid 接收用户的openid
        * return 发送结果
        */
        public function send($openid){
            $tokens = $this->getAccessToken();
            $url = self::TEMP_URL . $tokens;
            $params = [
                'touser' => $openid,
                'template_id' => 'Oblr5uXH_fS79gMC8E0mYz0CpUAHnJtdvAC3PWABrsk',//模板ID
                'url' => 'https://www.liminghulian.com/course/3/lesson/list', //点击详情后的URL可以动态定义
                'data' => 
                        [
                          'first' => 
                             [
                                'value' => '您好!有访客访给您留言了。',
                                'color' => '#173177'
                             ],
                          'user' => 
                             [
                                'value' => '张三',
                                'color' => '#FF0000'
                             ],
    
                          'ask' => 
                             [
                                    'value' => '您好,非常关注黎明互联,有没有关于支付宝的视频教程?',
                                    'color' => '#173177'
                             ],
                           'remark' => 
                             [
                                    'value' => '该用户已注册12天',
                                    'color' => 'blue'
                             ] 
                          ]
            ]; 
            $json = json_encode($params,JSON_UNESCAPED_UNICODE);
            return $this->curlPost($url, $json);
        }
        /**
        * 通过CURL发送数据
        * @param $url 请求的URL地址
        * @param $data 发送的数据
        * return 请求结果
        */
        protected function curlPost($url,$data)
        {
            $ch = curl_init();
            $params[CURLOPT_URL] = $url;    //请求url地址
            $params[CURLOPT_HEADER] = FALSE; //是否返回响应头信息
            $params[CURLOPT_SSL_VERIFYPEER] = false;
            $params[CURLOPT_SSL_VERIFYHOST] = false;
            $params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回
            $params[CURLOPT_POST] = true;
            $params[CURLOPT_POSTFIELDS] = $data;
            curl_setopt_array($ch, $params); //传入curl参数
            $content = curl_exec($ch); //执行
            curl_close($ch); //关闭连接
            return $content;
        }
    }
    
    $obj = new WxTmp();
    $openid = '接收模板信息的用户的openid';
    echo $obj->send($openid);
  • 相关阅读:
    HDU 4472 Count DP题
    HDU 1878 欧拉回路 图论
    CSUST 1503 ZZ买衣服
    HDU 2085 核反应堆
    HDU 1029 Ignatius and the Princess IV
    UVa 11462 Age Sort
    UVa 11384
    UVa 11210
    LA 3401
    解决学一会儿累了的问题
  • 原文地址:https://www.cnblogs.com/bkhdd/p/13224295.html
Copyright © 2011-2022 走看看