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世纪万年历
Dec 06 PHP
攻克CakePHP系列三 表单数据增删改
Oct 22 PHP
PHP教程 变量定义
Oct 23 PHP
php 数组的一个悲剧?
May 11 PHP
PHP句法规则详解 入门学习
Nov 09 PHP
php查找任何页面上的所有链接的方法
Dec 03 PHP
PHP中使用break跳出多重循环代码实例
Jan 21 PHP
php二维数组合并及去重复的方法
Mar 04 PHP
PHP简单处理表单输入的特殊字符的方法
Feb 03 PHP
既简单又安全的PHP验证码 附调用方法
Jun 02 PHP
php生成图片缩略图功能示例
Feb 22 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
Nov 24 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
将数字格式的计算结果转为汉字格式
2006/10/09 PHP
PHP产生随机字符串函数
2006/12/06 PHP
常见PHP数据库解决方案分析介绍
2015/09/24 PHP
深入讲解PHP的Yii框架中的属性(Property)
2016/03/18 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
2017/01/30 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
PHP中抽象类,接口功能、定义方法示例
2019/02/26 PHP
一个js的tab切换效果代码[代码分离]
2010/04/11 Javascript
图片onload事件触发问题解决方法
2011/07/31 Javascript
JS实现点击链接取消跳转效果的方法
2014/01/24 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
js实现多选项切换导航菜单的方法
2015/02/06 Javascript
javascript实现完美拖拽效果
2015/05/06 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
2017/02/05 Javascript
微信小程序开发教程之增加mixin扩展
2017/08/09 Javascript
教你用Cordova打包Vue项目的方法
2017/10/17 Javascript
js中如何完美的解析数据
2018/03/18 Javascript
微信小程序实现循环动画效果
2018/07/16 Javascript
详解JavaScript函数callee、call、apply的区别
2019/03/08 Javascript
基于JavaScript判断两个对象内容是否相等
2020/01/10 Javascript
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
python批量提交沙箱问题实例
2014/10/08 Python
python模块smtplib实现纯文本邮件发送功能
2018/05/22 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
24式加速你的Python(小结)
2019/06/13 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
2020/09/23 Python
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
Too Faced官网:美国知名彩妆品牌
2017/03/07 全球购物
经济管理专业毕业生推荐信
2013/11/11 职场文书
技术经理的自我评价范文
2013/12/03 职场文书
大学考试作弊检讨书
2014/01/30 职场文书
中年人生感言
2014/02/04 职场文书
新文化运动的口号
2014/06/21 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
感恩教育观后感
2015/06/17 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript