微信小程序发送模板消息详细教程

最近做了正在做一个微信小程序,在其中遇到了的一个难点,就是这个微信小程序的模板消息的发送,这个东西对于初学者的我来说,可是让我费了不少事,好了废话不多说,上干货!!
在这里我先附上我的相关学习视频(B站上好东西还不少):添加链接描述
一个忠告:你可以看着视频,同时结合这边文章,对你的代码进行修改

大家先来看一下这个功能的实际流程:不求看懂,只用知道我的大致流程基本就是按照这个来做的

首先第一步:获取openid(微信用户身份的证明)

在登陆的时候,或者在登陆后自己设置一个选项(按钮 或者view随意),让用户来触发事件

js代码

wx.login({success: res => {// 发送 res.code 到后台换取 openId, sessionKey, unionIdwx.request({url: '自己的服务器相关文件的URL',method: "POST",data: {code: res.code,},header: {"content-type": "application/x-www-form-urlencoded;charset=utf-8"},success: res1 => {var openid = res1.data.openid;}})}})

这里就来看看后台文件的相关代码:其中的appid与secret可以在微信公众品台上面找到,httpGet函数不用动直接调用就可以了

<?php$code = $_POST["code"];$appid="。。。。。";$secret="。。。。。";  $api="https://api.weixin.qq.com/sns/jscode2session?appid={$appid}&secret={$secret}&js_code={$code}&grant_type=authorization_code";function httpGet($url){$curl=curl_init();curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);curl_setopt($curl,CURLOPT_TIMEOUT,500);curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,true);curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,true);curl_setopt($curl,CURLOPT_URL,$url);$res=curl_exec($curl);curl_close($curl);return $res;    }$str=httpGet($api);echo $str;
?>

这样就可以在前台上面获取到用户或者自己的openid,这时候你可以把其存入到数据库里面,或者可是直接使用(这样的等同于给自己发了一条微信消息)

第二步:就是选择自己想要的消息模板

在微信公众平台上面,有一个模板消息板块,在哪里你可以添加你所需要的消息模板,当然了在里面你也可以自己申请适合自己的字段(但是或许字段已满,不会让你申请)

第三步:那就是正式发送微信模板消息

首先获取formid,及其要使用的信息,之后查询数据库,找到你想要的给谁发微信消息的openid,之后再次请求自己的服务器,把相应的数据传输过去(formid openid 还有微信模板上面你所需要的信息)让服务器来请求微信的服务器,来发送这个模板消息

设置按钮,来触发form事件,如果涉及到多按钮提交,你可以看看我这篇文章,或许对你有所帮助 添加链接描述

wxml代码:

<form bindsubmit="clickFormView" report-submit="true" class="form-view">
<view></view>
.....<button class="end_submit" form-type="submit">提交</button>
</form>

js代码:

   var formid = e.detail.formId;//这个必须要,微信公众号要求var values = e.detail.value;var name = values.input.split("+")[0];var style = values.input.split("+")[1];var kecheng = values.input.split("+")[2];//这几个是你传递的信息,需要你自己来获取,在微信开发者工具里面,你可以使用console.log来打印出来所有信息,选用你最需要的信息就可以了var openids = "";//查询数据库获取你所需要的openidwx.request({url: '.....',method: "POST",data: {//这里面的数据库看你的后台代码了sql: "select openid from wx_openid where tea_id='20190804100' or tea_id='" + app.globalData.userInfo['username'] + "'",type: 'select',fetch_type: 'assoc'//assoc字段索引,num数字索引},header: {"content-type": "application/x-www-form-urlencoded;charset=utf-8"},success: res => {openids = res.data;for (var a in openids) {if (openids[a]['openid'] == "") continue;wx.request({url: '后台模板URL',method: "POST",data: {name: name,time: time,style: style,kecheng: kecheng,formid: formid,openid: openids[a]['openid'],},header: {"content-type": "application/x-www-form-urlencoded;charset=utf-8"},success: res1 => {console.log("ok");} }) }} })

最后在来看看后台代码(只是其中之一):在这里把微信公众平台相应的模板id给复制到这个代码的变量templateid
还有在这里面记得 结尾END 前面不要加空格,不然会报错

<?phpfunction httpGet($url){$curl=curl_init();curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);curl_setopt($curl,CURLOPT_TIMEOUT,500);curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,true);curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,true);curl_setopt($curl,CURLOPT_URL,$url);   $res=curl_exec($curl);curl_close($curl);return $res;   }function httpPost($data,$url){$curl=curl_init();curl_setopt($curl,CURLOPT_URL,$url);curl_setopt($curl,CURLOPT_CUSTOMREQUEST,'POST');curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,false);curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,false);curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 10.0; WOW64)');curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1);curl_setopt($curl,CURLOPT_AUTOREFERER,1);curl_setopt($curl,CURLOPT_POSTFIELDS,$data);curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);$tmpInfo=curl_exec($curl);if(curl_errno($curl)){return curl_error($curl);}curl_close($curl);return $tmpInfo; }$openid=$_POST["openid"];$formid=$_POST["formid"];$name=$_POST["name"];$time=$_POST["time"];$style=$_POST["style"];$kecheng=$_POST["kecheng"];$templateid='。。。。。';$data = <<<END{"touser": "{$openid}","template_id": "{$templateid}","page": "/pages/login1/login1","form_id": "{$formid}","data": {"keyword1": {"value": "{$name}"},"keyword2": {"value": "{$time}"},"keyword3": {"value": "{$style}"} ,"keyword4": {"value": "{$kecheng}"}},"emphasis_keyword": "keyword3.DATA"}
END;$appid="。。。。";$secret="。。。。";$gettokenapi="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$secret}";$resultstr=httpGet($gettokenapi);$arr=json_decode($resultstr,true);$token=$arr['access_token'];//发送模板$templateapi="https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token={$token}";$res=httpPost($data,$templateapi);?>

