Heim  >  Artikel  >  Backend-Entwicklung  >  PHP implementiert die Methode zum Senden von Vorlagennachrichten per WeChat-Applet (Code)

PHP implementiert die Methode zum Senden von Vorlagennachrichten per WeChat-Applet (Code)

不言
不言Original
2018-08-20 15:56:163113Durchsuche

Der Inhalt dieses Artikels befasst sich mit der Methode (dem Code) zur Implementierung des WeChat-Applets zum Senden von Vorlagennachrichten. Ich hoffe, dass er für Sie hilfreich ist.

Die Adresse von WeChat lautet:

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

Die relevanten Parameter sind

参数 必填 说明
touser 接收者(用户)的 openid
template_id 所需下发的模板消息的id
page 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。
form_id 表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id
data 模板内容,不填则下发空模板
color 模板内容字体的颜色,不填默认黑色 【废弃】
emphasis_keyword 模板需要放大的关键词,不填则默认无放大

Die grundlegenden Parameter und Adressen sind die oben getesteten. Einige Leute wundern sich vielleicht über form_id. openid, tmeplate_id. Lassen Sie uns zuerst kurz darüber sprechen.

form_id kann vom Frontend bereitgestellt werden, um die form_id zu erhalten und an die Rückseite weiterzugeben Gleichzeitig erhält das Backend die entsprechende OpenID. Hier wird empfohlen, dass das Frontend dem Backend so viel wie möglich zur Verfügung stellt, d. h. jede Schaltfläche stellt dem Backend eine ID zur Verfügung. Die form_id ist 7 Tage lang gültig. Es ist besser, mehr als weniger zu haben.

template_id ist die Vorlagen-ID, die aus der Vorlagennachricht abgerufen werden kann, indem Sie sich beim WeChat-Applet-Hintergrund anmelden.

Wenn wir diese Parameter kennen, möchte der Entwickler sie auf jeden Fall sofort testen und dann das Frontend die form_id bereitstellen lassen. Hier sind die nächsten beiden Fallstricke

Erster Fallstrick: Die vom Computer erhaltene form_id kann nicht verwendet werden

Der zweite Fallstrick: Die form_id muss von einem echten Telefon abgerufen werden, das echte Telefon jedoch muss Bei Projekten, bei denen der lokale Test nicht online gestartet wird, werden Sie aufgefordert, die form_id zu überprüfen. Dieser Punkt wird nicht erläutert, d. h., er muss online getestet werden, nachdem die Überprüfung erfolgreich war .

Dann lasst uns über den Back-End-Code sprechen

<?php
 //获取accesstoken
    public function getAccessToken($appid,secret){
       $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";
        $res = $this->curl_get($url);
        $res = json_decode($res,1);
        return $res[&#39;access_token&#39;];
    }
//获取模板消息内容主体
//因为是测试所以写死,大家可以通过传参的方式获取
    public function getMsg($openid,$template_id,$form_id,$emphasis_keyword=&#39;keyword1&#39;){
        $data[&#39;data&#39;]= [&#39;keyword1&#39;=>[&#39;value&#39;=>&#39;test1&#39;,&#39;color&#39;=>&#39;&#39;],&#39;keyword2&#39;=>[&#39;value&#39;=>&#39;test2&#39;,&#39;color&#39;=>&#39;&#39;],&#39;keyword3&#39;=>[&#39;value&#39;=>&#39;test1&#39;,&#39;color&#39;=>&#39;&#39;]];//内容主体
        $data[&#39;touser&#39;] = $openid;//用户的openid
        $data[&#39;template_id&#39;] = $template_id;//从微信后台获取的模板id
        $data[&#39;form_id&#39;] = $form_id;//前端提供给后端的form_id
        $data[&#39;page&#39;] = &#39;pages/index/index&#39;;//小程序跳转页面
        $data[&#39;emphasis_keyword&#39;] = $emphasis_keyword;//选择放大的字体
        return $data;
    }
    public function send($appid,secret,$openid,$template_id,$form_id){
        $access_token = $this->getAccessToken($appid,secret);
        $send_url = &#39;https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?    access_token=&#39; . $access_token;
        $data = $this->getMsg($openid,$template_id,$form_id);
        $str = $this->curl_post($send_url,json_encode($data));
        $str = json_decode($str,1);
        return $str;
    }
    public function curl_post($url, $fields, $data_type=&#39;text&#39;)
    {
        $cl = curl_init();
        if(stripos($url, &#39;https://&#39;) !== FALSE) {
            curl_setopt($cl, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($cl, CURLOPT_SSL_VERIFYHOST, FALSE);
            curl_setopt($cl, CURLOPT_SSLVERSION, 1);
        }
        curl_setopt($cl, CURLOPT_URL, $url);
        curl_setopt($cl, CURLOPT_RETURNTRANSFER, 1 );
        curl_setopt($cl, CURLOPT_POST, true);        
        curl_setopt($cl, CURLOPT_POSTFIELDS, $fields);
        $content = curl_exec($cl);
        $status = curl_getinfo($cl);
        curl_close($cl);
        if (isset($status[&#39;http_code&#39;]) && $status[&#39;http_code&#39;] == 200) {
            if ($data_type == &#39;json&#39;) {
                $content = json_decode($content);
            }
            return $content;
        } else {
            return FALSE;
        }
    }
    public function curl_get($url, $data_type=&#39;text&#39;)
    {
        $cl = curl_init();
        if(stripos($url, &#39;https://&#39;) !== FALSE) {
            curl_setopt($cl, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($cl, CURLOPT_SSL_VERIFYHOST, FALSE);
            curl_setopt($cl, CURLOPT_SSLVERSION, 1);
        }
        curl_setopt($cl, CURLOPT_URL, $url);
        curl_setopt($cl, CURLOPT_RETURNTRANSFER, 1 );
        $content = curl_exec($cl);
        $status = curl_getinfo($cl);
        curl_close($cl);
        if (isset($status[&#39;http_code&#39;]) && $status[&#39;http_code&#39;] == 200) {
            if ($data_type == &#39;json&#39;) {
                $content = json_decode($content);
            }
            return $content;
        } else {
            return FALSE;
        }        
    }
    punblic function index(){
           $appid = &#39;xxx&#39;;//小程序appid
           $openid = &#39;xxx&#39;;//接收用户的openid
           $template_id  = &#39;xxx&#39;;//从微信后台获取的模板id
           $form_id = &#39;xxx&#39;;//七天内的formid
           $data = $this->send($appid,secret,$openid,$template_id,$form_id);
           var_dump($data);//打印测试结果
    }

Das Obige ist tatsächlich der Code zum Senden von Vorlagennachrichten, solange Sie einige entsprechende Parameter erhalten , Sie können auf die relevanten Fallstricke achten. Kann erfolgreich getestet und gesendet werden

Verwandte Empfehlungen:

PHP-Methode zum Senden von WeChat-Vorlagennachrichten, PHP-Briefvorlagennachricht

PHP WeChat-Entwicklungsvorlagen-Nachrichtenantwort, PHP-Vorlagen-Nachrichtenantwort_PHP-Tutorial

Das obige ist der detaillierte Inhalt vonPHP implementiert die Methode zum Senden von Vorlagennachrichten per WeChat-Applet (Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn