微信公眾號(hào)實(shí)現(xiàn)消息模板的推送

首先我們需要申請(qǐng)一個(gè)公眾號(hào)

登錄到后臺(tái)以后按照下列操作執(zhí)行

1.添加功能插件
image

2.找到模板消息

image

3.好了殴蓬,接下來你可以申請(qǐng)了,隨便選兩個(gè)行業(yè)就可以了蟋滴,審核通過以后進(jìn)去就可以添加模板了

4.添加好模板以后看格式

image

箭頭指向的地方是我們需要用的,方框的東西就是參數(shù)!

詳細(xì)看代碼(這里使用yii做的)

<?php

namespace backend\modules\api\controllers;

use common\models\SmsReport;
use common\models\Aes;
use common\models\Counter;
use common\models\Phone;
use common\models\City;
use common\models\oss\oss;

use Yii;
use yii\rest\Controller;
use backend\modules\api\common\lib\Helper;
use backend\modules\api\models\User;
use backend\modules\api\models\Register;
use backend\modules\api\common\lib\HttpUploadFile;
use yii\base\Object;
use backend\modules\api\models\Login;
use backend\modules\api\models\Abnormal;

header('Access-Control-Allow-origin:*');
header('Access-Control-Allow-Credentials:true');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers:Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With');
header('Content-Type: text/html; charset=utf-8');

class WechatController extends Controller {
    public function actionIndex(){
        //獲取參數(shù)signature nonce token timestamp echostr
        $nonce = Yii::$app->request->get('nonce');
        $token = 'adshare';
        $timestamp = Yii::$app->request->get('timestamp');
        $echostr = Yii::$app->request->get('echostr');
        $signature = Yii::$app->request->get('signature');
        //形成數(shù)組然后按照字典排序
        $array = array();
        $array = array($nonce,$timestamp,$token);
        sort($array);
        //拼接字符串痘绎、sha1加密津函,然后與signature進(jìn)行效驗(yàn)
        $str = sha1(implode($array));
        //這里是第一次調(diào)用,主要用來在基本設(shè)置中開啟啟用配置
        if($str == $signature && $echostr){
            return $echostr;
        }else{
            self::actionMessage();
        }
    }


    public function actionMessage(){
        //獲取微信推送的xml
        $postArr = $GLOBALS['HTTP_RAW_POST_DATA'];
        $postObj = simplexml_load_string($postArr);
        if(strtolower($postObj->MsgType) == 'event'){
            //如果是關(guān)注事件
            if(strtolower($postObj->Event) == 'subscribe'){    
                //多圖文 
                $toUser = $postObj->FromUserName;
                $fromUser = $postObj->ToUserName;
                $time = time();
                $Msgtype = 'news';
                $arr = array(
                    array(
                        'Title'=>'歡迎關(guān)注AD共享',
                        'Description'=>'這是一個(gè)屬于互聯(lián)網(wǎng)傳媒的時(shí)代',
                        'PicUrl'=>'http://peita.oss-cn-beijing.aliyuncs.com/question/546781498411128.jpg',
                        'Url'=>'http://www.peita.net'
                    )
                );
                $template = "<xml>
                            <ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[%s]]></MsgType>
                            <ArticleCount>".count($arr)."</ArticleCount>
                            <Articles>";
                
                foreach($arr as $key=>$v){
                    $template .="<item>
                            <Title><![CDATA[".$v['Title']."]]></Title> 
                            <Description><![CDATA[".$v['Description']."]]></Description>
                            <PicUrl><![CDATA[".$v['PicUrl']."]]></PicUrl>
                            <Url><![CDATA[".$v['Url']."]]></Url>
                            </item>";
                }
                
                $template .="</Articles>
                            </xml>";
                $info = sprintf($template,$toUser,$fromUser,$time,$Msgtype);
                echo $info;

                 /*文本
                //回復(fù)用戶消息
                $toUser = $postObj->FromUserName;
                $fromUser = $postObj->ToUserName;
                $time = time();
                $Msgtype = 'text';
                $Content = '歡迎關(guān)注AD共享公眾號(hào)';
                $template = "<xml>
                            <ToUserName><![CDATA[%s]]></ToUserName>
                            <FromUserName><![CDATA[%s]]></FromUserName>
                            <CreateTime>%s</CreateTime>
                            <MsgType><![CDATA[%s]]></MsgType>
                            <Content><![CDATA[%s]]></Content>
                            </xml>";
                $info = sprintf($template,$toUser,$fromUser,$time,$Msgtype,$Content);
                echo $info;*/
            }
        }

    }
    //發(fā)送模版消息
    public function actionPushMessage(){
        //獲取token
        $token = self::actionGetToken();
        //設(shè)置url
        $url = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token='.$token;
        //設(shè)置時(shí)間
        $sj = date('Y-m-d H:i:s',time());
        //設(shè)置充值鏈接
        $cz_url = 'http://www.peita.net';
        //設(shè)置賬戶余額
        $ye = '10元';
        //設(shè)置賬戶名稱
        $name = '小郭';

        //設(shè)置發(fā)送的消息
        $message = [
            'touser'=>'這里是用戶的openid',
            'template_id'=>'SudqvwsNYy4AFqBO4_KaWklYlhrc69c74jiAF3VBoCU',
            'url'=>$cz_url,
            'data'=>[
                'first'=>['value'=>'您好,您的賬戶余額不足孤页。請(qǐng)盡快充值尔苦,以免影響您的使用。','color'=>'#173177'],
                'keyword1'=>['value'=>$name,'color'=>'#173177'],
                'keyword2'=>['value'=>$ye,'color'=>'#173177'],
                'keyword3'=>['value'=>$cz_url,'color'=>'#173177'],
                'keyword4'=>['value'=>$sj,'color'=>'#173177'],
                'remark'=>['value'=>'如有任何疑問請(qǐng)登錄會(huì)員系統(tǒng)聯(lián)系在線客服','color'=>'#173177']
            ]
        ];

        $data = json_encode($message);

        //發(fā)送
        $res = self::actionCurlRequest($url,$data);
        return $res;

    }

    //獲取token
    public function actionGetToken(){
        $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET';
        $res = json_decode(self::actionCurlRequest($url));
        return $res->access_token;
    }

    //curl請(qǐng)求行施,支持post和get
    public function actionCurlRequest($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;
    }
}

