生成小程序URL Scheme

生成小程序URL Scheme

生成小程序 URL Scheme 文档

一、概述

小程序 URL Scheme 是一种可以打开特定小程序页面的链接,适用于从网页、短信等外部渠道直接跳转到指定的小程序页面。通过生成和使用小程序 URL Scheme,您可以方便地在不同平台之间实现用户引导与流量互通。

二、前提条件

  1. 已注册并认证的小程序:确保您已经拥有一个经过微信官方认证的小程序账号。
  2. 开发者权限:您需要具备小程序的开发者权限,以便能够访问小程序后台和API接口。
  3. HTTPS域名:用于接收URL Scheme回调通知的服务器域名需要是HTTPS协议。

三、生成步骤

步骤一:登录小程序管理后台
  1. 打开微信公众平台,使用您的管理员账号登录。
  2. 在左侧菜单栏中选择“开发”->“开发设置”。
步骤二:配置服务器域名
  1. 在“开发设置”页面中,找到“业务域名”、“JS接口安全域名”和“请求校验文件域名”配置项。
  2. 确保您的服务器域名已正确配置在这些选项中,并且使用的是HTTPS协议。
步骤三:调用API生成URL Scheme
  1. 使用小程序的开放API wxacode.getUnlimited 或 wxaopenapi.business.generateurlscheme 来生成URL Scheme。

    • wxacode.getUnlimited:主要用于生成无限量的小程序代码二维码,但也可以结合其他参数生成URL Scheme(需额外处理)。
    • wxaopenapi.business.generateurlscheme:专为生成URL Scheme设计的API,推荐使用该接口。
  2. 以下是一个基于wxaopenapi.business.generateurlscheme接口的示例代码(假设使用Node.js环境):

const axios = require('axios'); const crypto = require('crypto'); // 获取access_token的函数(需替换为您自己的逻辑) async function getAccessToken(appId, appSecret) { const url = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${appId}&secret=${appSecret}`; const response = await axios.get(url); return response.data.access_token; } // 生成签名函数(需根据文档要求实现) function generateSignature(accessToken, params) { // 对params进行排序并拼接成字符串 const stringToBeSigned = Object.keys(params).sort().map(key => `${key}=${params[key]}`).join('&'); const secret = 'your_app_secret'; // 注意:这里不是真正的app_secret,而是用于签名的密钥,需自行定义或存储 return crypto.createHash('sha1').update(`${stringToBeSigned}${secret}`).digest('hex'); } // 生成URL Scheme的主函数 async function generateUrlScheme() { const appId = 'your_app_id'; const appSecret = 'your_app_secret'; const accessToken = await getAccessToken(appId, appSecret); const path = '/pages/index/index'; // 小程序内的跳转路径 const query = { foo: 'bar' }; // 可选的查询参数 const params = { access_token: accessToken, jump_wxa: { path: path, query: JSON.stringify(query), }, is_expire: true, // 是否失效,true表示永久有效(注意:实际使用中可能受限制) expire_type: 1, // 失效类型,1为固定时间失效,0为永久有效(当is_expire为false时生效) expire_interval: 7 * 24 * 60 * 60, // 失效时间间隔,单位为秒(当expire_type为1时生效) }; const signature = generateSignature(accessToken, params); params['signature'] = signature; const url = `https://api.weixin.qq.com/wxa/business/generateurlscheme?access_token=${accessToken}`; const response = await axios.post(url, params); console.log(response.data.openlink); // 输出生成的URL Scheme } generateUrlScheme();

注意:上述代码中的generateSignature函数仅为示例,具体签名算法需参考微信小程序官方文档的详细要求。此外,is_expire和expire_type等参数的使用也可能受到微信官方的限制和调整,请务必查阅最新的官方文档