微信公众平台模板消息发送接口文档
為了保證用戶不受到騷擾,在開(kāi)發(fā)者出現(xiàn)需要主動(dòng)提醒、通知用戶時(shí),才允許開(kāi)發(fā)者在公眾平臺(tái)網(wǎng)站中模板消息庫(kù)中選擇模板,選擇后獲得模板ID,再根據(jù)模板ID向用戶主動(dòng)推送提醒、通知消息。
模板消息調(diào)用時(shí)主要需要模板ID和模板中各參數(shù)的賦值內(nèi)容。請(qǐng)注意:
1.模板中參數(shù)內(nèi)容必須以".DATA"結(jié)尾,否則視為保留字;
2.模板保留符號(hào)"{{ }}"
案例:
{{first.DATA}}
買(mǎi)家名字:{{keyword1.DATA}}
付款金額:{{keyword2.DATA}}
下單時(shí)間:{{keyword3.DATA}}
{{remark.DATA}}
具體調(diào)用方法
第一步:獲取模板ID
通過(guò)在模板消息功能的模板庫(kù)中使用需要的模板,可以獲得模板ID。
第二步:請(qǐng)求接口
請(qǐng)注意,URL置空,則在發(fā)送后,點(diǎn)擊模板消息會(huì)進(jìn)入一個(gè)空白頁(yè)面(ios),或無(wú)法點(diǎn)擊(android)。
POST請(qǐng)求
https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
請(qǐng)求包為一個(gè)json:
{
"touser":"OPENID",
"template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
"url":"http://weixin.qq.com/download",
"topcolor":"#FF0000",
"data":{
"User": {
"value":"黃先生",
"color":"#173177"
},
"Date":{
"value":"06月07日 19時(shí)24分",
"color":"#173177"
},
"CardNumber":{
"value":"0426",
"color":"#173177"
},
"Type":{
"value":"消費(fèi)",
"color":"#173177"
},
"Money":{
"value":"人民幣260.00元",
"color":"#173177"
},
"DeadTime":{
"value":"06月07日19時(shí)24分",
"color":"#173177"
},
"Left":{
"value":"6504.09",
"color":"#173177"
}
}
}
效果圖:
事件推送
在模版消息發(fā)送任務(wù)完成后,微信服務(wù)器會(huì)將是否送達(dá)成功作為通知,發(fā)送到開(kāi)發(fā)者中心中填寫(xiě)的服務(wù)器配置地址中。
1、送達(dá)成功時(shí),推送的XML如下:
<![CDATA[oia2TjuEGTNoeX76QEjQNrcURxG8]]&g;
1395658920
200163836
2、送達(dá)由于用戶拒收(用戶設(shè)置拒絕接收公眾號(hào)消息)而失敗時(shí),推送的XML如下:
1395658984
200163840
3、送達(dá)由于其他原因失敗時(shí),推送的XML如下:
1395658984
200163840
返回碼說(shuō)明
在調(diào)用模板消息接口后,會(huì)返回JSON數(shù)據(jù)包。正常時(shí)的返回JSON數(shù)據(jù)包示例:
{
"errcode":0,
"errmsg":"ok",
"msgid":200228332
}
錯(cuò)誤時(shí)的返回JSON數(shù)據(jù),形式類(lèi)似,錯(cuò)誤碼請(qǐng)見(jiàn)本頁(yè)下方返回碼說(shuō)明。
返回碼	說(shuō)明
-1	系統(tǒng)繁忙
0	請(qǐng)求成功
40001	驗(yàn)證失敗
40002	不合法的憑證類(lèi)型
40003	不合法的OpenID
40004	不合法的媒體文件類(lèi)型
40005	不合法的文件類(lèi)型
40006	不合法的文件大小
40007	不合法的媒體文件id
40008	不合法的消息類(lèi)型
40009	不合法的圖片文件大小
40010	不合法的語(yǔ)音文件大小
40011	不合法的視頻文件大小
40012	不合法的縮略圖文件大小
40013	不合法的APPID
41001	缺少access_token參數(shù)
41002	缺少appid參數(shù)
41003	缺少refresh_token參數(shù)
41004	缺少secret參數(shù)
41005	缺少多媒體文件數(shù)據(jù)
41006	access_token超時(shí)
42001	需要GET請(qǐng)求
43002	需要POST請(qǐng)求
43003	需要HTTPS請(qǐng)求
44001	多媒體文件為空
44002	POST的數(shù)據(jù)包為空
44003	圖文消息內(nèi)容為空
45001	多媒體文件大小超過(guò)限制
45002	消息內(nèi)容超過(guò)限制
45003	標(biāo)題字段超過(guò)限制
45004	描述字段超過(guò)限制
45005	鏈接字段超過(guò)限制
45006	圖片鏈接字段超過(guò)限制
45007	語(yǔ)音播放時(shí)間超過(guò)限制
45008	圖文消息超過(guò)限制
45009	接口調(diào)用超過(guò)限制
46001	不存在媒體數(shù)據(jù)
47001	解析JSON/XML內(nèi)容錯(cuò)誤
PHP實(shí)現(xiàn)
1.實(shí)例化 獲取appid,appsecret
function __construct($appid, $appsecret)
    {
        $this->appid = $appid ? $appid : C('oauth_config.appid');
        $this->appsecret = $appsecret ? $appsecret : C('oauth_config.appsecret');
    }
