Сканировать QR-код Загрузить QR-код
Magazin domenov
Выберите типы платформ для обхода блокировки ссылок
Выберите разрешенные типы платформ

微信外链制作指南:一步一步完成生成与投放

在微信场景里做外部跳转,常见目标通常有两类:一类是把用户引到个人微信,让他们扫码加好友;另一类是把用户直接带到某个小程序页面。前者更像“展示一张可识别的二维码”,后者更像“生成一条能唤起小程序的短链接”。路径不同,实现方式和要注意的地方也不一样。

如果只是展示个人二维码,流程并不复杂。先准备好二维码图片,可以在微信头像页的二维码名片里截图,也可以借助在线工具生成。拿到图片后,最好把它放进一个稳定可访问的页面,而不是只在聊天窗口里反复发图。图片可以先上传到云存储、对象存储或代码托管仓库,取得一个可访问的直链,例如 example.com/qrcode.jpg。随后新建一个 index.html,把图片嵌入页面,再配一句清楚的使用提示。

一个基础页面大致可以这样处理:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>微信好友二维码</title>
<style>
body {
font-family: Arial, sans-serif;
max-width: 400px;
margin: 20px auto;
padding: 20px;
border: 1px solid #ddd;
border-radius: 8px;
text-align: center;
}
h2 {
margin-bottom: 10px;
}
img {
width: 100%;
height: auto;
margin: 20px 0;
border-radius: 6px;
}
p {
color: #555;
line-height: 1.6;
}
.button {
display: inline-block;
padding: 10px 20px;
background: #07c160;
color: #fff;
text-decoration: none;
border-radius: 4px;
}
</style>
</head>
<body>
<h2>扫码添加好友</h2>
<img src="https://example.com/qrcode.jpg" alt="微信二维码">
<p>长按二维码识别,或先保存到手机相册后再扫码添加。</p>
<a class="button" href="https://example.com/qrcode.jpg" download="wechat-qrcode.jpg">下载二维码</a>
</body>
</html>


页面本身不用太花哨。手机端能看清二维码、长按能识别、保存能成功,就已经完成了主要任务。若这个二维码后续还会用于海报、公众号、社群、短信或广告投放,只把图片地址写死在页面里就不够灵活。此时可以把整个页面部署到 GitHub Pages:将 HTML 推到仓库,在 Settings 里打开 Pages 功能,选择分支并保存,就能得到类似 https://用户名.github.io/仓库名 的访问地址。这个地址再交给短链接工具处理,例如 suo.run,便能在更多场景中放得更短,也更好管理。

尤其是物料已经印刷出去,或者广告已经开始投放时,临时更换目标网址往往比较麻烦。短链接的好处之一就在这里:二维码扫到的还是同一个短链,短链背后的落地页却可以调整。对于中文推广和私域运营来说,免登录生成、批量导入、自定义短码、访问密码、有效期、点击量统计、设备与来源分析、iOS/Android/PC 多端跳转、小程序场景支持、API 接口和全球加速等能力,会让投放后的管理更顺手。基础缩短通常很快就能上手,规模化运营时才会更明显地用到完整后台能力。遇到海外投放时,多语言页面和全球加速也能减少访问波动。

另一种更偏“直接打开小程序”的做法,不是靠展示二维码,而是生成小程序 URL Link。用户点击这类短链接后,可以跳转到指定小程序页面,路径和参数都可以事先设定。实现时,通常需要先从微信公众平台拿到 AppID 和 AppSecret,再在服务端换取 Access Token,最后调用生成短链接的接口。示例可以写成:

const axios = require('axios');

const appid = process.env.WX_APPID;
const secret = process.env.WX_SECRET;

async function getAccessToken() {
const { data } = await axios.get('https://api.weixin.qq.com/cgi-bin/token', {
params: {
grant_type: 'client_credential',
appid,
secret,
},
});

if (!data.access_token) {
throw new Error(获取 Access Token 失败: ${data.errmsg});
}

<img src="/uploads/20251015/19.png?t=1710387659" alt="" class="img-fluid" />

return data.access_token;
}

<img src="/uploads/20251015/38.png?t=1890364810" alt="" class="img-fluid" />

async function createUrlLink(access_token, path, query) {
const { data } = await axios.post(
'https://api.weixin.qq.com/wxa/generate_urllink',
{ path, query },
{ params: { access_token } },
);

if (!data.url_link) {
throw new Error(生成小程序短链接失败: ${data.errmsg});
}

return data.url_link;
}

(async () => {
try {
const access_token = await getAccessToken();
const urlLink = await createUrlLink(
access_token,
'pages/index/index',
'key=value',
);
console.log('小程序短链接:', urlLink);
} catch (error) {
console.error(error);
}
})();




这里要注意,AppSecret 属于敏感配置,不应放在前端 HTML 或浏览器脚本里。更稳妥的做法是把它留在 Node.js 服务、云函数或后端接口中,由服务端去拿 token 和生成链接。小程序路径 pages/index/index 与 query 也要符合当前小程序实际配置,若页面、参数或权限设置不合法,短链接即使生成出来,用户访问时也可能无法进入预期页面。



静态页面和动态服务需要分开理解。个人二维码页面、下载按钮、提示文案,这类内容可以放在 GitHub Pages;涉及 AppSecret、Access Token、调用微信接口的操作,则更适合放到有鉴权能力的后端服务中,例如 Vercel、Heroku 或其他云平台。若只是想快速验证效果,可以先用后端脚本生成一条链接,再把链接放进外部渠道测试。

最终选择哪种方式,取决于你想让用户体验到什么。想让用户加好友,就用二维码页面承载图片,再配合短链降低传播成本;想让用户点击后直接进入小程序页面,就走服务端生成 URL Link 的路子。无论哪条路,合规和安全都不该被忽略:个人微信二维码无法自动添加,必须依赖用户主动扫码;小程序短链接要确保路径、参数和接口调用符合平台规则;敏感信息不要暴露给前端。把链接做得短一点、稳一点、可统计一点,投放效果才更容易被看清楚。