Heim >Backend-Entwicklung >PHP-Tutorial >Verwenden Sie PHP, um das WeChat-Applet zum Senden von Vorlagennachrichten zu implementieren (mit Code).

Verwenden Sie PHP, um das WeChat-Applet zum Senden von Vorlagennachrichten zu implementieren (mit Code).

不言
不言Original
2018-08-14 16:37:365024Durchsuche

Der Inhalt dieses Artikels befasst sich mit der Implementierung des WeChat-Applets zum Senden von Vorlagennachrichten (mit Code). Freunde in Not können darauf verweisen.

In diesem Kapitel wird kurz auf das Senden von Vorlagennachrichten des WeChat-Applets eingegangen. Es ist relativ einfach, aber es gibt eine Gefahr, die Sie beachten sollten.

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 beiden Fallstricke

Die erste Grube: die erhaltene form_id vom Computer Kann nicht verwendet werden

Die zweite Gefahr: Die form_id muss von einem echten Telefon abgerufen werden, aber das echte Telefon muss auch ein Online-Projekt sein. Wenn der lokale Test nicht online ist, wird eine Eingabeaufforderung angezeigt Um die form_id zu überprüfen, erklärt WeChat dies nicht. Dieser Punkt besteht darin, dass er nach erfolgreicher Veröffentlichung online getestet werden muss.

Als nächstes sprechen wir über den Back-End-Code

<?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 der Code zum Senden von Vorlagennachrichten, solange Sie einige entsprechende Parameter erhalten und auf die relevanten achten Fallstricke, Sie können das Senden erfolgreich testen

Verwandte Empfehlungen:

Wie implementiert man eine dreistufige Auswahlkomponente in einem Miniprogramm? (Codebeispiel)

Beispiel für das WeChat Mini-Programm: Implementierungscode für Popup-Fenster im WeChat Mini-Programm

So erstellen Sie Seiten in WeChat Mini-Programmsprung

Das obige ist der detaillierte Inhalt vonVerwenden Sie PHP, um das WeChat-Applet zum Senden von Vorlagennachrichten zu implementieren (mit 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