扫描二维码打开微信小程序,携带参数,含配置和代码详解

今天有个新需求,需要用户扫码打开我们小程序,需要携带信息记录邀请人是谁。

废话不多说,我们进入主题,首先要到小程序里面做配置。在开发管理里面,找到开发配置,往下滑到扫普通链接二维码打开小程序配置项里,点击添加

https://yanshi/?code=123 直接这样写是错误的,拿不到数据。  自己配置成https://yanshi/  就可以了,这是携带参数。/在域名后面的话可以跟参数,这是匹配的规则,域名后面没有/就不带参数。有/结尾,在二维码生成里就可以在域名后面加自己要的参数。

 

保存的时候有一个校验文件,需要在服务器下做配置,把下载好的txt文件给放在根目录下,名字要和他要求的一样,这个事情就不用前端操心了,截个报错的图发给运维或者是后端吧,让他们做一个配置,不然的话是无法保存的,需要做校验。

配置好了之后,需要点击发布,发布之后才会有效果,我已经配置好了两个规则

 

做好了配置,二维码在哪儿来呢,这个需要后端找一个二维码生成器,二维码里面可以配置一串字符串,我们小程序的配置规则是https://ceshi/,字符串可以写成htpps://ceshi/?code=123,code就是后端传给前端需要的参数,可以是某个用户的id,或者是邀请码,或者是别的。

二维码生成好之后放到服务器上,返回一个url给前端就可以了。这个图片可以打印,可以在小程序里展示,别人扫描之后就可以进入到小程序里面

准备工作都做好了,接下来就是在小程序里面获取到二维码里面的值了,其实很简单,小程序内置了方法提供给我们,在onLoad事件里面

onLoad(e) {
	//二维码携带参数
    // 获取到二维码原始链接内容
    //获取到链接的值之后,可以用split或者别的方法提取出来
	const query = decodeURIComponent(e.q) 
	const time = parseInt(e.scancode_time) // 获取用户扫码时间 UNIX 时间戳
	console.log(query)
	console.log(time)
},

以上就是扫描二维码进入小程序的步骤了,跟扫码点餐其实是一个功能,拉新或者别的功能的时候可以使用到哦,主要还是在配置上,配置好了就可以了。

如果以上对你有帮助的话,记得点赞和收藏哦,我还记录了很多开发时遇到的bug。都是全手打的

以下是Java生成微信小程序参数二维码的完整代码: ```java import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; import org.apache.commons.codec.binary.Base64; import org.json.JSONObject; public class WxMaQrcodeUtils { private static final String API_URL = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode"; private static final String PARAM_PAGE = "page"; private static final String PARAM_SCENE = "scene"; private static final String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token"; /** * 获取access_token * * @param appid 小程序appid * @param secret 小程序secret * @return access_token */ public static String getAccessToken(String appid, String secret) { String accessToken = null; try { String url = ACCESS_TOKEN_URL + "?grant_type=client_credential&appid=" + appid + "&secret=" + secret; URL obj = new URL(url); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); con.setRequestMethod("GET"); int responseCode = con.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { InputStream inputStream = con.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder stringBuilder = new StringBuilder(); String line; while ((line = bufferedReader.readLine()) != null) { stringBuilder.append(line); } bufferedReader.close(); JSONObject jsonObject = new JSONObject(stringBuilder.toString()); accessToken = jsonObject.getString("access_token"); } } catch (Exception e) { e.printStackTrace(); } return accessToken; } /** * 生成小程序参数二维码 * * @param accessToken 小程序access_token * @param page 小程序页面路径 * @param scene 小程序页面参数 * @return base64格式的二维码图片数据 */ public static String createQrcode(String accessToken, String page, String scene) { String base64Image = null; try { Map<String, Object> params = new HashMap<>(); params.put(PARAM_PAGE, page); params.put(PARAM_SCENE, scene); URL obj = new URL(API_URL + "?access_token=" + accessToken); HttpURLConnection con = (HttpURLConnection) obj.openConnection(); con.setRequestMethod("POST"); con.setRequestProperty("Content-Type", "application/json"); con.setDoOutput(true); con.getOutputStream().write(new JSONObject(params).toString().getBytes("UTF-8")); int responseCode = con.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { InputStream inputStream = con.getInputStream(); byte[] imageBytes = new byte[inputStream.available()]; inputStream.read(imageBytes); inputStream.close(); base64Image = Base64.encodeBase64String(imageBytes); } } catch (Exception e) { e.printStackTrace(); } return base64Image; } public static void main(String[] args) { String appid = "your_appid"; String secret = "your_secret"; String accessToken = getAccessToken(appid, secret); String page = "pages/index/index"; String scene = "key=value"; String base64Image = createQrcode(accessToken, page, URLEncoder.encode(scene)); System.out.println(base64Image); } } ``` 注意,需要引入Apache Commons Codec库。 其中,getAccessToken方法用于获取小程序的access_token,createQrcode方法用于生成小程序参数二维码并返回base64格式的图片数据。在main方法中调用以上两个方法即可生成小程序二维码
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值