好了允坚,詳細(xì)效果就可以出來了

要注意的是提前配置好線上的域名服務(wù)器等等,并且在微信的基本配置中啟用一下基本配置蛾号!

效果圖:

image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末稠项,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子鲜结,更是在濱河造成了極大的恐慌展运,老刑警劉巖活逆,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異拗胜,居然都是意外死亡蔗候,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門埂软,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锈遥,“玉大人,你說我怎么就攤上這事勘畔∷模” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵咖杂,是天一觀的道長(zhǎng)庆寺。 經(jīng)常有香客問我,道長(zhǎng)诉字,這世上最難降的妖魔是什么懦尝? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮壤圃,結(jié)果婚禮上陵霉,老公的妹妹穿的比我還像新娘。我一直安慰自己伍绳,他們只是感情好踊挠,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冲杀,像睡著了一般效床。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上权谁,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天剩檀,我揣著相機(jī)與錄音,去河邊找鬼旺芽。 笑死沪猴,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的采章。 我是一名探鬼主播运嗜,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼悯舟!你這毒婦竟也來了担租?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤抵怎,失蹤者是張志新(化名)和其女友劉穎翩活,沒想到半個(gè)月后阱洪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡菠镇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年冗荸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片利耍。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蚌本,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出隘梨,到底是詐尸還是另有隱情程癌,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布轴猎,位于F島的核電站嵌莉,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏捻脖。R本人自食惡果不足惜锐峭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望可婶。 院中可真熱鬧沿癞,春花似錦、人聲如沸矛渴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽具温。三九已至蚕涤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間铣猩,已是汗流浹背揖铜。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留剂习,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓较沪,卻偏偏與公主長(zhǎng)得像鳞绕,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子尸曼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 通過模板消息接口们何,公眾號(hào)能向關(guān)注其賬號(hào)的用戶發(fā)送預(yù)設(shè)模板的消息。模板消息僅用于公眾號(hào)向用戶發(fā)送重要的服務(wù)通知控轿,只能...
    伍華聰_開發(fā)框架閱讀 2,343評(píng)論 3 50
  • feisky云計(jì)算冤竹、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 3,827評(píng)論 0 5
  • 我的青椒學(xué)習(xí)之旅 陜縣255馮芳 ——堅(jiān)持是一種信念 剛加入青椒計(jì)劃時(shí)拂封,以為只是普通培訓(xùn),隨便聽聽課鹦蠕,最后考考試冒签,...
    陜縣255馮芳閱讀 237評(píng)論 0 0
  • 昨天我一直忍住不說話,好不容易忍著不和其他人說話钟病,可還是在獨(dú)自一人時(shí)沒忍住說了幾個(gè)字萧恕。這足以說明,我可以說個(gè)不停肠阱,...
    承思而行閱讀 313評(píng)論 0 0
  • 前短時(shí)間去了趟廈門票唆,沒有做攻略說走就走真的很愚蠢,今年高三了屹徘,沒告訴家長(zhǎng)也沒通知學(xué)校走趋,我用了四個(gè)小時(shí)做的決定,走 ...
    1只媛閱讀 164評(píng)論 1 0