PHP后端 H5页面 打开微信小程序
/**
* 功能:获取小程序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页面 打开微信小程序的更多相关文章
- 自家APP打开微信小程序,可行吗?
小程序的通用解决方案,今天为大家介绍一下FinClip.它的最大特点,就是能够让任何 App 运行小程序. 只需要在你的 App 里面,引入它的 SDK,就能加载运行外部小程序了.除了 SDK,它还提 ...
- h5内嵌微信小程序,调用微信支付功能
在小程序中不能使用之前在浏览器中配置的支付功能,只能调用小程序专属的api进行支付. 因为需要在现在实现的基础上,再添加在小程序中调用微信支付功能,所以我的思路是这样的 1.在点击支付按钮时,判断是不 ...
- 绑定bindchange事件的微信小程序swiper闪烁,抖动问题解决,(将微信小程序切换到后台一段时间,再打开微信小程序,会出现疯狂循环轮播,造成抖动现象)
微信小程序开发文档-组件-swiper后面追加的新闻如上图所示: 如果在bindchange事件给swiper的current属性对应的值{{current}}赋值,就会造成抖动现象. bindcha ...
- 判断H5页面是在小程序的webview环境中,还是在微信环境中,还是不在微信
<script src="https://res2.wx.qq.com/open/js/jweixin-1.6.0.js" type="text/javascrip ...
- PHP微信公共号H5页面跳转小程序。
1.H5跳转小程序. function myfun(){ var openid = "<?=$_SESSION['openid']?>"; wx.miniProgram ...
- h5页面跳转小程序
2020年以前, 只能通过 web-view内嵌h5跳转小程序,现在 可以直接跳了!!!!!! 官方文档:https://developers.weixin.qq.com/doc/offiacco ...
- 微信小程序web-view(webview) 嵌套H5页面 唤起微信支付的实现方案
场景:小程序页面有一个web-view组件,组件嵌套的H5页面,要唤起微信支付. 先讲一下我的项目,首先我是自己开发的一个H5触屏版的商城系统,里面含有购物车,订单支付等功能.然后刚开始,我们公众号里 ...
- [转]微信小程序、微信公众号、H5之间相互跳转
本文转自:https://www.cnblogs.com/colorful-paopao1/p/8608609.html 转自慕课网 一.小程序和公众号 答案是:可以相互关联. 在微信公众号里可以添加 ...
- 微信小程序、微信公众号、H5之间相互跳转
转自慕课网 一.小程序和公众号 答案是:可以相互关联. 在微信公众号里可以添加小程序. 图片有点小,我把文字打出来吧: 可关联已有的小程序或快速创建小程序.已关联的小程序可被使用在自定义菜单和模版消息 ...
- 微信小程序和公众号和H5之间相互跳转
参考链接:https://www.imooc.com/article/22900 一.小程序和公众号 答案是:可以相互关联. 在微信公众号里可以添加小程序. 可关联已有的小程序或快速创建小程序.已关联 ...
随机推荐
- 在 NGINX 中根据用户真实 IP 进行限制
需求 需要根据用户的真实 IP 进行限制, 但是 NGINX 前边还有个 F5, 导致 deny 指令不生效. 阻止用户的真实 IP 不是 192.168.14.* 和 192.168.15.* 的访 ...
- CSS中知
1CSS特性 1.3优先级 1.4权重叠加计算 2Chrome调试工具 2.1查错流程 3CSS盒子模型 3.1内容的宽度和高度 3.2边框(border)-连写形式 ...
- Redis--回顾提要
一.写在前 知识学了就忘!不用就忘!我太健忘!特此记录!用于复习打卡!Redis干就完事了! 二.来辣! Redis做异步队列:一般list结构做队列,rpush生产消息,lpop消费消息,当lpop ...
- threeJs构建3D世界
threejs官网 https://threejs.org/docs/index.html#manual/zh/introduction/Installation (官网非常的详细) 导入安装 npm ...
- obj转换为gltf方法three.js一步一步来--性能优化超厉害的!!!!!超赞操作!!!Obj模型转Gltf模型并超强压缩!!!!!
1.准备好模型文件table.obj和table.mtl 2.下载obj2gltf 下载地址https://github.com/AnalyticalGraphicsInc/obj2gltf 解压至文 ...
- BBS登录与注册功能的总结
BBS登录与注册功能的总结 一.表设计:表名 外键字段 表名 models.py from django.db import models from django.contrib.auth.model ...
- MySQL 合并查询union 查询出的行合并到一个表中
在合并查询中,尤其是二分类的情况,在查询结果是相同列名的时候可以考虑合并查询.先查询出行的结果,再使用union或者union all合并查询结果. 另外如果 union 和 order by 一起使 ...
- 学习python的编程语言
前言 那么多编程语言,为什么学python 易于学习,是所有编程语言当中最容易学习的 没有最好的语言,只有最合适的语言 第一章 python基础 1. 课程整体介绍 课程整体介绍 python编程基础 ...
- 【分析笔记】Linux 内核自旋锁的理解和使用原则
自旋锁简单说明: 自旋锁主要解决在竞态并发下,保护执行时间很短的临界区.它只允许一个执行单位进入临界区,在该执行单位离开前,其它的执行单位将会在进入临界区前不停的循环等待(即所谓的自旋),直至该执行单 ...
- 10月31日ATM编写逻辑描述
目录 ATM逻辑描述 三层框架简介 1.第一层(src.py) 2.第二层(interface文件夹下内容) 3.第三层(db_hanlder) 启动函数 用户注册功能 用户登录 common中的小功 ...