免费工具 小程序页面路径生成器:带参二维码与 URL Scheme
像 pages/goods/detail?id=1024 这样的页面路径,要用在小程序码、分享卡片、公众号菜单、短信链接和广告里,每处规矩都不一样:不限数量的小程序码只认 32 位以内的 scene,URL Scheme 的 path 不能带参数,支付宝的参数要整体编码。页面和参数填一次,各种格式一起生成,并按官方限制逐项检查。
- 按官方长度限制检查
- URL Scheme、URL Link、alipays://
- 本地生成
生成带参数的页面路径
路径、链接和接口请求体随输入实时更新。参数按 UTF-8 百分号编码,中文和空格都不会出错。
抖音小程序的链接要通过服务端接口生成,这里不涉及。
微信:wx 开头加 16 位;支付宝:16 位数字。拼 scheme 链接时用,不填则用占位符演示格式。
按 app.json 里的写法,如 pages/goods/detail。开头的 / 会被去掉,粘贴进来的 ?参数 会挪到参数里。
每行一个 键=值,或用 & 连成一行。值照常写,会自动编码。
入口在哪:poster、sms、store021。
渠道类型:offline、sms、social。
活动名,如 double11。
区分版本:table_card、window。
最多 32 个字符。不填就用上面的参数拼(不含 utm);放不下时填一个短 ID。
只对微信外打开的码和链接生效,默认正式版。
pages/goods/detail?id=1024&utm_source=poster&utm_medium=offline&utm_campaign=double11用于 getQRCode(最长 1024 字符)、分享卡片(onShareAppMessage 的 path)、公众号菜单和 navigateToMiniProgram。
weixin://dl/business/?appid=wx0000000000000000&path=pages/goods/detail&query=id%3D1024%26utm_source%3Dposter%26utm_medium%3Doffline%26utm_campaign%3Ddouble11微信:明文 URL Scheme(场景值 1286),需要先在小程序后台「隐私与安全」里声明「明文 Scheme 拉起此小程序」。支付宝:alipays:// scheme。
把 scheme 包进 https://ds.alipay.com/?scheme=,网页和短信里用。
id=1024
// 页面里读取(扫接口 B 的码进入时)
Page({
onLoad(query) {
const scene = decodeURIComponent(query.scene || '');
},
});getUnlimitedQRCode 的 scene 值,以及页面里怎么读取。
// 小程序码 · 接口 B(数量不限)
POST https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN
{"page":"pages/goods/detail","scene":"id=1024","check_path":true,"env_version":"release"}
// 小程序码 · 接口 A(与接口 C 合计 10 万个)
POST https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN
{"path":"pages/goods/detail?id=1024&utm_source=poster&utm_medium=offline&utm_campaign=double11","env_version":"release"}
// 加密 URL Link(链接为 https://wxaurl.cn/…)
POST https://api.weixin.qq.com/wxa/generate_urllink?access_token=ACCESS_TOKEN
{"path":"pages/goods/detail","query":"id=1024&utm_source=poster&utm_medium=offline&utm_campaign=double11","env_version":"release"}
// 加密 URL Scheme(链接为 weixin://dl/business/?t=…)
POST https://api.weixin.qq.com/wxa/generatescheme?access_token=ACCESS_TOKEN
{"jump_wxa":{"path":"pages/goods/detail","query":"id=1024&utm_source=poster&utm_medium=offline&utm_campaign=double11","env_version":"release"}}在你的服务器上带 access_token 调用。URL Link 和加密 URL Scheme 的 path 不带参数,参数单独放 query。
检查结果
- 提示没填 AppID,scheme 链接里用了占位符。
- 通过scene 7 / 32 个字符,字符都合规。
- 提示scene 是用你的参数拼的(去掉了 utm)。getUnlimitedQRCode 生成的码打开页面时不带 path 参数,页面要用的信息都得放在 scene 里。
参数明细
| 参数 | 值 | 编码后 | 类型 |
|---|---|---|---|
id | 1024 | id=1024 | 自定义 |
utm_source | poster | utm_source=poster | utm |
utm_medium | offline | utm_medium=offline | utm |
utm_campaign | double11 | utm_campaign=double11 | utm |
分享这组输入:数值写在链接的 # 后面,不会发到服务器。
https://tapcub.com/zh/tools/mini-program-path-generator
版本 v1.0更新于 更新记录
每种格式用在哪
各个输出打开的是同一个页面、同一组参数,区别在能用在哪里、有什么限制。
带参数的页面路径
微信内使用:分享卡片、公众号菜单和文章、navigateToMiniProgram,以及 getQRCode / createQRCode 生成的码(path 上限分别是 1024 和 128 字符)。参数在页面的 onLoad(query) 里拿到。
scene
给 getUnlimitedQRCode 用,这个接口生成的码不限数量。它的 page 不能带参数,能带进去的只有 32 个字符以内的 scene,页面里从 query.scene 取,要先 decodeURIComponent。
Scheme 链接
微信明文 URL Scheme:weixin://dl/business/?appid=…&path=…&query=…,在后台声明后不调接口就能自己拼。iOS 短信里能直接识别,安卓要从网页里跳转。支付宝是 alipays://platformapi/startapp。
服务端接口请求体
加密 URL Scheme 和 URL Link 要用微信服务端接口生成(只对已发布、非个人主体的小程序开放)。这里给的请求体加上 access_token 就能发。
含中文的值在链接里保持百分号编码。如果页面拿到的还是编码后的样子,用 decodeURIComponent 解开再用。
三步
印刷或群发前,先用手机把每个链接、每张码都试一遍。
-
1
填页面
从
app.json复制页面路径,选平台;要 scheme 链接就填上 AppID。 -
2
加参数
业务参数(商品 ID、门店编号)每行一个,再填活动用的 utm_*。要塞进 32 位 scene 的话,ID 尽量短。
-
3
复制需要的格式
分享卡片和有数量限制的码用路径,不限数量的码用 scene,短信和网页用 scheme 或接口请求体。先把标「错误」的改掉。
官方文档里的限制
2026-11-10 对照微信、支付宝开发文档核对。每天的调用次数上限变得比格式快,以后台显示为准。
- 编码:键和值都按 UTF-8 百分号编码(
encodeURIComponent),空格写成%20,「海报」写成%E6%B5%B7%E6%8A%A5 - 微信 scene 和 query 的字符范围:数字、大小写字母和
!#$&'()*+,/:;=?@-._~;scene 不支持%,query 要 url_encode - 微信 URL Scheme / URL Link:path 必须是已发布小程序里存在的页面,不能带 query,参数单独传
- 支付宝:
alipays://platformapi/startapp?appId=…&page=…&query=…;page 里?后的页面参数和整个 query 都要 UrlEncode,否则只能拿到第一个参数
| 格式 | 参数放哪 | 上限 | 场景值 |
|---|---|---|---|
| getUnlimitedQRCode | scene(page 不带参数) | scene ≤ 32 字符,不能有 % | 1047 / 1048 / 1049 |
| getQRCode | path 里的 query | path ≤ 1024 字符 | 1047 / 1048 / 1049 |
| createQRCode | path 里的 query | path ≤ 128 字符 | 1011 / 1012 / 1013 |
| 明文 URL Scheme | query=(编码后) | query ≤ 512 字符 | 1286 |
| 加密 URL Scheme | 接口的 query,或在链接后拼 cq | query ≤ 1024,cq ≤ 256 | 1065 |
| URL Link | 接口的 query,或在链接后拼 cq | query ≤ 1024,cq ≤ 256 | 1194(微信内 1167) |
一个商品页,三个入口
一家店推广商品 1024:门店海报、短信、社群转发。同一个页面,三种格式。
| 入口 | 格式 | 填什么 |
|---|---|---|
| 门店海报(20 家店) | getUnlimitedQRCode | page 填 pages/goods/detail,scene 填 id=1024&s=21(13 个字符,21 号店) |
| 短信 | URL Link 或明文 URL Scheme | query 填 id=1024&utm_source=sms&utm_campaign=double11 |
| 社群转发 | 分享卡片的 path | pages/goods/detail?id=1024&utm_source=group |
整套 utm 放不进 32 个字符,所以海报码只带门店编号,由页面对应到活动。再配合场景值(1047、1194、1008)就能确认每次访问走的是哪个入口。
小程序链接为什么会丢参数
几乎都是编码问题,或者参数放错了字段。
嵌套的 query 里 & 没编码
scheme 里写 query=a=1&b=2,b 会被当成 scheme 自己的参数丢掉。整段编码:query=a%3D1%26b%3D2。
不限数量的码 page 带了参数
getUnlimitedQRCode 的 page 不能带参数。参数放 scene,页面读 query.scene。
scene 里写中文
scene 不支持 %,编码后的中文放不进去。用 ID,到服务器上查详细信息。
和 SDK 的参数重名
TapCub 小程序 SDK 的 withShareParams() 会在分享路径上用 tc_sd、tc_sdp、tc_sfp,自己的参数换别的名字。
参数和场景值在同一张报表里
TapCub 小程序 SDK 每次启动都会记下场景值和启动参数,每张码、每条链接都能单独计数。
小程序页面路径怎么带参数?
在路径后面加 query:pages/goods/detail?id=1024&from=poster,页面在 onLoad(query) 里读取。值里有中文、空格或 & 的要先编码。
小程序码的 scene 参数有什么限制?
getUnlimitedQRCode 的 scene 最多 32 个可见字符,只能用数字、大小写字母和 !#$&'()*+,/:;=?@-._~,不支持 %,所以中文没法用 urlencode 放进去。page 不能带参数;页面里用 decodeURIComponent(query.scene) 读取。
URL Scheme 和 URL Link 有什么区别?
都能从微信外打开小程序。URL Scheme 形如 weixin://dl/business/?t=…(加密)或 ?appid=…&path=…(明文);URL Link 是 https 链接(https://wxaurl.cn/…),网页和微信内也能用。加密 Scheme 和 URL Link 由服务端接口生成,明文 Scheme 在后台声明后自己拼。
明文 URL Scheme 打不开怎么办?
先确认后台已开启「明文 Scheme 拉起此小程序」;path 要是已发布版本里存在的页面且不带参数;query 要编码且不超过 512 个字符。安卓短信里不识别 scheme,要从网页里跳转。
支付宝小程序跳转链接怎么拼?
alipays://platformapi/startapp?appId=<AppID>&page=<页面路径>&query=<启动参数>,page 里 ? 后的参数和整个 query 都要编码。网页和短信里用时,把 scheme 再编码一次接在 https://ds.alipay.com/?scheme= 后面。
小程序路径要不要加 utm 参数?
要按活动看效果就加:TapCub 的「带参链接 / 渠道二维码」表按 utm_source 和 utm_campaign 汇总,和场景值互不影响。32 位的 scene 里放不下,就用短 ID 对应。
我填的内容会上传吗?
不会。路径、链接和请求体都在浏览器里生成。分享链接只把输入放在网址 # 后面,浏览器不会发给服务器。