生成小程序二维码、小程序码

news2024/11/28 2:42:45

微信自定义生成二维码

  • 使用微信云开发生成自定义二维码、小程序码
    • 话不多说,我们先来看最终的展示效果
    • 生成码有三种方式
    • 操作步骤
      • 1. 云环境的初始化
      • 2. 在页面上开辟一个容器来展示二维码(包括预览和保存到相册的按钮)
      • 3. 创建云函数
      • 4. 生成二维码的方法 getQrCode
      • 5. 保存二维码方法 saved
      • 6. 预览二维码方法 previewed
      • 7. 获取二维码传递的参数
    • 如果对您有帮助,请三连❤,么么哒~

使用微信云开发生成自定义二维码、小程序码

话不多说,我们先来看最终的展示效果

在这里插入图片描述
这一张是最终生成二维码的效果,点击保存到相册,会把二维码保存到手机相册,在微信开发者工具调试的时候,会将图片保存到电脑上
在这里插入图片描述
这个是我保存到桌面上的二维码
在这里插入图片描述
这张是二维码的预览功能

生成码有三种方式

  • 生成二维码(永久有效,有数量限制):cloud.openapi.wxacode.createQRCode
  • 生成小程序码(永久有效,有数量限制):cloud.openaapi.wxacode.get
  • 生成无限量小程序码(永久有效,无数量限制):cloud.openaapi.wxacode.getUnlimited

操作步骤

1. 云环境的初始化

// 云环境的初始化 app.js文件
        wx.cloud.init({
            env:'cloud1-9gmt6vpx11d9ced0',   // 环境ID
            traceUser:true
        })
// project.config.json文件
		"cloudfunctionRoot": "cloudFn/",  // 与第三步云函数文件夹名一致即可

点击微信开发者工具中的云开发,会出现一个界面,直接复制环境ID,然后将复制的ID放在env中即可
在这里插入图片描述
在这里插入图片描述

2. 在页面上开辟一个容器来展示二维码(包括预览和保存到相册的按钮)

<view class="img-cloud">
	<button bindtap='getQrCode'>生成小程序二维码</button>
	<image class="img" src='{{image}}' bindtap='previewed' data-filepath='{{image}}'></image>
	<button bindtap='saved'>保存到相册</button>
</view>

3. 创建云函数

在这里插入图片描述

  1. 在微信开发者工具中根目录创建一个文件夹cloudFn,右击文件夹,选择新建Node.js云函数,函数名就叫createQRCode,会自动生成三个文件
    在这里插入图片描述

  2. index.js文件中的代码

// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境

// 云函数入口函数
exports.main = async (event, context) => {
    try{
        const result = await cloud.openapi.wxacode.createQRCode({
        // 扫码后进入的页面路径和携带的参数
            path:'pages/indexv2/index?discount=' + event.discount +'&endDate=' + event.endDate,     
            width:300
        })
        return result
    }catch(err){
        return err
    }
}
  1. config.json文件代码
{
    "permissions": {
        "openapi": [
            "wxacode.createQRCode"
        ]
    }
}
  1. 上述步骤完成后,在createQRCode文件夹右击,选择第三个上传并部署:云端安装依赖(不上传node_modules),上传成功后会有提示。
    在这里插入图片描述

4. 生成二维码的方法 getQrCode

// 生成二维码
    getQrCode(){
        wx.showLoading({
            titel:"生成中..."
        });
        let that = this;
        wx.cloud.callFunction({
            name:'createQRCode',   // 小程序二维码
            // name:'wxacode',   // 小程序码,有限制
            // name:'getUnlimited',   // 小程序码,无限制
            data:{   // 二维码传递的参数,可自定义,需要与第3步index.js文件的path参数相同
                discount:'0.91',
                endDate:'2023-11-07'
            },
            success(res){
                console.log(res);
                let fileManager = wx.getFileSystemManager();
                console.log(wx.env,'env');
                let filePath = wx.env.USER_DATA_PATH + '/qr.jpg';   // 二维码的一个本地地址,图片名称可随意起
                console.log(filePath);
                fileManager.writeFile({
                    filePath,
                    encoding:'binary',
                    data:res.result.buffer,
                    success:(result)=>{
                        console.log(result);
                        let codeImg = filePath;  
                        that.setData({    // 将二维码渲染到页面上
                            image:codeImg
                        })
                        wx.hideLoading({})
                    }
                })
            }
        })
    },

