| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- // Node 脚本:生成带 storeId 的小程序 URL Link(可指定体验版)
- // 优点:可直接分享为链接或转成二维码,支持 env_version
- // 用法(Windows PowerShell):
- // $env:WX_APPID="wxbb048b80cd2a14b9"; $env:WX_SECRET="<你的AppSecret>"; node server/generate-url-link.js
- const https = require('https');
- const APPID = process.env.WX_APPID || 'wxbb048b80cd2a14b9';
- const SECRET = process.env.WX_SECRET; // 必须提供 AppSecret
- const STORE_ID = 'ARhMGM5Y1W';
- const PATH = 'nova-pbf/pages/index/index';
- const QUERY = `storeId=${STORE_ID}`;
- const ENV_VERSION = 'trial'; // 可选: 'develop' | 'trial' | 'release'
- function httpGetJson(url) {
- return new Promise((resolve, reject) => {
- https
- .get(url, (res) => {
- let data = '';
- res.on('data', (chunk) => (data += chunk));
- res.on('end', () => {
- try {
- const json = JSON.parse(data);
- resolve(json);
- } catch (e) {
- reject(e);
- }
- });
- })
- .on('error', reject);
- });
- }
- function httpPostJson(url, bodyObj) {
- const body = JSON.stringify(bodyObj);
- return new Promise((resolve, reject) => {
- const req = https.request(url, {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json',
- 'Content-Length': Buffer.byteLength(body),
- },
- });
- let data = '';
- req.on('response', (res) => {
- res.on('data', (chunk) => (data += chunk));
- res.on('end', () => {
- try {
- const json = JSON.parse(data);
- resolve(json);
- } catch (e) {
- reject(e);
- }
- });
- });
- req.on('error', reject);
- req.write(body);
- req.end();
- });
- }
- async function main() {
- if (!SECRET) {
- console.error('❌ 未提供 WX_SECRET(AppSecret)。请设置环境变量后重试。');
- process.exit(1);
- }
- console.log('🔑 获取 access_token...');
- const tokenResp = await httpGetJson(
- `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${APPID}&secret=${SECRET}`
- );
- if (!tokenResp.access_token) {
- console.error('❌ 获取 access_token 失败:', tokenResp);
- process.exit(1);
- }
- const accessToken = tokenResp.access_token;
- console.log('✅ access_token 获取成功');
- console.log('🔗 生成 URL Link...');
- const apiUrl = `https://api.weixin.qq.com/wxa/generate_urllink?access_token=${accessToken}`;
- const payload = {
- path: PATH,
- query: QUERY,
- env_version: ENV_VERSION,
- is_expire: false,
- };
- const resp = await httpPostJson(apiUrl, payload);
- if (!resp.url_link) {
- console.error('❌ 生成 URL Link 失败:', resp);
- process.exit(1);
- }
- console.log('✅ URL Link 生成成功:');
- console.log(resp.url_link);
- console.log('📌 打开该链接即可跳转到小程序(环境:', ENV_VERSION, '),并携带 query:', QUERY);
- }
- main().catch((e) => {
- console.error('程序异常:', e);
- process.exit(1);
- });
|