文章目录
1.写小程序消息模版第一步:配置消息推送1.1登录微信公众平台,选择左侧侧边栏==设置==开发设置==消息推送==启用
url:小程序使用URL与小程序接口同;例如:
Token(令牌):自己定义Token值;要与后端代码中Token同
EncodingAESKey:随机生成就好,自定义也可
消息加密方式:简易兼容模式
数据格式:JOSN与XML根据个人习惯
后端php验证代码如下:
privatefunctioncheckSignature(){$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{returnfalse}}
2.消息模板2.1.申请新消息模板
消息模板只有在我的模板中才可以使用,首先我们可以根据自己需求在模板库中查找适合自己的,如果没有,就申请新的模板,选择模板时要注意,至少选择两个参数
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值为theformIdisamockone。在真机中我们可以得到一个具体的值,利用该值结合其他参数就可以发送模板消息啦,所以测试真实场景务必在真机中测试
formbindsubmit="formSubmit"report-submit='true'viewviewinput/viewinputname="input"placeholder="pleaseinputhere"/view{{san}}/view/viewviewbuttonformType="submit"Submit/button/view/formformSubmit:function(e){//获取formIdconsole.log(e.detail.formId);},3.3调用接口下发模板消息
获取小程序token
privatefunctiongetToken(){$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请求发送消息模板
privatefunctiongetHttpArray($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();也会在后面多个1curl_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请求发送消息模板
privatefunctioncurlGet($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;}发送模板消息
publicfunctionsmallWXmessage(){$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中ENDEND定义字符串要注意,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进行存储,如果用户活跃的情况下,我们可以实现无线发送小程序模板消息
希望能帮助每一个愿意在程序世界遨游的道友,喜欢的小伙伴可收藏,感谢您的观赏不对的地方还希望多多批评和指出













