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