微信扫码跳转微信小程序

本文介绍了在项目中如何通过微信小程序进行扫码支付,重点讲解了使用URLScheme进行跳转的方法,包括获取scheme码、url_link以及通过普通链接二维码打开,同时提到了微信官方的调用限制和参数传递方式。

一:首先声明为什么需要这样做

        项目中需要在后台管理页面进行扫码支付,其他人弄了微信小程序支付,所以就需要挑战小程序进行支付,在跳转的时候需要参数例如订单编号等

二:跳转小程序的方法有多种

        接口调用凭证 | 微信开放文档 

        具体可以参考微信开放文档

1.获取scheme码

 按照文档说:

调用上限
  • 每天生成 URL Scheme 和 URL Link 总数量上限为50万
  • 自 2022 年 4 月 11 日起,URL Scheme有效期最长 30 天,不再支持永久有效的URL Scheme、不再区分短期有效URL Scheme与长期有效URL Scheme。若在微信外打开,用户可以在浏览器页面点击进入小程序。每个独立的URL Scheme被用户访问后,仅此用户可以再次访问并打开对应小程序,其他用户无法再次通过相同URL Scheme打开该小程序。在本次规则调整生效前已经生成的URL Scheme,如果有效期超过30天或长期会被降级为30天有效,只能被1个用户访问,开始时间从调整日期开始计算

个人测试好像不是那么回事 ,貌似多个用户都可以访问,不知是不是个例

返回的scheme 类似于下面这样样子  后端可以直接重定向 或者直接返回前端 看需求

在schcme中附带参数如下图所示

         2. 获取url_link

 其他跟第一种方法类似  主要就是传参的区别

 3.扫普通链接二维码打开小程序

扫普通链接二维码打开小程序 | 微信开放文档

可以在原有二维码的基础上直接用微信扫码进入

进入微信公众平台 小程序    安装上面的文档配置就行

 注意 此处配置完毕后只能用微信扫码打开

微信跳转小程序时,对参数进行二次编的实现方法主要涉及在生成二维时对参数进行编,以及在小程序端接收并解析参数时进行解。以下是一个完整的实现方法: ### 参数编(生成二维时) 在生成二维时,通常需要将参数拼接到 URL 上,例如 `https://example.com/page?param1=value1&param2=value2`。为了确保参数在传输过程中不会被破坏,需要对参数值进行编。可以使用 `URLEncoder.encode()` 方法对参数值进行编。 ```java import java.net.URLEncoder; import java.nio.charset.StandardCharsets; public class UrlEncoderExample { public static void main(String[] args) { try { String param1 = URLEncoder.encode("value1", StandardCharsets.UTF_8.toString()); String param2 = URLEncoder.encode("value2", StandardCharsets.UTF_8.toString()); String url = "https://example.com/page?param1=" + param1 + "&param2=" + param2; System.out.println(url); } catch (Exception e) { e.printStackTrace(); } } } ``` ### 参数解小程序端接收参数时) 在小程序端,接收到的参数通常是经过编的,需要对其进行解。可以使用 `decodeURIComponent()` 和 `decodeURI()` 方法对参数进行解。 ```javascript Page({ onLoad(options) { let query = options.q; let params = this.getQueryParams(query); console.log(params); }, getQueryParams(queryString) { queryString = decodeURIComponent(queryString); let params = {}; if (queryString) { let queryArray = queryString.split('?'); if (queryArray.length > 1) { let query = queryArray[1]; let array = query.split('&'); array.map((value) => { let valueArray = value.split('='); if (valueArray.length > 1) { params[valueArray[0]] = decodeURI(valueArray[1]); } }); } } return params; } }); ``` ### 说明 1. **编部分**:在生成二维时,使用 `URLEncoder.encode()` 对参数值进行编,确保特殊字符不会破坏 URL 结构[^2]。 2. **解部分**:在小程序端,首先使用 `decodeURIComponent()` 对整个查询字符串进行解,然后使用 `decodeURI()` 对每个参数值进行解,以确保中文字符等特殊字符能够正确显示[^1]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值