5. 保存二维码方法 saved

// 保存二维码到手机上
    saved(){
        wx.saveImageToPhotosAlbum({
          filePath: this.data.image,
          success:res=>{
            console.log(res);
            wx.showToast({
                title:'保存成功',
            })
          }
        })
    },

6. 预览二维码方法 previewed

// 预览二维码
    previewed(e){
        const {filepath} = e.currentTarget.dataset;
        wx.previewImage({
          urls: [filepath],   // 可传多个地址
        })
    }

7. 获取二维码传递的参数

在第3步的2中,我们设置的扫码进入的页面是pages/indexv2/index,因此我们可在这个文件的onLoad中获取参数

onLoad(options) {
		console.log(options,'options');
		const {discount,endDate} = options;
		if(discount){
			// 书写业务逻辑
			xxx
		}
		if(endDate){
			// 书写业务逻辑
			xxx
		}
	},

如果对您有帮助,请三连❤,么么哒~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/843947.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

黑客真的那么神奇吗?

对于这个话题我觉得我还是有发言权的&#xff0c;因为本人2008年从事这个行业至今已经是第八个年头。怎么进入这个行业的呢。说起来可笑因为当时家里并没有安装有线电视&#xff0c;而当时我才上初中有碰巧是奥运期间本人是个狂热体育迷所以只能去网吧看直播。兜里又没有几块钱…

按轨迹运行(纯跟踪)

文章目录 import numpy as np import math import matplotlib.pyplot as pltk = 0.1 # 前视距离系数 Lfc = 2.0 # 前视距离 Kp = 1.0 # 速度P控制器系数 dt = 0.1 # 时间间隔,单位:s L = 2.9 # 车辆轴距,单位:mdef plot_arrow(x, y, yaw, length=5, width=1):dx = len…

研发工程师玩转Kubernetes——hostPath

有别于《研发工程师玩转Kubernetes——emptyDir》一文中介绍的emptyDir&#xff0c;hostPath可以在同一个Node的不同Pod间共享卷。 下面的清单文件利用了Pod亲和性&#xff0c;让Pod集中到一个Node上。 apiVersion: apps/v1 kind: Deployment metadata:name: hostpath-deploy…

yolo训练参数scale和multi-scale的区别

yolov5/v7训练时,有两个和多尺度有关的参数,一个是scale, 另一个是multi-scale(yolov8去掉了这个)。 其中scale在超参数配置文件中设置: multi-scale在训练脚本中设置: 那么这两个参数有什么区别呢? 首先我们看看代码中使用它们的地方。 scale scale在datasets.py的ra…

物联网平台使用笔记

阿里云的IOT平台限制了50个设备。排除 移动云的限制较少&#xff0c;这里试用下。 创建完产品&#xff0c;接入设备后。使用MQTT客户端测试 其中client id 为设备id&#xff0c; username 为产品id&#xff0c; password 可以使用设备调试那里生成的。或使用官方token.exe 生成…

时钟周期=1/时钟频率

目录 一、时钟周期 二、时钟频率 三、计算时钟周期 一、时钟周期 时钟周期是指计算机系统中时钟信号的一个完整循环所需要的时间。通常情况下&#xff0c;CPU和其他芯片需要在同一时钟信号下协调其工作。时钟信号的频率越高&#xff0c;系统的处理速度就越快。在计算机系统…

高德地图实现点聚合功能的详细步骤(附源码)

目录 介绍准备工作1.注册并登录高德地图开放平台&#xff0c;申请密钥2.在Vue项目中安装高德地图的相关库/插件。 一、点聚合1.引入高德地图API<font color purple>initializeMap()<font color purple>loadData()<font color purple>createMarkerClustere…

Android Animation Made Easy

原文链接 Android Animation Made Easy 动画在任何一个GUI系统中都是一个非常重要的设计元素&#xff0c;它可以让交互变得优雅&#xff0c;让界面变得炫酷&#xff0c;让操作变得更加的舒畅&#xff0c;让状态过渡变得更加的顺滑&#xff0c;对视觉效果有极大的提升&#xff…

Jmeter添加cookie的两种方式

jmeter中添加cookie可以通过配置HTTP Cookie Manager&#xff0c;也可以通过HTTP Header Manager&#xff0c;因为cookie是放在头文件里发送的。 实例&#xff1a;博客园点击添加新随笔 https://i.cnblogs.com/EditPosts.aspx?opt1 如果未登录&#xff0c;跳转登录页&#xf…

