首页 > 其他分享 >微信模板消息推送封装方法

微信模板消息推送封装方法

时间:2023-07-07 10:55:48浏览次数:29  
标签:ch return tem url 微信 access token 推送 模板

/**
* @explain
* 发送消息通知
* @return array|mixed
* @remark
* 获取到用户的openid之后可以判断用户是否有数据,可以直接跳过获取access_token,也可以继续获取access_token
* access_token每日获取次数是有限制的,access_token有时间限制,可以存储到数据库7200s. 7200s后access_token失效
*
*/
function sendMsg($tem_id,$data,$openid,$return_url='')
{
if($tem_id == ''){
$tem_id = "7wuhorQScRZHbn_NpPWlR4uoCN4CcZKtxEL_hwnNVZI";
}
$return_url = "https://".$_SERVER['HTTP_HOST'].'/h5/#/'; // 你的消息详情页面,如果为空。点进去之后是空白页面
//获取access_token
$access_token = \think\Cache::get('ACCESS_TOKEN');
if (!$access_token||empty($access_token)){
$WechatLogin=config('WechatLogin');
$arrContextOptions=array(
"ssl"=>array(
"verify_peer"=>false,
"verify_peer_name"=>false,
),
);
$appid = $WechatLogin['appid'];
$secret = $WechatLogin['appsecret'];
//获取ACCESS_TOKEN
$url= "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret;
if (function_exists('file_get_contents')){
$access_token = file_get_contents($url, false, stream_context_create($arrContextOptions));
}else{
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$access_token = curl_exec($ch);
curl_close($ch);
}
$access = json_decode($access_token,true);
$access_token = $access['access_token'];
\think\Cache::set('ACCESS_TOKEN',$access_token,'7000');
}
if($access_token){
$params1 = json_encode(json_tempalte($openid,$data,$return_url,$tem_id),JSON_UNESCAPED_UNICODE);
$url="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$access_token;
$params = https_request($url,urldecode($params1));
$params = json_decode($params,true);

if ($params['errcode'] == '40001'){
\think\Cache::set('ACCESS_TOKEN','');
sendMsg($tem_id,$data,$openid,$return_url);
}

if ($params['errcode']==0){
return true;
}else{
return false;
}
}else{
return false;
}
}

标签:ch,return,tem,url,微信,access,token,推送,模板
From: https://www.cnblogs.com/bastblogs/p/17534238.html

相关文章

  • wpf样式模板的使用
    <Windowx:Class="WpfApp1.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:x="http://schemas.micro......
  • UniApp与微信小程序的异同点分析
    UniApp和微信小程序都是流行的移动应用开发框架,它们有一些相似之处,但也存在一些明显的异同点。在本篇博客中,我将对UniApp和微信小程序进行详细的异同点分析,并提供相关的示例代码。开发语言:微信小程序:使用WXML(类似于HTML)、WXSS(类似于CSS)和JavaScript进行开发。UniApp:支持使用Vue.js......
  • 微信昵称乱码-解决方案
    目录背景原因:解决方案:增量数据历史数据ps:背景网页授权拉取用户信息时昵称乱码原因:调接口时未设置字符集,默认使用的字符集是ISO-8859-1,该字符集不适合汉字和特殊字符原来的代码/***网页授权之拉取用户信息**@paramaccessToken网页授权token......
  • ios系统微信浏览器打开H5,调用接口status = 0失败的问题?
    最近写了一个很简单的小项目,以为不会有什么问题,今天突然说出问题了,说ios用户打开没有请求到数据。经测试,安卓,pc,都没有问题,只有ios出问题了。因为这次的涉及到时间,我以为ios时间处理上出问题了,仔细看了看,并不是,于是开启了漫长的寻找bug的过程。使用vConsole查看接口请求情况,发现......
  • 如何实现Java 实现微信聊天的具体操作步骤
    Java实现微信聊天微信是一款非常流行的社交聊天应用程序,让人们可以通过文字、语音、图片和视频等多种方式进行交流。本文将介绍如何使用Java编程语言实现一个简单的微信聊天应用。准备工作在开始编写代码之前,我们需要先安装Java开发环境。你可以从[Oracle官方网站](建立服务器......
  • 2023-07-06 微信开发者工具上传代码,在体验版查看时发现小程序的一些全局字体样式不生
    前言:在less中使用【@样式变量】如:@global_color:var(--global_color,red);问题描述:在开发工具中字体样式能正常显示,预览扫码到真机上也能显示字体颜色,结果上传代码到了提样版就不行了,样式不生效。这里用到了一个var函数,“var()函数用于插入自定义的属性值,如果一个属性值在......
  • 微信公众号授权
    1.公众号后台配置授权域名比如(www.xiaozhu.com) 直接获取用户的openid前端created(){this.getCode();},methods:{getCode(){//APPID是公众号的appid//https://www.xiaozhu.com/index/test/get_openid授......
  • 微信小程序页面增加下拉刷新功能
     对应的json文件增加如下内容"enablePullDownRefresh":true,"onReachBottomDistance":50,"backgroundTextStyle":"dark","backgroundColor":"#6197FB" 2.对应的js增加函数onPullDownRefresh()和 onload是一个级别......
  • WordPress主题,当前页面使用了哪个template模板文件?
    对于页面与模板的对应情况一般都是能确定的,不过新朋友一时不熟悉可能还是需要花一点时间。其实,可以有一个小技巧,可以快速确定当前页面对应的模板文件。想要实现上面的效果,只需将下面代码加入主题的 functions.php 文件。functionzhuige_admin_bar_init(){//Ifnota......
  • 解决微信H5的图片缓存问题
    一、缓存可以解决什么问题?他的缺点是什么?1、缓存可以解决什么问题:减少不必要的网络传输,节约宽带更快的加载页面减少服务器负载,避免服务器过载的情况出现2、缓存的缺点:占内存,有些缓存会被存到内存中页面更新不及时,使用过时的图片、样式文件3、总结来说:开发阶段需要频......