博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php三方网站使用微信公众号推送文章
阅读量:5256 次
发布时间:2019-06-14

本文共 4494 字,大约阅读时间需要 14 分钟。

//获取accesstoken 的方法 public function index(){    $appId = 'wxd0e50fe967dccccc';    $appSecret = 'd7f6be12ce41b60ss0f45054';//虚拟的,不要用    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appId."&secret=".$appSecret;    $ch = curl_init();//初始化curl    curl_setopt($ch, CURLOPT_URL,$url); //要访问的地址    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//跳过证书验证    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在    $data = json_decode(curl_exec($ch));    if(curl_errno($ch)){      var_dump(curl_error($ch)); //若错误打印错误信息    }    var_dump($data); //打印信息         curl_close($ch);//关闭curl  }

获取accesstoken 的第二种方法,将accesstoken存在text文件中每隔2小时刷新一次

access_token){ $token_file = fopen("token.txt","w") or die("Unable to open file!");//打开token.txt文件,没有会新建 fwrite($token_file,$data->access_token);//重写tken.txt全部内容 fclose($token_file);//关闭文件流 }else{ echo $data->errmsg; } curl_close($ch); } //设置定时器,每两小时执行一次build_access_token()函数获取一次access_token public static function set_interval(){ ignore_user_abort();//关闭浏览器仍然执行 set_time_limit(0);//让程序一直执行下去 $interval = 7200;//每隔一定时间运行 do{ build_access_token(); sleep($interval);//等待时间,进行下一次操作。 }while(true); } //读取token public static function read_token(){ $token_file = fopen("token.txt", "r") or die("Unable to open file!"); $rs = fgets($token_file); fclose($token_file); return $rs; }}?>

 

当然ACCESS_TOKEN是会过期的

自己需要整合这个api自动获取
我们学习过程中做测试可以直接获取粘贴上去。
当然调用这个接口需要配置IP白名单
如果获取过程中出现一串英文,里面有IP地址,就说明你还没配置IP白名单
你需要进入公众号后台安全中心-IP白名单-粘贴提示的IP地址即可

如果你要给指定的openID群发模板消息

例如你公司做教育培训服务的
有3个学生报了你们公司的某课程培训班
你需要在上课前15分钟主动向每个学生的微信推送模板消息通知上课
那么这三个学生需要关注你的服务号
你还要获取到这三个学生的openID
然后存入数组中,遍历数组发送即可。

获取openID的方法

1、配置回调域名
进入公众号,接口权限,找到网页服务,网页获取用户基本信息

进去修改你的域名即可

新建oauth.php

 

配置用户要访问的网页

REDIRECT_URI是回调链接

就是上面的oauth.php的地址
例如你的域名是
www.baidu.com
你把oauth.php上传到根目录
那么URL转码的回调链接就是

回调链接需要URL转码

给大家提供一个转码工具

 

最终的回调链接是

http%3A%2F%2Fwww.baidu.com%2Foauth.php

例如的你APPID是:wx66666666666666

整个用户要访问的网页就是
://www.baidu.com/oauth.php&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

用户访问的网页也需要URL转码

最终的网址是:
https%3A%2F%2Fopen.weixin.qq.com%2Fconnect%2Foauth2%2Fauthorize%3Fappid%3Dwx66666666666666%26redirect_uri%3Dhttp%3A%2F%2Fwww.baidu.com%2Foauth.php%26response_type%3Dcode%26scope%3DSCOPE%26state%3DSTATE%23wechat_redirect

然后用微信访问上面的最终的网址,就会返回一串JSON数据,里面有openid

要想获得3个学生的openid那么就要这三个学生点进去,获取发给你

下面就是模板消息推送给指定的openid的代码

我就以这三个学生的openid为例

"; }}//获取发送数据数组function getDataArray($value){ $data = array( 'touser' => $value, //要发送给用户的openid 'template_id' => "mfopDNUlvoBGGsPLB-d_nrfL8Je92xnTq5vk5ZBxL-w",//改成自己的模板id,在微信后台模板消息里查看 'url' => "http://mp.weixin.qq.com/s/8UWPqHVa8PReWZp-No0ebA", //自己网站链接url 'data' => array( 'first' => array( 'value' => "亲爱的同学,您有考试提醒,请查阅。", 'color' => "#000" ), 'keyword1' => array( 'value' => "2017下半年教师资格证面试", 'color' => "#f00" ), 'keyword2' => array( 'value' => "2018-1-6", 'color' => "#173177" ), 'keyword3' => array( 'value' => "请看您的准考证", 'color' => "#3d3d3d" ), 'keyword4' => array( 'value' => "教师资格证试讲", 'color' => "#3d3d3d" ), 'keyword5' => array( 'value' => "答辩,选题,结构化", 'color' => "#3d3d3d" ), 'remark' => array( 'value' => "\n现在是打印准考证时间,请您在考试前打印准考证,戳进来可以查看详情>>>", 'color' => "#3d3d3d" ), ) ); return $data;}//curl请求函数,微信都是通过该函数请求function https_request($url, $data = null){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); if (!empty($data)) { curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($curl); curl_close($curl); return $output;}?>

 新建test.php

拷贝代码
修改你的
ACCESS_TOKEN
修改你的学生的3个openid
修改你的模板ID
模板ID是什么?
就是你要推送的那个卡片的模板
例如支付成功模板,上课通知模板,发货模板....

 

 

转载于:https://www.cnblogs.com/ql-smile/p/10005582.html

你可能感兴趣的文章
Silverlight 的菜单控件。(不是 Toolkit的)
查看>>
jquery的contains方法
查看>>
linux后台运行和关闭SSH运行,查看后台任务
查看>>
桥接模式-Bridge(Java实现)
查看>>
303. Range Sum Query - Immutable
查看>>
C# Dynamic通用反序列化Json类型并遍历属性比较
查看>>
前台freemark获取后台的值
查看>>
Spring-hibernate整合
查看>>
exit和return的区别
查看>>
Django 相关
查看>>
Python(软件目录结构规范)
查看>>
codeforces水题100道 第二十二题 Codeforces Beta Round #89 (Div. 2) A. String Task (strings)
查看>>
c++||template
查看>>
条件断点 符号断点
查看>>
.net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串------(转)...
查看>>
python的多行注释
查看>>
连接Oracle需要jar包和javadoc文档的下载
查看>>
Dreamweaver cc新版本css单行显示
查看>>
【android】安卓的权限提示及版本相关
查看>>
Java基础教程——网络基础知识
查看>>