自制免费 SQL 闯关自学网,代码开源!

大家好&#xff0c;我是鱼皮。 相信很多学编程的同学都学习过 SQL 吧&#xff1f;SQL 作为数据库查询语言&#xff0c;实在是太重要了&#xff0c;可以说是程序员、产品经理、数据分析同学的必备技能。 为了帮助大家自学 SQL&#xff0c;这段时间&#xff0c;我一个人做了个 …

陈述式资源管理方法详解

目录 一&#xff1a;陈述式资源管理方法 二&#xff1a; 基本信息查看 1、查看信息 2、创建 3、删除 4、service 的 type 类型 三&#xff1a;项目实例 1、创建 kubectl create命令 2、发布 kubectl expose命令 3、在 node 节点上操作&#xff0c;查看负载均衡端口…

机器学习笔记之优化算法(十一)凸函数铺垫:梯度与方向导数

机器学习笔记之优化算法——凸函数铺垫&#xff1a;梯度与方向导数 引言回顾&#xff1a;偏导数方向余弦方向导数方向导数的几何意义方向导数的定义 方向导数与偏导数之间的关联关系证明过程 梯度 ( Gradient ) (\text{Gradient}) (Gradient) 引言 本节作为介绍凸函数的铺垫&a…

深度学习和OpenCV的对象检测(MobileNet SSD视频流实时识别)

上期文章,我们分享了如何使用opencv 与MobileNet SSD模型来检测给定的图片,有网友反馈能否提供一下视频流的实时检测代码,其实我们在分享人脸识别的时候,分享了如何使用cv2.videoCpature 类来从视频中实时提取视频中的图片,进行人脸的识别,视频流的对象检测跟opencv的人脸…

rhel7安装Oracle 19C RAC

一、安装环境准备 1.1./dev/shm作为tmpfs挂载 --查看大小 df -h /dev/shm/--写入/etc/fstab vi /etc/fstab tmpfs /dev/shm tmpfs defaults,size3.9G 0 01.2.关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.service1.3.关闭s…

微服务——RestClient查询文档

快速入门 返回结果直接把json风格的结果封装为SearchReponse对象返回 public class HotelSearchTest {private RestHighLevelClient client;Testvoid testMatchAll() throws IOException {//1.准备requestSearchRequest request new SearchRequest("hotel");//2.准…

嵌入式基础知识-存储管理

上篇介绍了存储器的相关知识&#xff0c;偏重的是硬件结构&#xff0c;本篇介绍存储管理的相关知识&#xff0c;偏重的是软件管理。 1 存储管理概念 操作系统&#xff0c;包括嵌入式系统&#xff0c;通常利用存储管理单元MMU&#xff08;Memory Management Unit&#xff09;来…

OB数据库基础知识(学习记录)

目录 OB业务场景 公司使用理由&#xff1a; 常见 bootstrap 失败原因 常见OBD 部署 失败原因 Grafana 查看集群资源由各个节点的聚合情况 OB创建租户 表分组的场景 mysqldump到处数据库schema&#xff0c;数据库数据&#xff0c;表数据 数据同步框架 DATAX obdumper…

支付总架构解析

一、支付全局分层 一笔支付以用户为起点&#xff0c;经过众多支付参与者之后&#xff0c;到达央行的清算账户&#xff0c;完成最终的资金清算。那么我们研究支付宏观&#xff0c;可以站在央行清算账户位置&#xff0c;俯视整个支付金字塔&#xff0c;如图1所示&#xff1a; 图…

Java课题笔记~6个重要注解参数含义

1、[掌握]Before 前置通知-方法有 JoinPoint 参数 在目标方法执行之前执行。被注解为前置通知的方法&#xff0c;可以包含一个 JoinPoint 类型参数。 该类型的对象本身就是切入点表达式。通过该参数&#xff0c;可获取切入点表达式、方法签名、目标对象等。 不光前置通知的方…

乍得ECTN(BESC)申请流程

根据TCHAD/CHAD乍得法令&#xff0c;自2013年4月1日起&#xff0c;所有运至乍得的货物都必须申请ECTN(BESC)电子货物跟踪单。如果没有申请&#xff0c;将被视为触犯乍得的条例&#xff0c;并在目的地受到严厉惩罚。ECTN是英语ELECTRONIC CARGO TRACKING NOTE的简称&#xff1b;…