ThinkPHP5微信订阅消息推送

信息整合

1$msg = [ 2 'thing3' => ['value'=> '邀请好友购课奖励积分'], 3 'thing1' => ['value'=> $data3['integral']], 4 'thing2' => ['value'=> $welfare], 5 'date4' => ['value'=> date('Y-m-d H:i:s', time())], 6]; 7//订阅格式请参照小程序订阅消息模板中的格式

发起消息接口

1/*** 2 * 订阅消息模板 3 * @param $touser //需要接受订阅消息的openid 4 * @param $template_id //模板ID 5 * @param $page //点击返回页面路径 6 * @param $dataArray //订阅格式请参照小程序订阅消息模板中的格式 7 * @return array 8 */ 9public function sendSubscribeMessage($touser, $template_id, $page, $dataArray) 10{ 11 //access_token 一般都存在缓存 , 12 $access_token = $this->get_access_token(); 13 //请求url 14 $url = 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=' . $access_token ; 15 //发送内容 16 $data = [] ; 17 $data['touser'] = $touser; //用户的openid 18 $data['template_id'] = $template_id; //所需下发的订阅模板id 19 20 //点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。 21 $data['page'] = $page; 22 //模板内容,格式形如 { "key1": { "value": any }, "key2": { "value": any } } 23 $data['data'] = $dataArray; 24 25 //跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 26 $data['miniprogram_state'] = 'formal'; 27 $data['lang'] = 'zh_CN'; 28 $json_data = json_encode($data); 29 30 return [ 31 'openid' => $touser, 32 'data' => $this->curlRequest($url, $json_data)//这里面就是个curl请求 , 转成数组返回 33 ]; 34}

获取微信AccessToken

1/** 2 * 微信小程序获取接口调用凭证AccessToken 3 */ 4public function get_access_token1() 5{ 6 $config = Db::name('cycling_config')->where('id',1)->field('wechat_appid,wechat_appsecret')->find(); 7 $APPID = $config['wechat_appid'];// 小程序appid 8 $APPSECRET = $config['wechat_appsecret']; // 小程序appsecret 9 //获取access_token 10 $access_token ="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$APPID&secret=$APPSECRET"; 11 12 //缓存access_token 13 session_start(); 14 $_SESSION['access_token'] =""; 15 $_SESSION['expires_in'] = 0; 16 17 $ACCESS_TOKEN =""; 18 if(!isset($_SESSION['access_token']) || (isset($_SESSION['expires_in']) && time() >$_SESSION['expires_in'])) 19 { 20 21 $json = $this->httpRequest($access_token ); 22 $json = json_decode($json,true); 23 if(empty($json['access_token'])){ 24 $this->result('', 0, $json['errmsg']); 25 } 26 $_SESSION['access_token'] =$json['access_token']; 27 $_SESSION['expires_in'] = time()+7200; 28 $ACCESS_TOKEN =$json["access_token"]; 29 } 30 else{ 31 32 $ACCESS_TOKEN = $_SESSION["access_token"]; 33 } 34 return $ACCESS_TOKEN; 35}

发起请求

1/** 2 * @param string $url post请求地址 3 * @param array $params 4 */ 5 function curlRequest($url, $params) 6 { 7 $ch = curl_init(); 8 curl_setopt($ch, CURLOPT_URL, $url); 9 curl_setopt($ch, CURLOPT_HEADER, 0); 10 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 11 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); 12 curl_setopt($ch, CURLOPT_POST, 1); 13 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 14 curl_setopt($ch, CURLOPT_POSTFIELDS, $params); 15 curl_setopt( 16 $ch, CURLOPT_HTTPHEADER, 17 array( 18 'Content-Type: application/json' 19 ) 20 ); 21 $data = curl_exec($ch); 22 curl_close($ch); 23 return ($data); 24 }
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

正则表达式限制输入框只能输入数字

1正则表达式限制输入框只能输入数字<inputtype"text"onkeyup"this.valuethis.value.replace(/^d/g,')"onafterpaste"this.valuethis.value.replace(/^d/g,')"name"f_order"value"1"/其

微信小程序验证url地址

笔记类varthatthisthat.optional()是验证是否为空方法url(value){returnthat.optional(value)||/^(?:(?:(?:https?|ftp):)?//)(?:S(?::S)?@)?(?:

PHP的cookie与Javascript的cookie的关系

PHP读写cookie的语句:setcookie("user","Lilu",time()3600);echo$_COOKIE"user";javascript读写cookie代码:functionSetCookie(name,value)//两个参数,一个是cookie的名子,一

HTML5新增input标签属性

一.inputtype属性1<formaction""2邮箱<inputtype"email"name""id""<inputtype"submit"value"提交"<br/<br/3手机号码<inputtype"tel"name