iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >微信小程序-获取不限制的小程序码(二)
  • 163
分享到

微信小程序-获取不限制的小程序码(二)

微信小程序 2023-09-01 22:09:44 163人浏览 八月长安
摘要

一、获取小程序码 获取小程序码 | 微信开放文档 与 createQRCode 总共生成的码数量限制为 100,000,请谨慎调用  调用方式 https 调用 POST Https://api.weixin.qq.com/wxa/getw

一、获取小程序

获取小程序码 | 微信开放文档

与 createQRCode 总共生成的码数量限制为 100,000,请谨慎调用 

调用方式

https 调用

POST Https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN

二、获取小程序二维码

与 wxacode.get 总共生成的码数量限制为 100,000,请谨慎调用

调用方式

HTTPS 调用

POST https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN

获取不限制的小程序码 getUnlimitedQRCode

获取不限制的小程序码 | 微信开放文档

接口应在服务器端调用,详细说明参见服务端API

本接口支持云调用。需开发者工具版本 >= 1.02.1904090(最新稳定版下载),wx-server-sdk >= 0.4.0

接口说明

接口英文名

getUnlimitedQRCode

功能描述

该接口用于获取小程序码,适用于需要的码数量极多的业务场景。通过该接口生成的小程序码,永久有效,数量暂无限制。 更多用法详见 获取小程序码

注意事项

  • 如果调用成功,会直接返回图片二进制内容,如果请求失败,会返回 JSON 格式的数据。
  • POST 参数需要转成 jsON 字符串,不支持 fORM 表单提交。
  • 调用分钟频率受限(5000次/分钟),如需大量小程序码,建议预生成

获取 scene 值

  • scene 字段的值会作为 query 参数传递给小程序/小游戏。用户扫描该码进入小程序/小游戏后,开发者可以获取到二维码中的 scene 值,再做处理逻辑。
  • 调试阶段可以使用开发工具的条件编译自定义参数 scene=xxxx 进行模拟,开发工具模拟时的 scene 的参数值需要进行 encodeURIComponent

小程序

Page({  onLoad (query) {    // scene 需要使用 decodeURIComponent 才能获取到生成二维码时传入的 scene    const scene = decodeURIComponent(query.scene)  }})

小游戏

// 在首次启动时通过 wx.getLaunchOptionsSync 接口获取const {query} = wx.getLaunchOptionsSync()const scene = decodeURIComponent(query.scene)// 或者在 wx.onShow 事件中获取wx.onShow(function ({query}) {  // scene 需要使用 decodeURIComponent 才能获取到生成二维码时传入的 scene  const scene = decodeURIComponent(query.scene)})

调用方式

HTTPS 调用

POST https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN 

云调用

  • 出入参和HTTPS调用相同,调用方式可查看云调用说明文档

  • 接口方法为: openapi.wxacode.getUnlimited

第三方调用

  • 调用方式以及出入参和HTTPS相同,仅是调用的token不同

  • 该接口所属的权限集id为:17、58

  • 服务商获得其中之一权限集授权后,可通过使用authorizer_access_token代商家进行调用

请求参数

属性类型必填说明
access_tokenstring接口调用凭证,该参数为 URL 参数,非 Body 参数。使用getAccessToken 或者 authorizer_access_token
scenestring最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)
pagestring默认是主页,页面 page,例如 pages/index/index,根路径前不要填加 /,不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面。
check_pathbool默认是true,检查page 是否存在,为 true 时 page 必须是已经发布的小程序存在的页面(否则报错);为 false 时允许小程序未发布或者 page 不存在, 但page 有数量上限(60000个)请勿滥用。
env_versionstring要打开的小程序版本。正式版为 "release",体验版为 "trial",开发版为 "develop"。默认是正式版
widthnumber默认430,二维码的宽度,单位 px,最小 280px,最大 1280px
auto_colorbool自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调,默认 false
line_colorobject默认是{"r":0,"g":0,"b":0} 。auto_color 为 false 时生效,使用 rgb 设置颜色 例如 {"r":"xxx","g":"xxx","b":"xxx"} 十进制表示
is_hyalinebool默认是false,是否需要透明底色,为 true 时,生成透明底色的小程序

返回参数

属性类型说明
bufferbuffer图片 Buffer
errcodenumber错误码
errmsgstring错误信息

调用示例

示例说明: HTTPS调用

请求数据示例

{ "page": "pages/index/index", "scene": "a=1", "check_path": true, "env_version": "release"} 

返回数据示例

{ "errcode": 0, "errmsg": "ok", "contentType": "image/jpeg", "buffer": Buffer} 

示例说明: 云函数调用

请求数据示例

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.getUnlimited({        "page": 'pages/index/index',        "scene": 'a=1',        "checkPath": true,        "envVersion": 'release'      })    return result  } catch (err) {    return err  }} 

