Le contenu de cet article concerne la méthode (code) d'implémentation de l'applet WeChat pour envoyer des modèles de messages en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
L'adresse de WeChat est :
https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN
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 prochains pièges
. Premier écueil : le form_id obtenu par l'ordinateur ne peut pas être utilisé
Le deuxième écueil : le form_id doit être obtenu à partir d'un vrai téléphone, mais le vrai téléphone doit également en ligne. Pour les projets, si le test local n'est pas lancé en ligne, vous serez invité à vérifier que le form_id n'explique pas ce point d'attention, c'est-à-dire 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['access_token']; } //获取模板消息内容主体 //因为是测试所以写死,大家可以通过传参的方式获取 public function getMsg($openid,$template_id,$form_id,$emphasis_keyword='keyword1'){ $data['data']= ['keyword1'=>['value'=>'test1','color'=>''],'keyword2'=>['value'=>'test2','color'=>''],'keyword3'=>['value'=>'test1','color'=>'']];//内容主体 $data['touser'] = $openid;//用户的openid $data['template_id'] = $template_id;//从微信后台获取的模板id $data['form_id'] = $form_id;//前端提供给后端的form_id $data['page'] = 'pages/index/index';//小程序跳转页面 $data['emphasis_keyword'] = $emphasis_keyword;//选择放大的字体 return $data; } public function send($appid,secret,$openid,$template_id,$form_id){ $access_token = $this->getAccessToken($appid,secret); $send_url = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send? access_token=' . $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='text') { $cl = curl_init(); if(stripos($url, 'https://') !== 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['http_code']) && $status['http_code'] == 200) { if ($data_type == 'json') { $content = json_decode($content); } return $content; } else { return FALSE; } } public function curl_get($url, $data_type='text') { $cl = curl_init(); if(stripos($url, 'https://') !== 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['http_code']) && $status['http_code'] == 200) { if ($data_type == 'json') { $content = json_decode($content); } return $content; } else { return FALSE; } } punblic function index(){ $appid = 'xxx';//小程序appid $openid = 'xxx';//接收用户的openid $template_id = 'xxx';//从微信后台获取的模板id $form_id = 'xxx';//七天内的formid $data = $this->send($appid,secret,$openid,$template_id,$form_id); var_dump($data);//打印测试结果 }
Ce qui précède est le code pour envoyer des messages modèles. En fait, tant que vous obtenez quelques correspondants. paramètres, vous pouvez faire attention aux paramètres pertinents La fosse peut être testée et envoyée avec succès
Recommandations associées :
Méthode php pour implémenter l'envoi de message de modèle WeChat, message de modèle de lettre php
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!