2.獲取access_token
/**
     * 獲取微信基礎(chǔ)接口憑證Access_token
     * @param $refresh 強(qiáng)制刷新, 默認(rèn)false
     * @return String
     */
    function getAccess_token($refresh = false)
    {
        $data = json_decode(file_get_contents("access_token.json"));
        
        if ($data->expire_time < time() || $refresh) {
            $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$this->appid.'&secret='.$this->appsecret;
            $result = json_decode(file_get_contents($url));
            $access_token = $result->access_token;
            
            if ($result->errcode && !$access_token) {
                $this->error('get access_token failed.');
            } else {
                $data->expire_time = time() + 7000;
                $data->access_token = $access_token;
                $fp = fopen("access_token.json", "w");
                fwrite($fp, json_encode($data));
                fclose($fp);
                
                $this->access_token = $access_token;
            }
        } else if (!$this->access_token){
            $this->access_token = $data->access_token;
        }
        
        return $this->access_token;
    }
3.發(fā)送模板消息
//發(fā)送模板消息
     function send_template_message($data)
    {
        $url = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=' . $this->getAccess_token();
        
        $result = $this->curlRequest($url, urldecode(json_encode($data)));
        return json_decode($result, true);
    }
4.組合消息數(shù)據(jù)
$data = array(
                    'touser' => $openid, // openid是發(fā)送消息的基礎(chǔ)
                    'template_id' => 'JkZGZlvL5ou_UFide5ncZOzLbtUaPPz8cuYdXUKEkzs', // 模板id
                    'url' => $this->siteUrl . U('Store/Twitter/team'), // 點(diǎn)擊跳轉(zhuǎn)地址
                    'topcolor' => '#FF0000', // 頂部顏色
                    'data' => array(
                        'first' => array('value' => '邀請(qǐng)成功'),
                        'keyword1' => array('value' => $data_arr['realname']),
                        'keyword2' => array('value' => date('Y年m月d日 H:i', time())),
                        'remark' => array('value' => '您的好友' . $data_arr['realname'] . '已經(jīng)成為分銷(xiāo)商'),
                    )
                );
5.獲取openid,并發(fā)送消息
function send($type, $member_id, $data_arr) {
        $member = M('Member')->where(array('id' => $member_id))->find();
        $wxuser = M('Wxuser')->where(array('id' => $member['wxuser_id']))->find();
        
        //檢測(cè)用戶權(quán)限消息設(shè)置
        if ($member && $wxuser && $this->_checkset($type, $member)) {
            $data = $this->_getData($type, $wxuser['openid'], $data_arr);
            
            import('@.Action.WxDevelop');
            $tplmsg = new WxTmplmsg(C('PAY_WEIXIN')['appid'], C('PAY_WEIXIN')['appsecret']);
            return $tplmsg->send_template_message($data);
        }
    }
總結(jié)
以上是生活随笔為你收集整理的微信公众平台模板消息发送接口文档的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: 贪心算法及其理论依据——拟阵
- 下一篇: 四季豆冰箱可以放多久 四季豆的功效与作用
