第一步:获取access_token

第一步详情:因为access_token在微信公众号还是小程序,在一个月之内都有获取次数的限制,并且一个access_token只有2小时的有效期;所以每当我们获取一次access_token,就要反复利用;我这里的方法是将获得access_token存进一个数据表;然后每次先去表中查access_token;判断是否有效,过期则重新在去获取一次,在存到数据表中,更新时间。

下面是我存access_token数据表的结构:

//微信小程序获取access_token
function getTokens(){$appid='你们自己的';$appsecret='你们自己的';$mysql = new Mysql();$info = $mysql->fetchRow("select access_token_time,access_token from wx_account where appid='{$appid}' and appsecret='{$appsecret}'");$now=time();if($now-$info['access_token_time']<7000){$token = $info['access_token'];return $token;}else{$token_access = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";$tokening=curl_get($token_access);$tokens = json_decode($tokening["output"],true);$token =$tokens["access_token"];$arr = array('access_token_time'=>time(),'access_token'=>$token);$where = "appid='{$appid}' and appsecret='{$appsecret}'";$res = $mysql->update($arr,$where,'wx_account');unset($mysql);if($res){return $token;}}
}

第二步:获取formId

第二步详情:获取小程序端的formid,微信小程序在对表单form进行操作的时候,会产生formid,这个需要自己去获取formid;这个formid是小程序发送模板消息必要参数之一,并且一个formid有效期只有7天,只能够使用一次。下面是我获取formId的存进数据库的数据表:(注意一个在获取formId的同时,也要获取当前的openid);每次使用完formid,这个formid就不能在使用。

第三步:判断获取formId是否过期

第三步详情:formid有一个有效期7天,所以我们要判断你使用的formid是否在有效期内。根据当前时间和createTime字段进行判断。下面是方法,我使用递归的方法,如果在有效期内,返回这个formid;如果不在这个有效期内,则递归调用自身,直至有能够使用的formid。

//判断form_id是否过期
function form($openid)
{$mysql = new Mysql();$formId = $mysql->fetchRow("select * from zacg_formId where openid='{$openid}'and status=0 ");if(empty($formId)){return false;}$create_time = $formId['createTime'];$now_time = time();$cha_time = $now_time-($create_time+60*60*24*7);if($cha_time>0){$data = array('status'=> '2');$res=$mysql->update($data,"openid='{$openid}' and formId='{$formId["formId"]}'","zacg_formId");if($res){unset($mysql);return form($openid);}}else{unset($mysql);return $formId['formId'];}
}

第四步:传递模板数据

第四步详情:发送模板消息,模板的内容需要我们自己去配凑起来,首先要去你的微信公众平台申请一个模板消息,申请成功之后,微信会给你发送一个模板id;例如下图:

//传递模板数据
function data($keyword,$openid,$template_id,$page,$form_id)
{$data = array("touser" => $openid,//推送的人的openid"template_id" => $template_id,//模板id"page" => $page,//跳转路径"form_id" => $form_id,//form_id"data" => $keyword);$result = sendpassMessage($data);if($result['output']['errcode']==0){return true;}else{return false;}
}

第五步:发送模板消息

//发送小程序模板消息
function sendpassMessage($data)
{$token = getTokens();$template = $data;          //数组形式的模板内容$json_template = json_encode($template);$url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=".$token;$res = curl_post($url,urldecode($json_template));      //以post方式 向用户发送数据return $res;
}

第六步:接口(群发,循环数据库用户的openid,查找多个formid,然后群发模板消息,可在第四步之前获取数据,进行数据传递)

$keyword1= $activityInfo['title'];//活动主题
$keyword2= $activityInfo['address'];//会议地点
$keyword3= $activityInfo['limitNumber'];//参会人数
$keyword4= date("Y-m-d H:i:s",$activityInfo['startTime']) .'-'. date("Y-m-d H:i:s",$activityInfo['endTime']);//会议时间
$keyword5= "报名截止时间为". date("Y-m-d H:i:s",$activityInfo['deadline']);//温馨提示
$openidArr = $mysql->fetchRows("select openid from zacg_user where companyId={$companyId} and role in ({$role})");
foreach($openidArr as $k=>$v)
{$openid = "{$v['openid']}";$template_id = "UwvpxmzzqMBCoHd76ED4cr1GK94ps9584UJC70lXjRY";$page = "pages/activityList/activityDetails/activityDetails?id=".$activityInfo['id'];$form_id = form($openid);$formStatus = array('status'=>'1');$keyword = array('keyword1'=>array("value" => $keyword1),//活动主题'keyword2'=>array("value" => $keyword2),//会议地点'keyword3'=>array("value" => $keyword3),//参会人数'keyword4'=>array("value" => $keyword4),//会议时间'keyword5'=>array("value" => $keyword5),//温馨提示
);
$result = data($keyword,$openid,$template_id,$page,$form_id);$mysql->update($formStatus,"formId='{$form_id}'","zacg_formId");//1表示已经使用
}

注意:以上代码中的sql语句是我所在公司的框架中的写法,需要的换成你们自己的写法即可。

http://www.ahhfit.top/news/1044.html

《微信小程序——发送模板消息》详细步骤相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. NOIP2013 货车运输
  2. Perfect Security (01字典树删除点)
  3. 考考大家的数学,计算以下计算公式的结果
  4. 【渝粤教育】电大中专微生物与寄生虫基础作业 题库
  5. 远程访问数据库出错的解决办法
  6. 非科班出身,如何成为程序员?
  7. mybatis 一对一、一对多查询、多对多(使用注解)
  8. 这就是程序员被大厂偏爱的实力!
  9. html显示数据库的数据类型,将HTML插入mysql数据库,显示E类型
  10. 开机提示对话框“位置不可用”
  11. nodejs学习—安装
  12. Java学习电子书大全
  13. 最好用的 5 款 React 富文本编辑器
  14. 多终端房地产项目管理系统源码,源码分享
  15. 各类免费的的机器人仿真软件优缺点汇总
  16. 什么是私有云?私有云有哪些优势和劣势?
  17. 论文笔记1:Full-Spectrum Denoising of High-SNR Hyperspectral Images
  18. 【C语言】(用函数实现)任意给定两个正整数a和n,计算a+aa+aaa+aa...(n个a)的和。(例如输入1,3即为计算1+11+111的值)。
  19. android 虚拟按键遮挡布局,完美解决虚拟按键遮盖底部视图的问题
  20. 常见latch闩锁等待

热门文章

  1. 西门子S7-1200PLC和KTP700触摸屏通过USS协议控制MM420变频器
  2. java毕业生设计房屋租赁平台计算机源码+系统+mysql+调试部署+lw
  3. 【杭电oj】2089 - 不要62(打表)
  4. 记录python开发第一个app,实现word转html的桌面应用
  5. 面试前夕,我建议你还是先来看看阿里和京东面试都问些啥?
  6. 作业1 OO基础1-3、 设计一个教师类Teacher(属于cn.net.sdkd包)
  7. pg_restore恢复备份(记录一下)
  8. 论文工具大全+软件简介
  9. sql/oracle数据库之取整函数round()、ceil()、floor()等等及示例
  10. CSS 文字下划线间距