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 相关文章推荐
php SQL防注入代码集合
Apr 25 PHP
PHP Array交叉表实现代码
Aug 05 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
Dec 16 PHP
解析mysql left( right ) join使用on与where筛选的差异
Jun 18 PHP
PHP实现获取图片颜色值的方法
Jul 11 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
May 08 PHP
php的闭包(Closure)匿名函数初探
Feb 14 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
Jun 17 PHP
PHP目录操作实例总结
Sep 27 PHP
php curl优化下载微信头像的方法总结
Sep 07 PHP
使用Laravel中的查询构造器实现增删改查功能
Sep 03 PHP
PHP7生产环境队列Beanstalkd用法详解
May 19 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连接access数据库
2008/03/27 PHP
解析php时间戳与日期的转换
2013/06/06 PHP
深入讲解PHP Session及如何保持其不过期的方法
2015/08/18 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
2017/07/09 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
Javascript 自定义类型方法小结
2010/03/02 Javascript
jquery 学习笔记一
2010/04/07 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
2011/04/27 Javascript
基于javascipt-dom编程 table对象的使用
2013/04/22 Javascript
解析使用js判断只能输入数字、字母等验证的方法(总结)
2013/05/14 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
2014/01/17 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
angularJS 中$scope方法使用指南
2015/02/09 Javascript
jQuery实现表格颜色交替显示的方法
2015/03/09 Javascript
原生js和css实现图片轮播效果
2017/02/07 Javascript
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
使用 Vue 绑定单个或多个 Class 名的实例代码
2018/01/08 Javascript
几个你不知道的技巧助你写出更优雅的vue.js代码
2018/06/11 Javascript
vue展示dicom文件医疗系统的实现代码
2018/08/27 Javascript
详解将微信小程序接口Promise化并使用async函数
2019/08/05 Javascript
vue项目中使用bpmn-自定义platter的示例代码
2020/05/11 Javascript
JS实现手风琴特效
2020/11/08 Javascript
详解Python的单元测试
2015/04/28 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
Python3 使用cookiejar管理cookie的方法
2018/12/28 Python
GUESS西班牙官方网上商城:美国服饰品牌
2017/03/15 全球购物
兰兰过桥教学反思
2014/02/08 职场文书
母亲节感恩寄语
2014/02/21 职场文书
干部鉴定材料
2014/05/18 职场文书
好听的队名和口号
2014/06/09 职场文书
志愿者活动总结报告
2014/06/27 职场文书
教师一帮一活动总结
2014/07/08 职场文书
公司开会通知
2015/04/20 职场文书
个人售房合同协议书
2016/03/21 职场文书