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 相关文章推荐
我的群发邮件程序
Oct 09 PHP
通用PHP动态生成静态HTML网页的代码
Mar 04 PHP
比较好用的PHP防注入漏洞过滤函数代码
Apr 11 PHP
利用php+mcDropdown实现文件路径可在下拉框选择
Aug 07 PHP
php实现监控varnish缓存服务器的状态
Dec 30 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
Sep 10 PHP
thinkphp多层MVC用法分析
Dec 30 PHP
PHP中如何防止外部恶意提交调用ajax接口
Apr 11 PHP
thinkphp3.x中cookie方法的用法分析
May 19 PHP
smarty循环嵌套用法示例分析
Jul 19 PHP
Laravel中unique和exists验证规则的优化详解
Jan 28 PHP
PHP的静态方法与普通方法用法实例分析
Sep 26 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 ADODB使用方法集锦
2008/03/25 PHP
PHP编程最快明白(第一讲 软件环境和准备工作)
2010/10/25 PHP
深入理解PHP原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
2019/07/26 PHP
PHP Swoole异步Redis客户端实现方法示例
2019/10/24 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
javascript 网页跳转的方法
2008/12/24 Javascript
JavaScript 变量基础知识
2009/11/07 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
jquery取消选择select下拉框示例代码
2014/02/22 Javascript
iframe子页面与父页面在同域或不同域下的js通信
2014/05/07 Javascript
根据配置文件加载js依赖模块
2014/12/29 Javascript
限制上传文件大小和格式的jQuery插件实例
2015/01/24 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
2015/12/24 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
详解如何构建Angular项目目录结构
2017/07/13 Javascript
详解Node.js模板引擎Jade入门
2018/01/19 Javascript
vue解决弹出蒙层滑动穿透问题的方法
2018/09/22 Javascript
详解在微信小程序的JS脚本中使用Promise来优化函数处理
2019/03/06 Javascript
Vue 幸运大转盘实现思路详解
2019/05/06 Javascript
详解Vue-Router源码分析路由实现原理
2019/05/15 Javascript
详解Vue2的diff算法
2021/01/06 Vue.js
[01:03:36]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第二场 1月26日
2021/03/11 DOTA
Python使用Scrapy爬取妹子图
2015/05/28 Python
python3编码问题汇总
2016/09/06 Python
Python实现将文本生成二维码的方法示例
2017/07/18 Python
Python字符编码与函数的基本使用方法
2017/09/30 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
Pycharm更换python解释器的方法
2018/10/29 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
Python模块zipfile原理及使用方法详解
2020/08/04 Python
python进度条显示之tqmd模块
2020/08/22 Python
10个最常见的HTML5面试题 附答案
2016/06/06 HTML / CSS
商务日语毕业生自荐信
2013/11/23 职场文书
运动会广播稿20字
2014/02/18 职场文书