返回数据示例

{ "errcode": 0, "errmsg": "ok", "contentType": "image/jpeg", "buffer": Buffer} 

三、遇到问题踩坑

1、获取小程序二维码getwxacodeunlimit出现41030

{"errcode":41030,"errmsg":"invalid page rid: 60ed0729-6826af96-2768e17d"}

原因:

check_path:默认是true,检查page 是否存在,为 true 时 page 必须是已经发布的小程序存在的页面(否则报错);为 false 时允许小程序未发布或者 page 不存在, 但page 有数量上限(60000个)请勿滥用

env_version:要打开的小程序版本。正式版为 "release",体验版为 "trial",开发版为 "develop"。默认是正式版

解决方案:

路径问题

传入的页面路径,pages前不可用加 " / "
正确:‘pages/index/index’
错误:‘/pages/index/index’

小程序参数问题

小程序的参数不能超过32个字符

小程序是否发布

传入page,生成指定页面的二维码的前提是,小程序必须审核并发
审核成功并发布的小程序才能正常调用二维码生成接口

错误码

错误码错误码取值解决方案
-1system error系统繁忙,此时请开发者稍候再试
40001invalid credential  access_token isinvalid or not latest获取 access_token 时 AppSecret 错误,或者 access_token 无效。请开发者认真比对 AppSecret 的正确性,或查看是否正在为恰当的公众号调用接口

2、小程序码加载不全 

博主遇到小程序码加载不全,如下

 

设置图片大小,根据参数 width 设置

缓存原因

在图片的路径的后面拼接 '?时间戳' 或者 '?随机数'等,让浏览器和手机认为每次加载的其实不是同一张图片

检查小程序download和request域名是否配置

微信公众平台

开发管理----->开发设置

CDN加载图片资源时,多台服务器中正在下载,或者图片流尚未回源

NFS同步图片资源延迟

如何通过Linux系统挂载NFS文件系统_文件存储NAS-阿里云帮助中心

基于文件close/open的CTO一致性

由于超时的最终一致性无法保证ECS-2可以立刻读ECS-1写入的数据。因此,为了提升性能,NFS还提供了基于文件的CTO(close-to-open)一致性保证,即当两个及以上计算节点同时读写相同的文件时,ECS-1的修改在ECS-2不一定能立即看到。但是,一旦ECS-1写入并关闭,之后在任何一个计算节点重新打开该文件都可以保证能访问到新写入的数据。

例如,生产者ECS生产了文件X,生产完毕后执行了close。然后给消息队列发一条消息说,文件X生产完毕。消费者ECS订阅消息队列,读到消息X(文件X生产完毕),此时,消费者ECS再去open这个文件,通过open返回的fd去读取这个文件,则一定能够读到文件X的所有内容。如果消费者ECS在生产者ECS生产完毕之前,就open了文件X,并且持有了fd,当收到消息后,直接用这个fd去读,是不保证能够读取到最新数据的

典型问题

文件创建“延迟”

  • 问题现象:

    ECS-1创建了文件abc,但是ECS-2需要过一段时间才能看到ECS-1创建的文件abc,有时会延迟1s,有时甚至会到1分钟,这是为什么?

  • 问题原因:

    这是Lookup Cache导致的,符合预期T时间。例如,ECS-2在ECS-1创建文件abc前进行了访问,导致ECS-2发生文件不存在,于是缓存了一条文件abc不存在的记录。在T时间内,由于FileAttr还没有过期,ECS-2再次访问时,仍会访问第一次缓存到文件abc不存在的记录。

  • 解决方案:如果要保证ECS-1创建文件后,ECS-2立即就能看到它,可以使用如下方案:
    • 方案一:关闭ECS-2的Nagtive Lookup Cache,不缓存不存在的文件。该方案开销最小。挂载时,添加 lookupcache=positive(默认值 lookupcache=all)字段,挂载命令如下所示:
      sudo mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,lookupcache=positive file-system-id.region.nas.aliyuncs.com:/ /mnt
    • 方案二:关闭ECS-2的所有缓存。该方案会导致性能非常差,请根据业务实际情况选择合适的方案。挂载时,添加 actimeo=0字段,挂载命令如下所示:
      sudo mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,actimeo=0 file-system-id.region.nas.aliyuncs.com:/ /mnt

