实现方式
h5跳转小程序
需要开启小程序云开发(付费)
非个人主体并且已认证的(微信认证)小程序,使用云开发静态网站托管的网页,可以免鉴权跳转任意合法合规的小程序。即可以在微信内部浏览器的 H5 跳转小程序,也可以在微信外部浏览器或其他部分 App (如企业微信、QQ 等)跳转微信小程序。
静态网站网页在微信客户端打开时,wx.config 可以传入小程序 AppID 并且不需计算签名,也就是免鉴权即可使用跳转小程序的能力。
短信跳转小程序
需要开通静态网站以及短信发送功能(付费)
境内非个人主体的认证的小程序,开通静态网站后,可以免鉴权下发支持跳转到相应小程序的短信。短信中会包含支持在微信内或微信外打开的静态网站链接,用户打开页面后可一键跳转至你的小程序。
使用该能力,具有以下优势:
- 无需额外申请短信签名,可自动关联你的小程序产品名称;
- 短信正文模板免申请;
- 原生云调用支持,方便快捷。
URL Link
目前只开放给电商类目小程序,具体包含以下一级类目:电商平台、商家自营、跨境电商。
Short Link
- 每天生成 URL Scheme 和 URL Link 总数量上限为50万
- 只能生成已发布的小程序的 URL Link
- 在微信内或者安卓手机打开 URL Link 时,默认会先跳转官方 H5 中间页,如果需要定制 H5 内容,可以使用云开发静态网站
- 针对非个人主体小程序开放
URL Scheme
- 每天生成 URL Scheme 和 URL Link 总数量上限为50万
- 微信内的网页如需打开小程序请使用微信开放标签 - 小程序跳转按钮,无公众号也可以直接使用小程序身份开发网页并免鉴权跳转小程序,见云开发静态网站跳转小程序。符合开放范围的小程序可以下发支持打开小程序的短信
- 该功能基本覆盖当前用户正在使用的微信版本,开发者无需进行低版本兼容
- 只能生成已发布的小程序的 URL Scheme
- 通过 URL Scheme 跳转到微信时,可能会触发系统弹框询问,若用户选择不跳转,则无法打开小程序。请开发者妥善处理用户选择不跳转的场景
- 部分浏览器会限制打开网页直接跳转,可参考示例网页设置跳转按钮
实现方案:
- 后台获取微信小程序的access_token
- 后台生成URL Scheme
- 发短信到手机
- 手机点开网页链接打开浏览器调起小程序
后端实现node
初始化项目
npm init -y
npm install express
npm install axios --save-dev
node代码
const express = require('express')
const axios = require('axios')
const app = express()
app.get('/', (req, res) => {
res.send('hello')
})
app.get('/getUrlScheme', (req, res) => {
// 获取小程序凭证access_token
getAccessToken().then((access_token) => {
getUrlScheme(access_token).then((url) => {
res.send('get success:' + url)
})
})
})
// 获取凭证
function getAccessToken() {
return new Promise((resolve, reject) => {
axios
.get('https://api.weixin.qq.com/cgi-bin/token', {
params: {
grant_type: 'client_credential',
appid: 'xxxxxx',
secret: 'xxxxxxx',
},
})
.then((res) => {
if (res.data.access_token) {
resolve(res.data.access_token)
}
})
.catch(() => {
reject()
})
})
}
function getUrlScheme(access_token) {
return new Promise((resolve, reject) => {
axios
.post(
`https://api.weixin.qq.com/wxa/generatescheme?access_token=${access_token}`,
{
jump_wxa: {
path: '/pages/index/index',
query: '?id=11111&name=22222',
},
is_expire: true,
expire_time: new Date().getTime() + 30 * 24 * 60 * 60 * 1000,
}
)
.then((res) => {
if (res.data.errcode == 0) {
resolve(res.data.openlink)
}
})
})
}
app.listen(3000, () => {
console.log('Example app listening on port 3000!')
})
前端跳转页面代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script>
location.href = "weixin://dl/business/?t=fdRMBLSqOOo1"
</script>
</head>
<body>
<a href="weixin://dl/business/?t=fdRMBLSqOOo1">打开小程序</a>
</body>
</html>
标签:res,程序实现,微信,程序,h5,URL,token,跳转
From: https://www.cnblogs.com/mynl/p/17029144.html