在 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>