微信公眾號之模板消息使用


微信模板消息發送

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433751277

下面是服務號的模板列表

下面是具體的模板

其中模板ID很重要,可以將它配置到配置文件中。

'TEMPLATE_ID'                  => [
        'FEEDBACK'  =>'B5fhxVF4XuBfOd7t5Pdly_w0U8wT0XqBfJkob6CzUdE',
        'SEND_KEY'  =>'PzUme3sAzfGRJKGIh3Fuz5t82dmdv_NroyYYToTEmOI',
]

下面開始具體操作!

要想發送模板消息,首先需要獲取AccessToken。

private function _get_access_token() {
       ...
       return $access_token;
}

有了AccessToken,就需要傳遞參數了。

發送模板消息,需要使用JSON方式傳遞參數。

// 發送模板消息
const API_SEND_TEMPLATE = 'https://api.weixin.qq.com/cgi-bin/message/template/send';
public function send_template_msg() {
        $access_token = $this->_get_access_token();
        $uri = self::API_SEND_TEMPLATE.'?access_token='.$access_token;

        $openid = $_POST['openid'];
        $template_id = $_POST['template_id'];
        $url = $_POST['url'] ? $_POST['url'] : '';
        $miniprogram = $_POST['miniprogram'] ? $_POST['miniprogram'] : '';
        $data = $_POST['data'];

        $params = [
            'touser' => $openid,
            'template_id' => $template_id,
            'url'    => $url,
            'miniprogram' => $miniprogram,
            'data'  => $data
        ];

//        $params = [
//            'touser' => 'oW-YE1hoOv9eSopqH1CK9BWidDxg',
//            'template_id' => 'B5fhxVF4XuBfOd7t5Pdly_w0U8wT0XqBfJkob6CzUdE',
//            'url'    => 'http://www.baidu.com',
//            'miniprogram' => '',
//            'data'  => [
//                'first' => [
//                    'value' => 'first',
//                    'color' => '#173177'
//                ],
//                'keyword1' => [
//                    'value' => 'keyword1',
//                    'color' => '#173177'
//                ],
//                'keyword2' => [
//                    'value' => 'keyword2',
//                    'color' => '#173177'
//                ],
//                'remark' => [
//                    'value' => 'remark',
//                    'color' => '#173177'
//                ]
//            ]
//        ];


        $res_data = Http::doPostJson($uri, $params);

        $res_data = json_decode($res_data, true);
        if ($res_data['errcode'] != 0) {
            $this->ajaxReturn($this->jsonError(10001, '接口請求失敗'));
        }

        $this->ajaxReturn($this->jsonSuccess(1, '成功', $res_data['msgid']));
}

其中openid是否確定發給誰?template_id是確定使用什么模板發送。url是跳轉地址,miniprogram是跳轉到小程序。data是具體的模板內容。

再來看看牛逼的doPostJson函數,

// 通過POST方式發送json數據
static public function doPostJson($url = '', $param = [] ,$contentType = 'json') {
        $ch = curl_init();
        // 請求地址
        curl_setopt($ch, CURLOPT_URL, $url);
        // 請求參數類型
        $param = $contentType == 'json' ? urldecode(json_encode($param)) : http_build_query($param);
        // 關閉https驗證
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        // post提交
        if($param){
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
        }
        // 返回的數據是否自動顯示
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        // 執行並接收響應結果
        $output = curl_exec($ch);
        // 關閉curl
        curl_close($ch);
        return $output !== false ? $output : false;
}

醉醉核心的就是這句了,

$param = $contentType == 'json' ? urldecode(json_encode($param)) : http_build_query($param);

OK了,下面看看效果吧~~~

提前說一下,這個測試必須用線上的測試,因為微信需要一個IP白名單才能獲取到AccessToken!

要想授權成功,使用JSSDK,還需要將域名加入到安全域名!

這里的模板也很有講究了!自己申請,一個月只有三次機會,審核要7到15天,關鍵還不一定能通過。你必須要關注公眾號,才能收到模板消息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM