PHP实现小程序批量通知推送


Posted in PHP onNovember 27, 2018

本文实例为大家分享了PHP实现小程序批量通知推送的具体代码,供大家参考,具体内容如下

基本效果如下:

PHP实现小程序批量通知推送

PHP实现小程序批量通知推送

具体实现如下:

1.配置模板

PHP实现小程序批量通知推送

2.从小程序获取formId,传到后台存到表里

下发条件说明

1).支付

当用户在小程序内完成过支付行为,可允许开发者向用户在7天内推送有限条数的模板消息(1次支付可下发3条,多次支付下发条数独立,互相不影响)

2).提交表单

当用户在小程序内发生过提交表单行为且该表单声明为要发模板消息的,开发者需要向用户提供服务时,可允许开发者向用户在7天内推送有限条数的模板消息(1次提交表单可下发1条,多次提交下发条数独立,相互不影响)

wxml

<form bindsubmit="getFormId" report-submit="true">
  <button formType='submit'>获取formId</button>
</form>

js

getFormId:function(e){
 let formId = e.detail.formId;
 //得到formId,将formId传到后台存储到表里
}

我的表是这么建的:

createTime用来判断是否超过七天
used用来判断是否使用过这个formId

PHP实现小程序批量通知推送

3.PHP后台实现推送

一共使用两个提供的api

1).获取小程序 access_token

请求地址

GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

2).发送模板消息

请求地址

POST https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=ACCESS_TOKEN

php完整代码:

//需要修改的字段
//1.小程序AppId,小程序secret,去微信公众平台找
//2.表名,时间字段
//3.模板ID,去我的模板里找
//4.跳转地址,你知道的
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=小程序AppId&secret=小程序secret';
   $info = file_get_contents($url);
   $json = json_decode($info);/*对json数据解码*/
   $arr = get_object_vars($json);
   $access_token = $arr['access_token'];
   
   function send_post( $url, $post_data ) {
   $options = array(
    'http' => array(
     'method' => 'POST',
     'header' => 'Content-type:application/json',/*header 需要设置为 JSON*/
     'content' => $post_data,
     'timeout' => 60/*超时时间*/
    )
   );
   $context = stream_context_create( $options );
   $result = file_get_contents( $url, false, $context );
   return $result;
 };
 
 $sql = "SELECT * FROM 表名 where date_sub(curdate(), INTERVAL 6 DAY) <= date(时间字段) and used=0 group by openid";
 $rs = $pdo->query($sql);
 $row = $rs->fetchAll();
 $resultsArr = array();
 $updateArr = array();
 $successNum = 0;
 $title = $_GET['title'];
 $time = date('y年m月d日 h:i',time());
 for($i=0;$i<count($row);$i++){
  $openid = $row[$i]['openid'];
  $formid = $row[$i]['formId'];
  $id = $row[$i]['id'];
  $post_data = array(
   "touser"=> $openid,
   "template_id"=> "模板ID",
   "page"=> "跳转地址",
   "form_id"=> $formid,
   "data"=> array(
    "keyword1"=> array(
       "value"=> $title
     ),
     "keyword2"=> array(
       "value"=> $time
     ),
     "keyword3"=> array(
       "value"=> "戳我进入涂呀首页查看"
     )),
   // "emphasis_keyword"=> "keyword1.DATA"  设置大字,自己试试就知道了
  ); 
  $post_data = json_encode($post_data);
  $postResults = send_post('https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token='.$access_token, $post_data);
  $res = json_decode($postResults);
  $res = get_object_vars($res);
  $errcode = $res['errcode'];
  if($errcode==0){
  $sql1 = "update formIdList set used=1 where id=$id";
  $pdo->exec($sql1);
  $successNum+=1;
  };
  array_push($resultsArr, array('errcode'=>$errcode));
 };
 $Results = array(
     'code'=>1,
     'Results'=>array(
     'successNum'=>$successNum,
     'resultsArr'=>$resultsArr
     ),
     'msg'=>''
   );
   $Results = json_encode($Results);
   echo $Results;

文档:地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
真正面向对象编程:PHP5.01发布
Oct 09 PHP
PHP伪静态写法附代码
Jun 20 PHP
PHP中调用ASP.NET的WebService的代码
Apr 22 PHP
php引用计数器进行垃圾收集机制介绍
Sep 19 PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
Feb 28 PHP
利用php绘制饼状图的实现代码
Jun 07 PHP
解析csv数据导入mysql的方法
Jul 01 PHP
常见的四种POST 提交数据方式(小总结)
Oct 08 PHP
PHP获取昨天、今天及明天日期的方法
Feb 03 PHP
PHP邮件群发机实现代码
Feb 16 PHP
Yii2中如何使用modal弹窗(基本使用)
May 30 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
Sep 17 PHP
Laravel学习笔记之Artisan命令生成自定义模板的方法
Nov 22 #PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
Nov 20 #PHP
phpMyAdmin通过密码漏洞留后门文件
Nov 20 #PHP
ThinkPHP5 的简单搭建和使用详解
Nov 15 #PHP
关于php unset对json_encode的影响详解
Nov 14 #PHP
PHP集成环境XAMPP的安装与配置
Nov 13 #PHP
python进程与线程小结实例分析
Nov 11 #PHP
You might like
PHP filter_var() 函数 Filter 函数
2012/04/25 PHP
PHP微信开发之文本自动回复
2016/06/23 PHP
详解cookie验证的php应用的一种SSO解决办法
2017/10/20 PHP
详解PHP文件的自动加载(autoloading)
2018/02/04 PHP
使用ucenter实现多站点同步登录的讲解
2019/03/21 PHP
PHP Cli 模式设置进程名称的方法
2019/06/12 PHP
phpcmsv9.0任意文件上传漏洞解析
2020/10/20 PHP
让iframe自适应高度(支持XHTML,支持FF)
2007/07/24 Javascript
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
javascript new一个对象的实质
2010/01/07 Javascript
基于JQuery 的消息提示框效果代码
2011/07/31 Javascript
javascript禁用Tab键脚本实例
2013/11/22 Javascript
浅谈Javascript 数组与字典
2015/01/29 Javascript
JQuery中节点遍历方法实例
2015/05/18 Javascript
如何利用AngularJS打造一款简单Web应用
2015/12/05 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
微信小程序商品到详情的实现
2017/06/27 Javascript
ES6中数组array新增方法实例总结
2017/11/07 Javascript
微信小程序使用image组件显示图片的方法【附源码下载】
2017/12/08 Javascript
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
2020/02/12 Javascript
在VUE中使用lodash的debounce和throttle操作
2020/11/09 Javascript
[01:04:05]VG vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python中的os.path路径模块中的操作方法总结
2016/07/07 Python
Python信息抽取之乱码解决办法
2017/06/29 Python
Python基于wordcloud及jieba实现中国地图词云图
2020/06/09 Python
经济学人订阅:The Economist
2018/07/19 全球购物
2013年大学生的自我鉴定
2013/10/24 职场文书
经贸日语专业个人求职信
2013/12/13 职场文书
学生感冒英文请假条
2014/02/04 职场文书
美术教学感言
2014/02/22 职场文书
离婚财产处理协议书
2014/09/30 职场文书
退休欢送会致辞
2015/07/31 职场文书
90条交通安全宣传标语
2019/10/12 职场文书
springboot入门 之profile设置方式
2022/04/04 Java/Android
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis