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 相关文章推荐
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
Feb 11 PHP
phpmyadmin 3.4 空密码登录的实现方法
May 29 PHP
php 广告调用类代码(支持Flash调用)
Aug 11 PHP
php长字符串定义方法
Jul 12 PHP
深入分析php之面向对象
May 15 PHP
ThinkPHP中自定义目录结构的设置方法
Aug 15 PHP
PHP中使用hidef扩展代替define提高性能
Apr 09 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
Dec 19 PHP
PHP数组实例详解
Jun 26 PHP
PHP+MySQL高并发加锁事务处理问题解决方法
Apr 30 PHP
PHP数组常用函数实例小结
Aug 20 PHP
浅谈PHP5.6 与 PHP7.0 区别
Oct 09 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中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
php中如何同时使用session和cookie来保存用户登录信息
2013/07/05 PHP
使用PHP强制下载PDF文件示例
2014/01/17 PHP
微信公众平台实现获取用户OpenID的方法
2015/04/15 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
2015/08/08 PHP
laravel 使用事件系统统计浏览量的实现
2019/10/16 PHP
js 格式化时间日期函数小结
2010/03/20 Javascript
Javascript中string转date示例代码
2013/11/01 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
2013/12/06 Javascript
jquery实现的3D旋转木马特效代码分享
2015/08/25 Javascript
使用jquery.form.js实现图片上传的方法
2016/05/05 Javascript
json传值以及ajax接收详解
2016/05/24 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
微信小程序实现弹出菜单
2018/07/19 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
2018/09/25 Javascript
javaScript实现游戏倒计时功能
2018/11/17 Javascript
微信小程序吸底区域适配iPhoneX的实现
2020/04/09 Javascript
JavaScript实现10秒后再次获取验证码
2020/12/02 Javascript
python求pi的方法
2014/10/08 Python
使用Python写CUDA程序的方法
2017/03/27 Python
浅析Python数据处理
2018/05/02 Python
Python3中的最大整数和最大浮点数实例
2019/07/09 Python
python实现将视频按帧读取到自定义目录
2019/12/10 Python
Python并发concurrent.futures和asyncio实例
2020/05/04 Python
Python利用Faiss库实现ANN近邻搜索的方法详解
2020/08/03 Python
你可能不熟练的十个前端HTML5经典面试题
2018/07/03 HTML / CSS
数据库什么时候应该被重组
2012/11/02 面试题
春季防火方案
2014/05/10 职场文书
财务人员担保书
2014/05/13 职场文书
电影小兵张嘎观后感
2015/06/03 职场文书
追讨欠款律师函
2015/06/24 职场文书
高中升旗仪式主持词
2015/07/03 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书
MYSQL如何查看进程和kill进程
2022/03/13 MySQL
Python用tkinter实现自定义记事本的方法详解
2022/03/31 Python
速龙x4-860k处理器相当于i几
2022/04/20 数码科技