在2022年之前,想要在H5打开小程序只需要在平台上设置urlscheme即可,但是自 2022 年 4 月 11 日起,URL Scheme有效期最长 30 天,不再支持永久有效的URL Scheme、不再区分短期有效URL Scheme与长期有效URL Scheme。若在微信外打开,用户可以在浏览器页面点击进入小程序。每个独立的URL Scheme被用户访问后,仅此用户可以再次访问并打开对应小程序,其他用户无法再次通过相同URL Scheme打开该小程序。 在本次规则调整生效前已经生成的URL Scheme,如果有效期超过30天或长期会被降级为30天有效,只能被1个用户访问,开始时间从调整日期开始计算。【官方文档】
但是官方提供了动态获取urlscheme方法
步骤如下:
- 1:获取access_token
- 2:根据access_token获取urlscheme
3:根据urlscheme实现H5跳转小程序
具体实现
1. 通用的调用接口方法
/**
* curl
*/
public function httpRequest($url, $format = 'get', $data = null, $headerArray = []){
//设置头信息
$curl=curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if ($format == 'post') {
//post传值设置post传参
curl_setopt($curl, CURLOPT_POST, 1);
if ($data) {
$data = json_encode($data);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
if ($headerArray) {
curl_setopt($curl,CURLOPT_HTTPHEADER,$headerArray);
}
$data=json_decode(curl_exec($curl), true);
curl_close($curl);
//返回接口返回数据
return $data;
}
2. 获取access_token文档:【获取access_token】
$appId = 'XXX';
$appsecret = 'XXX';
$data = $this->httpRequest(
'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appId.'&secret='.$appsecret,
'get',
null,
array("Content-type:application/json;","Accept:application/json")
);
$accessToken = isset($data['access_token']) ? $data['access_token'] : '';
3:根据access_token获取urlscheme【获取urlscheme】
$data = $this->httpRequest(
'https://api.weixin.qq.com/wxa/generatescheme?access_token='.$accessToken,
'post',
[
'jump_wxa' => [
'path' => "/pages/index/index",//跳转小程序地址
'query' => ""//跳转小程序额外参数
],
'expire_type' => 0
]
);
$openlink = isset($data['openlink']) ? $data['openlink'] : '';
4:根据urlscheme跳转小程序
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
<script>
window.location.href = openlink;
</script>
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。