文件写入延时

  • 问题现象:

    ECS-1更新了文件abc,但是ECS-2立即去读它,仍然是旧的内容,这是为什么?

  • 问题原因:涉及如下两个原因。
    • 第一个原因:ECS-1写了abc后,不会立即flush,会先进行PageCache,依赖应用层调用fsync或者close。
    • 第二个原因:ECS-2存在文件Cache,可能不会立即去服务端取最新的内容。例如,ECS-2在ECS-1更新文件abc之时,就已经缓存了数据,当ECS-2再次去读时,仍然使用了缓存中的内容。
  • 解决方案:如果要保证ECS-1创建文件后,ECS-2立即就能看到它,可以使用如下方案:
    • 方案一:CTO一致性,让ECS-1或ECS-2的读写符合CTO模式,则ECS-2一定能读到最新数据。具体来说,ECS-1更新文件后,一定要执行close或者执行fsync。ECS-2读之前,重新open,然后再去读。
    • 方案二:关闭ECS-1和ECS-2的所有缓存。该方案会导致性能非常差,请根据业务实际情况选择合适的方案。
      • 关闭ECS-1的缓存。挂载时,添加noac字段,保证所有写入立即落盘。挂载命令如下所示:
        sudo mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,noac file-system-id.region.nas.aliyuncs.com:/ /mnt
        说明
        • 如果ECS-1的写操作完成后会调用fsync,或者使用sync写,可以将上面的noac替换为actimeo=0,性能会稍好一点。
        • noac等价于actimeo=0加sync(即,强制所有写入都为sync写)。
      • 关闭ECS-2的缓存。挂载时,添加actimeo=0字段,忽略所有缓存。挂载命令如下所示:
        sudo mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,actimeo=0 file-system-id.region.nas.aliyuncs.com:/ /mnt

来源地址:https://blog.csdn.net/MinggeQingchun/article/details/129821870

--结束END--

本文标题: 微信小程序-获取不限制的小程序码(二)

