/**
* 功能:获取小程序access_token
* Author:郑康凯
* Date: 2023/2/6 0006 15:14
*/
public function hhsGetAccessToken()
{
// access_token 应该全局存储与更新,以下代码以写入到文件中做示例
// 如果是企业号用以下URL获取access_token
// $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";
$SCHOOL_HOST=CD('SCHOOL_HOST');
//if($_SERVER['SERVER_NAME']==$SCHOOL_HOST){
if(1){
$where['config_name'] = array('eq', 'H_Access_Token');
$access_token_info = M('config')->where($where)->find();
$thetime = $access_token_info['config_time'] + 7000;
if ($thetime < time() || empty($access_token_info['config_value'])) {
          //获取小程序access_token方法
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . CD('H_AppID') . "&secret=" . CD('H_AppSecret');
$res = json_decode(httpPost($url));
$access_token = $res->access_token;

// 保存tocken
$data['config_value'] = $access_token;
$data['config_time'] = time();

if (empty($access_token_info)) {
$data['config_name'] = 'H_Access_Token';
M('config')->add($data);
} else {
M('config')->where($where)->save($data);
}

return $access_token;
} else {
return $access_token_info['config_value'];
}
}else{
return false;
}

}
  //获取小程序生成短链
public function getUrlLInk(){
$url = 'https://api.weixin.qq.com/wxa/generate_urllink?access_token='.$this->hhsGetAccessToken();
$data='{"path": "/pages/tabbars/main/main","query": "","is_expire":true,"expire_type":0,"expire_interval":1,"env_version": "release"} ';
$res = json_decode($this->httpPost($url,true,'POST',$data),true);
$href_url=$res['url_link'];
Header("HTTP/1.1 303 See Other");
Header("Location:$href_url ");
exit;
}
/**
* 发送httpPost
* @param $curl
* @param bool $https
* @param string $method
* @param null $data
* @return mixed
*/
function httpPost($curl, $https = true, $method = 'GET', $data = null)
{
$ch = curl_init(); // 初始化curl
curl_setopt($ch, CURLOPT_URL, $curl); //设置访问的 URL
curl_setopt($ch, CURLOPT_HEADER, false); //放弃 URL 的头信息
// curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); //请求时间限制(s)
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //返回字符串,而不直接输出
if ($https) { //判断是否是使用 https 协议
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //不做服务器的验证
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //做服务器的证书验证
}
if ($method == 'POST') { //是否是 POST 请求
curl_setopt($ch, CURLOPT_POST, true); //设置为 POST 请求
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //设置POST的请求数据
curl_setopt($ch,CURLOPT_HTTPHEADER,array(
'Content-Type:application/json'
));
}
$content = curl_exec($ch); //开始访问指定URL
$request_header = curl_getinfo( $ch, CURLINFO_HEADER_OUT);
curl_close($ch); //关闭 cURL 释放资源
return $content;
}

