PHP发送公众号模板消息
<?php
/*
* 模板消息发送,电脑端测试时需要手动填写openid
* 微信端会自动获取当前openid发送无需填写
*/
header("Content-type: text/html; charset=utf-8");
date_default_timezone_set("Asia/Shanghai"); $temp = new template(); if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) {
if (!empty($_GET['code'])) {
$openid = $temp->GetOpenid();
if ($openid) {
$result = $temp->sendMsg($openid);
if ($result['errmsg'] == 'ok') {
echo '<script>alert("发送成功!");</script>';
} else {
echo '发送失败!' . $result['errmsg'];
}
} else {
echo '<script>alert("获取openID失败!");</script>';
}
} else {
$temp->GET_Code();
}
} else {
echo '<script>alert("发送模板需要先获取openID!");</script>';
$openid='orpdAwprTZvFaUwPDfW4WSanlZIk';
$result = $temp->sendMsg($openid);
if ($result['errmsg'] == 'ok') {
echo '<script>alert("发送成功!");</script>';
} else {
echo '发送失败!' . $result['errmsg'];
}
} class template { public $appid = "xxxxxxxx";
public $secret = "xxxxxxxxxxxx"; public function sendMsg($openid) { $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $this->appid . "&secret=" . $this->secret;
//获取access_token
$resultData = $this->https_getRequest($url);
$access_token = $resultData["access_token"]; //$openid = 'orpdAwprTZvFaUwPDfW4WSanlZIk';
$templateid = 'hpTqa6GaczDqeIzuvfWqOiVHNm080yXH1yGnJKHC6jQ';
$title = "模板消息发送成功!";
$data1 = "测试模板消息发送";
$data2 = "开发员!";
$data3 = date("Y年m月d日 H:i", time());
$remark = "当前为测试模板可任意指定内容,但实际上正式帐号的模板消息,只能从模板库中获得"; $url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" . $access_token;
/*
* @miniprogram 跳小程序所需数据,不需跳小程序可不用传该数据
* @appid appid必须与发模板消息的公众号是绑定关联关系)
* @pagepath 所需跳转到小程序的具体页面路径,支持带参数,(示例index?foo=bar)
*/ $data = '{
"touser":"' . $openid . '",
"template_id":"' . $templateid . '",
"url":"http://www.wxwytime.com/index.php?g=Wap&m=Index&a=search&token=lypzib1465694885",
"miniprogram":{
"appid":"",
"pagepath":""
},
"data":{
"first": {
"value":"' . $title . '",
"color":"#7A378B"
},
"keyword1":{
"value":"' . $data1 . '",
"color":"#787878"
},
"keyword2": {
"value":"' . $data2 . '",
"color":"#787878"
},
"keyword3": {
"value":"' . $data3 . '",
"color":"#787878"
},
"remark":{
"value":"' . $remark . '",
"color":"#C5C1AA"
}
}
}';
$send = $this->https_request($url, $data);
$send = json_decode($send, true);
return $send;
} //发起获得code值链接
public function GET_Code() {
$get_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" . $this->appid;
$url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
header("location:" . $get_url . "&redirect_uri=" . $url . "&response_type=code&scope=snsapi_base&state=1#wechat_redirect");
} //获取用户openid
public function GetOpenid() {
$get_token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $this->appid . '&secret=' . $this->secret . '&code=' . $_GET['code'] . '&grant_type=authorization_code';
$json_obj = $this->https_getRequest($get_token_url);
// $access_token = $json_obj['access_token'];
return $json_obj['openid'];
} /*
* 获取数据
*/ public function https_getRequest($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
$jsonData = json_decode($output, true);
return $jsonData;
} //通用数据处理方法发送模板消息
public 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;
} }
PHP发送公众号模板消息的更多相关文章
- Laravel框架中通过EasyWeChat发送公众号模板消息
环境要求 PHP >= 7.0 PHP cURL 扩展 PHP OpenSSL 扩展 PHP SimpleXML 扩展 PHP fileinfo 拓展 使用composer安装: $ compo ...
- C#开发微信门户及应用(27)-公众号模板消息管理
通过模板消息接口,公众号能向关注其账号的用户发送预设模板的消息.模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等.不支持广告等营销类消 ...
- 【C#版本】微信公众号模板消息对接(一)(图文详解)
特此说明:本篇文章为个人原创文章,创作不易,未经作者本人同意.许可等条件,不得以任何形式搬运.转载.抄袭(等包括但不限于此手段)本文章,否则保留追究有关侵权人责任的权利 一.认识微信公众号模板消息 什 ...
- 【C#版本】微信公众号模板消息对接(二)(图文详解)
本篇文章承接上一篇文章内容,点击此段文字传送至上一篇文章. 特此说明:本篇文章为个人原创文章,创作不易,未经作者本人同意.许可等条件,不得以任何形式搬运.转载.抄袭(等包括但不限于上述手段)本文章,否 ...
- Java对接微信公众号模板消息推送
内容有点多,请耐心! 最近公司的有这个业务需求,又很凑巧让我来完成: 首先想要对接,先要一个公众号,再就是开发文档了:https://developers.weixin.qq.com/doc/offi ...
- 微信公众号 模板消息 定时推送 java
前提:业务需要,要做一个关于月报的微信消息推送.即每个月定时自动发送一条消息 给关注 公众号的人 用的是 公众号的测试账号(实际开发需要认证的公众号) 微信官网的 模板消息接口规则: 1.所有服务号都 ...
- Java开发微信公众号模板消息【同步|异步】
第一步:申请模板消息功能并添加模板 在微信公众平台找到你需要的模板,并添加上即可: 第二步:添加功能模块后开始开发 功能中使用的类及代码: 发送数据主实体类: Template.java packag ...
- 微信小程序结合微信公众号进行消息发送
微信小程序结合微信公众号进行消息发送 由于小程序的模板消息已经废弃了,官方让使用订阅消息功能.而订阅消息的使用限制比较大,用户必须得订阅.需要获取用户同意接收消息的权限.用户必须得和小程序有交互的时候 ...
- 微信服务号模板消息接口新增"设置行业"和"添加模板"及细节优化
微信服务号模板消息可以向用户发送重要的服务通知,如信用卡刷卡通知,商品购买成功通知等.昨日,微信团队发布公告称模板消息新增“设置行业”和“添加模板”接口及细节优化,详细变动如下 模板消息[业务通知]自 ...
随机推荐
- 英语单词substitution
substitution 来源——shell字符串切片 [root@centos73 ~]# echo ${$alpha:3:4} -bash: ${$alpha:3:4}: bad substitu ...
- shell脚本学习(7)sort
1 sort的格式 sort [options] [files] sort 参数 文件 2 参数 -t 用单个符char作为默认的字段分隔符, 默认字段分隔符是空白 参数-k 用来定义排序键值字段 ...
- mysql启动以及常用命令汇总
mysql57的启动 常用命令 : show databases : 展示所有数据库 use 数据库名 : 连接数据库 show tables ...
- (转)VirtualBox下安装CentOS7系统
转:https://www.cnblogs.com/hihtml5/p/8217062.html 本文假定你已经知道如何安装VirtualBox虚拟机软件,并且已经安装好了. 首先我们需要准备好cen ...
- xshell链接linux出现SSH服务器拒绝了密码 的解决方案
参考文章:https://blog.csdn.net/weixin_38554662/article/details/80589852 但是需要注意的是,ssh_config文件本来是没有权限修改的, ...
- Java学习之线程间通信(双线程)
线程间通讯:多个线程在处理同一资源,但是任务不同 练习一:双线程出现线程安全问题,需要使用同步,思考同步代码添加位置需求:银行账户存钱,显示谁在账户存钱了,存了多少钱分析:操作同一银行账户两个不同的操 ...
- docker--container的port映射
使用nginx为例 先运行nginx [root@localhost ~]# docker run --name web -d nginx Unable to find image 'nginx:la ...
- Autofac基本使用
原文:Autofac基本使用 AutoFac是.net平台下的IOC容器产品,它可以管理类之间的复杂的依赖关系.在使用方面主要是register和resolve两类操作. 这篇文章用单元测试的形式列举 ...
- Java面试宝典(3)Java基础部分
51.启动一个线程是用run()还是start()? . 启动一个线程是调用start()方法,使线程就绪状态,以后可以被调度为运行状态,一个线程必须关联一些具体的执行代码,run()方法是该线程所关 ...
- Python3学习笔记——类
#!/usr/bin/env python #-*- coding:utf-8 -*- #面向对象(类+对象) 三大特性:封装.继承.多态 类的成员: 字段: 普通字段:保存在对象(实例)中,执行只能 ...