最后说一下,这个代码并不会完全适合你,你需要做一些必要修改,祝你成功发送微信模板消息

微信小程序发送模板消息详细教程相关推荐

  1. php+实现群发微信模板消息_使用php实现微信小程序发送模板消息(附代码)

    本篇文章给大家带来的内容是关于使用php实现微信小程序发送模板消息(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 本章将会简单说一下微信小程序的模板消息发送,相对来说比较简 ...

  2. 《微信小程序——发送模板消息》详细步骤

    第一步:获取access_token 第一步详情:因为access_token在微信公众号还是小程序,在一个月之内都有获取次数的限制,并且一个access_token只有2小时的有效期:所以每当我们获 ...

  3. 微信小程序发送模板消息踩的坑

    在微信的微信小程序中,微信提供了和微信服务号相同的模板消息功能. 但是,虽然都是发送模板消息,小程序和服务号的模板消息的使用还是有差别的. 对于微信服务号的模板消息只要通过查看文档就能够知道我们使用模 ...

  4. 微信小程序发送模板消息,php发送模板消息

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. formId 在安卓系统是纯数字,在IOS系统是一串加密字符,如图: 发送模板消息(服务通知)效果图: 前端 ...

  5. 微信小程序 发送模板消息的功能实现

    背景 - 小程序开发的过程中,绝大多数会满足微信支付 - 那么,作为友好交互的体现,自然就会考虑到支付后的消息通知咯 - 所以,我的小程序项目也要求完成这个效果,so.分享一下自己的实现步骤,以方便道 ...

  6. java 微信小程序-发送模板消息

    开发前准备工作 登录微信公众平台-小程序后台,在模板消息里面设置需要发送的模板,拿到模板id. 地址: https://mp.weixin.qq.com 找到微信官方文档-小程序开发-下发小程序和公众 ...

  7. 微信小程序发送模板消息demo

    一.登陆微信公众号,选中模板消息,添加需要的模板, 二.在 .properties 配置文件中,记录模板ID 三.模板文件配置, -SendTemplateMessageController publ ...

  8. java发送微信小程序模板消息_微信小程序-发送模板消息

    1 添加一个小程序的消息模板,获取到模板id,存储到数据库中,方便以后修改调用 这里有个坑,就是 form_id, 这个是用户触发表单事件的表单id,需要存储到数据库中,给这个表单提交以后的数据,添加 ...

  9. 小程序发送模板消息给用户 —— 一次性模板实现“长期订阅”

    大家好!我是我玩亚索我会C,在写小程序时,我们会有向用户发送消息的需求,比如发送提醒通知,或者是一些重要通知来形成一个服务的闭环.这就要用到微信的发送消息功能了,下面我使用Java语言来详细演示下如何 ...

  10. php怎么实现发送给指定用户,微信小程序 实现模板消息群发、发送给指定用户...

    1. 需求 最近在做一款拼课类小程序,大概需求就是分享课程页面给好友,好友参与达到一定数量后则拼课成功. 好友参与后会给分享者发送一条模板消息 参与人数满足后(拼课成功)会给分享者发送一条模板消息 管 ...

最新文章

  1. 分布式概念-分布式系统是什么?
  2. python数据结构包括什么_Python中的数据结构详解
  3. The differences between capturing and bubbling
  4. xpath IE 7
  5. 【Spring-Boot】【入门 01】第一个 Spring Boot 程序
  6. java三大范_Java深度学习系列——数据库的三大范式
  7. Redis学习之集群(五)
  8. ansi编码_Java 字符编码
  9. 【AI视野·今日NLP 自然语言处理论文速览 第五期】Thu, 10 Jun 2021
  10. sublime Text3安装可以使xml格式化的插件
  11. ocr带单字坐标离线识别
  12. 潮流能模型matlab,基于matlab的yalmip最优潮流建模的Infeasible problem
  13. o2o模式的特点是什么 O2O商业模式与新零售有什么区别?
  14. element实现table表格序号递增的效果
  15. 二代神经计算棒NCS2+YOLOv3+ROS加速目标检测
  16. 10. logback详解,Flink流处理案例及Hive和Hbase的整合
  17. allgro pcb铜皮编辑_干货技巧-Allegro如何设置整体铜皮连接或设置单个管脚连接方式...
  18. 5G可以让万人演唱会中人人有网上?有它就行
  19. 「Computer Vision」Note on Kinetics and Two-Stream Inflated 3D ConvNets (I3D)
  20. Error response from daemon: Pool overlaps with other one on this address space

热门文章

  1. 泛联新安EDA系列——国内自主研发,首款集成双国军标的HDL代码缺陷管理平台VHawk
  2. linux so库反编译命令,使用IDA反编译.so文件并修改
  3. ubuntu下配置IP地址
  4. 【MySQL:查看自己数据库文件所在的位置】
  5. 概率论与数理统计在计算机知识的应用,概率论与数理统计在生活中的应用 (5)...
  6. presscad图层LIsp_presscad2010免费版
  7. Dynamic 365 中创建编码规则
  8. Flash Builder 4 破解
  9. GPS固定数据输出语句($GPGGA)
  10. PHP数组按字符串长度排序