#微信##服务号##模版信息#研究

微信服务号模版信息,被广泛的用于信息通知,以及各大服务号突破4条图文每月的限制。

作为一个小白,兜兜转转饶了好多圈子,逛了好多博客,终于把微信群发模版信息功能搞定了,特此写文以作纪念,并且方便后人能够快速的完成开发。

1.了解模版信息的使用

微信官方模版消息接口文档

第一步:获取模版ID

通过在模版消息功能的模版库中使用需要的模版,可以获得模版ID。

第二步:请求接口

请注意,URL置空,则在发送后,点击模版消息会进入一个空白页面(ios),或无法点击(android)。

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

请求包为一个json:

{
"touser":"OPENID",
"template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
"url":"http://weixin.qq.com/download",
"topcolor":"#FF0000",
"data":{
"User": {
"value":"黄先生",
"color":"#173177"
},
"Date":{
"value":"06月07日 19时24分",
"color":"#173177"
},
"CardNumber":{
"value":"0426",
"color":"#173177"
},
"Type":{
"value":"消费",
"color":"#173177"
},
"Money":{
"value":"人民币260.00元",
"color":"#173177"
},
"DeadTime":{
"value":"06月07日19时24分",
"color":"#173177"
},
"Left":{
"value":"6504.09",
"color":"#173177"
}
}
}

根据官方给出的接口文档,不难发现,模版消息的发送有一下两个重点:
1.每次发送都需要获取access_token
2.需要公众号粉丝的OPENID

2.获取粉丝OPENID

获取粉丝OPENID有两种方法
(一)最简单的一种是在微信公众号后台,打开与该粉丝的聊天页面,在浏览器url链接中提取
tofakeid=XXXXXXXXXXXXXXXXXXXXXXXXXXXX
等于号后面就是粉丝的openid了,共28位
这种方法适合给特定粉丝发送模版消息,适合少量推送

获取单个粉丝OPENID

(二)通过微信接口获取用户列表
微信官方获取用户列表接口文档
实现方法

<?php
    $appid = "appid";
    $appsecret = "appsecret";
    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($ch);
    curl_close($ch);
    $jsoninfo = json_decode($output, true);
    $access_token = $jsoninfo["access_token"];
    $url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=$access_token";
    $result = https_request($url);
    $jsoninfo = json_decode($result);  // 默认false,为Object,若是True,为Array
    $data = $jsoninfo -> data;  
    foreach($data -> openid as $x_value) {
        echo "'".$x_value . "',";
        echo "<br>";
    }
    function https_request($url)
    {       
        $curl = curl_init();       
        curl_setopt($curl, CURLOPT_URL, $url);       
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);       
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);       
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);       
        $data = curl_exec($curl);       
        if (curl_errno($curl)) {return 'ERROR '.curl_error($curl);}       
        curl_close($curl);       
        return $data;
    }
?>

说明:第十九、二十行高亮部分请根据自己的需求更改
批量获取粉丝OPENID

3.模版消息推送

3.1对单个粉丝推送

<?php
  //获取微信access_token
 function getaccess_token(){
    //appid与appsecret改成你自己的
    $appid = 'appid';
    $appsecret = 'appsecret';
    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
    $data = curl_exec($ch);
    curl_close($ch);
    $data = json_decode($data,true);
    return $data['access_token'];
 }
  //设置与发送模板信息
 function set_msg(){
    //获取access_token
    $access_token = getaccess_token();
    //这里是在模板里修改相应的变量
    $formwork = '{"touser":"OPENID",
    "template_id":"template_id",
    "url":"https://www.54xavier.cn",
    "data":{
		"first": {
        	"value":"这里是自己定义的标题",
            "color":"#173177"
            },
        "keyword1": {
            "value":"这里填写预约项目",
            "color":"#173177"
            },
		"keyword2": {
            "value":"这里填写提交时间",
            "color":"#173177"
            },
        "remark": {
            "value":"这里写结束语",
            "color":"#173177"
            }
        }
    }';
    $url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={$access_token}";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
    curl_setopt($ch, CURLOPT_POST,1);
    curl_setopt($ch, CURLOPT_POSTFIELDS,$formwork);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}
echo set_msg();

请注意修改5-7,22-43行代码

3.1对多个粉丝推送

<?php
//获取微信access_token
 function getaccess_token(){
    //appid与appsecret改成你自己的
    $appid = 'appid';
    $appsecret = 'appsecret';
    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
    $data = curl_exec($ch);
    curl_close($ch);
    $data = json_decode($data,true);
    return $data['access_token'];
 }
$ACCESS_TOKEN = getaccess_token();
//openid数组
$touser = [
    'oE_Xu02zO9VINd2etu_dnJUL-zuk',
    'oE_Xu00r_8YYiGeqH29woyXqtc3g',
    'oE_Xu092AgOHQArS9e83abpotoI0'];
//模板消息请求URL
$url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" . $ACCESS_TOKEN;
//遍历发送微信消息
foreach ($touser as $value) {
    $data = getDataArray($value);
    $json_data = json_encode($data);//转化成json数组让微信可以接收
    $res = https_request($url, urldecode($json_data));//请求开始
    $res = json_decode($res, true);
    if ($res['errcode'] == 0 && $res['errcode'] == "ok") {
        echo "发送成功!<br/>";
    }
}
//获取发送数据数组
function getDataArray($value)
{
    $data = array(
        'touser' => $value, //要发送给用户的openid
        'template_id' => "template_id",//改成自己的模板id,在微信后台模板消息里查看
        'url' => "https://www.54xavier.cn", //自己网站链接url
        'data' => array(
            'first' => array(
                'value' => "这里是自己定义的标题",
                'color' => "#000"
            ),
            'keyword1' => array(
                'value' => "这里填写预约项目",
                'color' => "#f00"
            ),
            'keyword2' => array(
                'value' => "这里填写提交时间",
                'color' => "#173177"
            ),
            'remark' => array(
                'value' => "这里写结束语",
                'color' => "#f00"
            ),
        )
    );
    return $data;
}
//curl请求函数,微信都是通过该函数请求
function https_request($url, $data = null)
{
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    if (!empty($data)) {
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    }
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
}
?>

请注意修改5-6,19-22,42-59行代码

以上就是模版消息发送的全部内容,有错误的地方欢迎指出来,有不懂的欢迎给我留言

发布者

Xavier

这个人很懒,什么都懒得写。

《#微信##服务号##模版信息#研究》上有1条评论

发表评论