PHP后端 H5页面 打开微信小程序的更多相关文章

  1. 自家APP打开微信小程序,可行吗?

    小程序的通用解决方案,今天为大家介绍一下FinClip.它的最大特点,就是能够让任何 App 运行小程序. 只需要在你的 App 里面,引入它的 SDK,就能加载运行外部小程序了.除了 SDK,它还提 ...

  2. h5内嵌微信小程序,调用微信支付功能

    在小程序中不能使用之前在浏览器中配置的支付功能,只能调用小程序专属的api进行支付. 因为需要在现在实现的基础上,再添加在小程序中调用微信支付功能,所以我的思路是这样的 1.在点击支付按钮时,判断是不 ...

  3. 绑定bindchange事件的微信小程序swiper闪烁,抖动问题解决,(将微信小程序切换到后台一段时间,再打开微信小程序,会出现疯狂循环轮播,造成抖动现象)

    微信小程序开发文档-组件-swiper后面追加的新闻如上图所示: 如果在bindchange事件给swiper的current属性对应的值{{current}}赋值,就会造成抖动现象. bindcha ...

  4. 判断H5页面是在小程序的webview环境中,还是在微信环境中,还是不在微信

    <script src="https://res2.wx.qq.com/open/js/jweixin-1.6.0.js" type="text/javascrip ...

  5. PHP微信公共号H5页面跳转小程序。

    1.H5跳转小程序. function myfun(){ var openid = "<?=$_SESSION['openid']?>"; wx.miniProgram ...

  6. h5页面跳转小程序

    2020年以前, 只能通过 web-view内嵌h5跳转小程序,现在  可以直接跳了!!!!!!  官方文档:https://developers.weixin.qq.com/doc/offiacco ...

  7. 微信小程序web-view(webview) 嵌套H5页面 唤起微信支付的实现方案

    场景:小程序页面有一个web-view组件,组件嵌套的H5页面,要唤起微信支付. 先讲一下我的项目,首先我是自己开发的一个H5触屏版的商城系统,里面含有购物车,订单支付等功能.然后刚开始,我们公众号里 ...

  8. [转]微信小程序、微信公众号、H5之间相互跳转

    本文转自:https://www.cnblogs.com/colorful-paopao1/p/8608609.html 转自慕课网 一.小程序和公众号 答案是:可以相互关联. 在微信公众号里可以添加 ...

  9. 微信小程序、微信公众号、H5之间相互跳转

    转自慕课网 一.小程序和公众号 答案是:可以相互关联. 在微信公众号里可以添加小程序. 图片有点小,我把文字打出来吧: 可关联已有的小程序或快速创建小程序.已关联的小程序可被使用在自定义菜单和模版消息 ...

  10. 微信小程序和公众号和H5之间相互跳转

    参考链接:https://www.imooc.com/article/22900 一.小程序和公众号 答案是:可以相互关联. 在微信公众号里可以添加小程序. 可关联已有的小程序或快速创建小程序.已关联 ...

随机推荐

  1. NET-SynchronizationContext

    title: .NET SynchronizationContext date: 2022-12-06 09:38:53 tags: - .NET 前言 最近在看CAP的源码,经常能看到Configu ...

  2. cornerstone4.1破解版&#160;for&#160;mac

    百度网盘: https://pan.baidu.com/s/1l_0rHMF11mZsUP3qJrp7Uw  密码: 8ei9

  3. 用溪流 WarKey 辅助红警开局快捷操作

    背景 自从发现红警除了 ddraw 补丁可以在最新的系统里玩后,就开始怀旧了.但是由于手残,遇到别人抢地盘基本上直接崩了.偶然有一次发现像 08 这样的高手点 30 个坦克使用工具的.那么,我开局用工 ...

  4. 跟AWS学极致服务

    春节期间,除了还在看技术书籍外,我一直抽空断断续续地在看<极致服务:创造不可思议的客户体验>一书.之前创业的经历,让我一直反思,除了赛道和落地之外,是否在服务质量上也有缺失. 书里从一个商 ...

  5. Docker快速部署Nacos

    前置 机器配置不能太低 ( 2c2g的轻量服务器直接崩掉了) Docker https://www.docker.com/ 开始安装 mysql 使用docker安装mysql (推荐8.0) 可以不 ...

  6. 异常概念&异常体系-异常分类

    异常概念&异常体系 异常,就是不正常的意思.在生活中:医生说,你的身体某个部分有异常,该部位和正常相比有点不同,该部位的功能将受影响,在程序中的意思就是: 异常:指的是程序在执行过程中,出现的 ...

  7. GF_CLR初始用 - 正式版

    参照:DeerGF_Wolong框架使用教程 与tackor老哥的踩坑日记所编写,第二次尝试,总结第一次经验重新来. 点击链接加入群聊[Gf_Wolong热更集合] 一. 部署 HybridCLR(W ...

  8. 真正“搞”懂HTTP协议10之缓存控制

    HTTP缓存相关的问题好像是前端面试中比较常见的问题了,上来就会问什么cache-control字段有哪些,有啥区别啥的.嗯--说实话,我觉得至少在本篇来说,HTTP缓存还算不上复杂,只是字段稍微多了 ...

  9. 周末折腾了两天,踩了无数个坑,终于把win7装成了centos7

    上周五的时候,突发奇想,想把自己的Thinkpad E430C的操作系统装成linux. 熟悉电脑的都知道Thinkpad E430C很古老了,现在算来从2012年买来,到现在已经经历了10个年头了. ...

  10. Windows服务安装小工具

    主要为了方便Windows服务的安装卸载,不需要使用CMD命令. 先给大家小工具的效果图: 使用此工具需要注意一下几点: 1.服务程序的.NET Framework版本: 2.服务名称与服务执行程序名 ...