E企盈营销工具技术服务商 热线:4006-838-530

微信小程序-----消息模版(最全解释)

E企盈直播平台营销卖货系统

最近小程序在码界里嫌弃腥风血雨,每一个码奴都感觉世界给自己又多开一个扇窗,本菜鸟也眼红不已,就尝试着写了一个小程序,今天跟大家分享一下自己在写消息模版时候遇到的坑,希望能帮助每一位路过踩坑的道友;文章目录1.写小程序消息模版第一步:配置消息推送2.消息模板3.发送模板消息1.写小程序消息模版第一步:配置消息推送1.1 登录微信公众平台,选择左侧侧边栏==>设置==>开发设置==>消息推送==> 启用1.2 配置消息推送url:小程序使用URL与小程序接口同;例如:https://www.1314520.com/api/checkSiginatureToken(令牌): 自己定义Token值;要与后端代码中Token同EncodingAESKey:随机生成就好,自定义也可消息加密方式:简易兼容模式数据格式:JOSN与XML根据个人习惯后端php 验证代码如下:private function checkSignature(){    $signature = $_GET[“signature”];    $timestamp = $_GET[“timestamp”];    $nonce = $_GET[“nonce”];     $token = TOKEN;    $tmpArr = array($token, $timestamp, $nonce);    sort($tmpArr, SORT_STRING);    $tmpStr = implode( $tmpArr );    $tmpStr = sha1( $tmpStr );     if($tmpStr == $signature){        return $_GET[‘echostr’]    }else{        return false    }}2.消息模板2.1.申请新消息模板消息模板只有在我的模板中才可以使用,首先我们可以根据自己需求在模板库中查找适合自己的,如果没有,就申请新的模板,选择模板时要注意,至少选择两个参数2.2.选用已存在的模板3.发送模板消息模板消息不能根据自己的想法任意发送,使用一个触发性事件;有两种情况触发1.表单提交(获取formid)2.支付(获取prepay_id)3.1 获取模板ID(1)通过模版消息管理接口获取模版ID(详见模版消息管理)(2)在微信公众平台手动配置获取模版ID(模块2.2,点击我的模板==>点击详情==>点击复制或手动复制写入代码中)3.2 获取formId 或 prepay_id页面的  组件,属性report-submit=true时,可以声明为需发模板消息,此时点击按钮提交表单可以获取formId,用于发送模板消息。或者当用户完成支付行为,可以获取prepay_id用于发送模板消息。注意:因为我们是在开发者工具中测试,所以得到的formId值为the formId is a mock one。在真机中我们可以得到一个具体的值,利用该值结合其他参数就可以发送模板消息啦,所以测试真实场景务必在真机中测试<form bindsubmit=”formSubmit” report-submit=’true’>  <view class=”section”>    <view class=”section__title”>input</view>    <input name=”input” placeholder=”please input here” />    <view>{{san}}</view>  </view>  <view class=”btn-area”>    <button formType=”submit”>Submit</button>  </view></form>  formSubmit: function (e) {//获取formId    console.log(e.detail.formId);  },3.3 调用接口下发模板消息解释官方文档参数:1.touser 用户在登录小程序获取,用户在小程序的唯一标示——openid2.template_id  所需下发的模板消息ID(模块3.1获取的模板ID)3.page 点击模板卡片后跳转的页面4.form_id 表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id(模块3.2获取)5.data 模板内容,不填下发为空,对应模板消息参数6.color 模板内容颜色(非必填)7.emphasis_keyword 模板需要放大的关键词,不填则默认无放大(非必填)以php代码为例,啥都不说。。。。放码过来:获取小程序token    private function getToken()    {        $appid = ‘小程序appid’;        $secret = ‘小程序secret’;        $url = “https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}”;        return $data = $this->curlGet($url);    }通过post请求发送消息模板    private function getHttpArray($url,$post_data) {        $ch = curl_init();        curl_setopt($ch, CURLOPT_URL, $url);        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);        // curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   //没有这个会自动输出,不用print_r();也会在后面多个1        curl_setopt($ch, CURLOPT_POST, 1);        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);        $output = curl_exec($ch);        curl_close($ch);        $out = json_decode($output);        return $out;    }通过get请求发送消息模板    private function curlGet($url) {        //1.初始化Curl        $curl = curl_init();        //设置curl传输选项        curl_setopt($curl, CURLOPT_URL, $url);//访问ip地址        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);//设置为FALSE 禁止 cURL 验证对等证书        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//设置为1或true时,获取的信息以字符串返回        $data = curl_exec($curl); //返回值        curl_close($curl);        $out = json_decode($data,true);        return $out;    }发送模板消息 public function smallWXmessage() {$data = <<<END{  “touser”: “OPENID”,  “template_id”: “TEMPLATE_ID”,  “page”: “index”,  “form_id”: “FORMID”,  “data”: {      “keyword1”: {          “value”: “339208499”      },      “keyword2”: {          “value”: “2015年01月05日 12:30”      },      “keyword3”: {          “value”: “粤海喜来登酒店”      } ,      “keyword4”: {          “value”: “广州市天河区天河路208号”      }  },  “emphasis_keyword”: “keyword1.DATA”}END;    $access = json_decode($this->getToken(),true);  //获取token    $access_token= $access[‘access_token’];    $url = “https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=” . $access_token;$data = $this->getHttpArray($url,$data);  //post请求urlreturn $data;}php中<<<END END定义字符串要注意,1.以<<<END开始标记开始,以END结束标记结束,结束标记必须**顶头写**,不能有缩进和空格,且在结束标记末尾要有分号 。2.开始标记和开始标记相同;但是不只限于END;比如常用大写的EOT、EOD、EOF来表示3.位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。好了,我们去请求一下试试,哇,哇,成功了,舒服。。。。。。看图好;我们现在已经成功发送了一个小程序消息,但是我想无线发送小程序模板消息可不可以呢?答案:在巨大的限制下是可以实现的限制1: 小程序发送消息必须由表单提交事件获取formid或者支付prepay_id才能推送限制2: formid、prepay_id的有效期都是7天,也就是说超过7天后,formid失效无法再发送。限制3: 一个formid有效期内只能发送一条模板消息给用户,一个prepay_id有效期内只能发送三条模板消息给用户实现方式:当用户使用小程序时,产生的formid、prepay_id我们根据用户id进行存储,如果用户活跃的情况下,我们可以实现无线发送小程序模板消息希望能帮助每一个愿意在程序世界遨游的道友,喜欢的小伙伴可收藏,感谢您的观赏不对的地方还希望多多批评和指出

赞(0) 打赏
未经允许不得转载:E企盈小程序开发-热线:4006-838-530 » 微信小程序-----消息模版(最全解释)
分享到: 更多 (0)
E企盈小程序直播营销卖货系统
E企盈直播平台营销卖货系统

评论 抢沙发

E企盈小程序开发

联系我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