本文链接: https://www.lsjlt.com/news/389700.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 微信小程序-获取不限制的小程序码(二)
    一、获取小程序码 获取小程序码 | 微信开放文档 与 createQRCode 总共生成的码数量限制为 100,000,请谨慎调用  调用方式 HTTPS 调用 POST https://api.weixin.qq.com/wxa/getw...
    99+
    2023-09-01
    微信小程序
  • 获取微信小程序源码
    一、使用adb连接手机获取小程序源码 1、手机root环境下 开启调试模式,手机通过USB数据线连接电脑 查看设备 adb.exe devices 连接设备 adb.exe connect 10.10.10.1 //ip为手机IP ...
    99+
    2023-09-24
    微信小程序 小程序 Powered by 金山文档
  • 获取微信小程序源码教程
    最近在研究微信小程序,网上很多的小程序都是可以借鉴的,那么如何获取源码就很重要了 目录 1.安装对应环境 (Node,js) 2.下载反编译脚本 3.下载安卓模拟器获取微信小程序反编译文件 4.反编译   1.安装对应环境 (Node,j...
    99+
    2023-09-06
    微信小程序 小程序 node.js
  • 微信小程序·获取小程序版本号
     小程序基础库版本 2.10.2 中提供了获取线上小程序版本号的功能,代码如下:  在app.js中 const miniProgram = wx.getAccountInfoSync(); this.version = ...
    99+
    2023-09-06
    微信小程序 小程序 前端
  • 微信小程序API怎么获取页面二维码
    这篇文章主要介绍“微信小程序API怎么获取页面二维码”,在日常操作中,相信很多人在微信小程序API怎么获取页面二维码问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序API怎么获取页面二维码”的疑惑有所...
    99+
    2023-06-26
  • 【小程序】微信小程序如何获取微信公众号openid?
    一图总览 大家可以先看看下面的流程图,来了解笔者想实现的功能,简单来说就是两个不同主体间的小程序与公众号该如何产生关联。 注:为什么这里要强调不同主体呢,因为同主体的小程序与公众号是可以通过unionId来进行关联绑定。 ...
    99+
    2023-08-19
    微信小程序 小程序 微信
  • 微信小程序获取头像
    微信小程序获取头像的问题 微信小程序获取用户权限被收回(需要使用头像昵称填写) 当小程序需要让用户完善个人资料时,可以通过微信提供的头像昵称填写能力快速完善。 根据相关法律法规,为确保信息安全,由用户上传的图片、昵称等信息微信侧将进行...
    99+
    2023-09-29
    微信小程序 小程序 微信
  • 微信小程序获取位置信息
    目录 一、获取当前位置的经纬度 二、获取当前具体信息(国家,城市等信息) 1.注册腾讯地图账号 2.创建应用 3.添加key 4.下载sdk文件 5.获取位置信息 5.1剪切完成后,在你需要引用位置信息的模板中的js文件中进行配置 5.2在...
    99+
    2023-09-01
    微信小程序 小程序
  • 微信小程序获取用户信息
    要在微信小程序中获取用户信息,你可以按照以下步骤进行操作: 在小程序的app.json文件中添加"scope.userinfo"权限,例如: ``` "permission": {   "scope.userinfo": {     "d...
    99+
    2023-09-21
    微信小程序 小程序
  • 微信小程序获取用户openid
    小程序端直接获取: 实现代码:直接简单 wx.login({ success(res) { if (res.code) { //发起网络请求 wx.request({ ...
    99+
    2023-08-17
    微信小程序 前端 小程序
  • 微信小程序获取二维码报错47001怎么解决
    错误码47001是指传入的参数不合法。要解决这个问题,需要检查以下几个方面: 检查参数是否正确:确保传入的参数符合微信小程序的规...
    99+
    2023-10-26
    微信小程序
  • 如何生成无限制的微信小程序码
    小编给大家分享一下如何生成无限制的微信小程序码,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!概述现在除了用二维码之外,微信还可以...
    99+
    2024-04-02
  • 获取微信小程序具体链接
    先绑定小程序  2、点击首页图文消息  3、点击小程序,输入小程序appID (小程序appId可以通过小程序,更多资料查看   -附获取appid相关链接 微信小程序AppID、原始ID的获取方法-微星极光运营小课堂 - 微星极光—大鬼...
    99+
    2023-10-10
    微信小程序 小程序
  • 微信小程序如何获取节点
    小编给大家分享一下微信小程序如何获取节点,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!wx.createSelectorQuery()基础库 1.4.0 开始支持...
    99+
    2023-06-26
  • 微信小程序-扫普通链接二维码打开小程序
    类似很多饭堂扫桌面二维码点餐都是用这种方式实现扫普通链接二维码打开小程序 一、小程序设置: 链接后面带参数: 首先要在小程序管理-开发管理-开发设置:扫普通链接二维码打开小程序 添加可访问的链接,此链接要求域名已备案,并且要下载校验文件,...
    99+
    2023-10-04
    小程序 微信小程序
  • php生成微信小程序二维码
    //生成小程序二维码,$mem_id是二维码带的参数,拿过去写上自己的appid和秘钥就能用 public function ceshihtml($mem_id) { ...
    99+
    2023-09-12
    微信小程序 php 小程序
  • 微信小程序登录及获取手机号码
    前端:微信先授权登录后再授权获取手机号码 后端:先微信登录获取openid返回前端,前端再传递手机号码code给后端获取手机号码并在本地数据量注册用户信息,需提供2个接口 第一步:先通过code微信授权登录获取openid $url = '...
    99+
    2023-08-31
    微信小程序 php
  • 微信小程序获取手机验证码的方法
    本文实例为大家分享了微信小程序获取手机验证码的具体代码,供大家参考,具体内容如下 完成手机验证码的功能: (1)效果图如下:  (开始发送验证码)   (重新...
    99+
    2024-04-02
  • 如何获取小程序页面小程序码
    获取小程序页面小程序码的方法:用电脑登录微信公众平台,进入小程序管理后台。点击导航栏中的“工具”选项菜单,再选“生成小程序码”功能。填入小程序APPID进行搜索,然后点下一步。填入页面地址后,点确定生成小程序码,保存生成的小程序码图片即可。...
    99+
    2024-04-02
  • 不懂代码怎么制作微信小程序
    这篇文章将为大家详细讲解有关不懂代码怎么制作微信小程序,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先自己制作小程序:第一步,注册小程序,如果有公众号且认证过了的,直接在公众号后台,点击小程序,注册小程...
    99+
    2023-06-27
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作