Maison > développement back-end > tutoriel php > Utilisez PHP pour implémenter l'applet WeChat pour envoyer des modèles de messages (avec code)

Utilisez PHP pour implémenter l'applet WeChat pour envoyer des modèles de messages (avec code)

不言
Libérer: 2023-04-03 19:08:02
original
5072 Les gens l'ont consulté

Le contenu de cet article concerne l'utilisation de PHP pour implémenter l'applet WeChat pour envoyer des messages modèles (avec du code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Ce chapitre parlera brièvement du modèle d'envoi de message de l'applet WeChat. C'est relativement simple, mais il y a un piège auquel vous devez prêter attention.

L'adresse de WeChat est :

https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN
Copier après la connexion

Les paramètres pertinents sont

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

Les paramètres et adresses de base sont ceux testés ci-dessus. Certaines personnes peuvent s'interroger. form_id, openid, Parlons brièvement de l'endroit où obtenir tmeplate_id.

form_id peut être fourni par le front-end. Le front-end peut soumettre le formulaire sur chaque bouton pour obtenir le form_id et le donner au back-end. Dans le même temps, le back-end obtient l’openid correspondant. Ce qui est recommandé ici, c'est que le front-end fournisse autant que possible au back-end, c'est-à-dire que chaque bouton fournit un identifiant au back-end. Le form_id est valable 7 jours, que l'opérateur l'utilise ou non. il vaut mieux avoir plus que moins.

template_id est l'identifiant du modèle, qui peut être obtenu à partir du modèle de message en vous connectant à l'arrière-plan de l'applet WeChat.

Lorsque nous connaîtrons ces paramètres, le développeur voudra certainement le tester immédiatement, puis laisser le front-end fournir le form_id Voici les deux pièges

Le premier piège : le form_id obtenu. par l'ordinateur Il ne peut pas être utilisé

Le deuxième piège : le form_id doit être obtenu à partir d'un vrai téléphone, mais le vrai téléphone doit également être un projet en ligne. Si le test local n'est pas en ligne, il vous le demandera. pour vérifier le form_id, et WeChat ne l'explique pas. Ce point d'attention est qu'il doit être testé en ligne une fois l'examen publié avec succès.

Parlons ensuite du code backend

<?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);//打印测试结果
    }
Copier après la connexion

Ce qui précède est le code pour envoyer des messages de modèle. En fait, tant que vous obtenez quelques paramètres correspondants et faites attention aux pertinents. pièges, vous pouvez tester avec succès l'envoi

Recommandations associées :

Comment implémenter un composant de sélection à trois niveaux dans un mini programme ? (Exemple de code)

Exemple de programme WeChat Mini : code d'implémentation de fenêtres contextuelles dans le programme WeChat Mini

Comment créer des pages dans WeChat Mini saut de programme

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal