+
80
-

请问php如何实现公众号模板消息推送给用户?

请问php如何实现公众号模板消息推送给用户?

网友回复

+
0
-

先获取access_token然后接口推送模板数据,完整代码如下:

<?php
var_dump(send_notice());
function send_notice() {
    $access_token = '';
    $AppID = "";
    $AppSecret = "";
    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$AppID."&secret=".$AppSecret;
    $tokendata = curl_post($url);
    if (isset($tokendata['access_token'])) {
        $access_token = $tokendata['access_token'];
    }else{
         return 'access_token获取失败';
    }
    //模板消息
    $json_template = json_tempalte();
    $url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$access_token;
    $res = curl_post($url, urldecode($json_template));
    var_dump($res);
    if ($res['errcode'] == 0) {
        return '发送成功';
    } else {
        return '发送失败';
    }
}


function json_tempalte() {
    //模板消息
    $template = [
        'touser' => '',
        //用户openid
        'template_id' => '',
        //在公众号下配置的模板id
        'url' => '',
        //点击模板消息会跳转的链接
        'topcolor' => "#7B68EE",
        //消息字体颜色
        'data' => [
            'first' => ['value' => urlencode("您的活动已通过"),
                'color' => "#FF0000"],
            'keyword1' => ['value' => urlencode('测试文章标题'),
                'color' => '#FF0000'],
            //keyword需要与配置的模板消息对应
            'keyword2' => ['value' => urlencode(date("Y-m-d H:i:s")),
                'color' => '#FF0000'],
            'keyword3' => ['value' => urlencode('测试发布人'),
                'color' => '#FF0000'],
            'keyword4' => ['value' => urlencode('测试状态'),
                'color' => '#FF0000'],
            'remark' => ['value' => urlencode('备注:这是测试'),
                'color' => '#FF0000']
        ],
    ];
    return json_encode($template);
}

function curl_post($url, $data = []) {
    $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 json_decode($output, true);
}

我知道答案,我要回答