精华内容
下载资源
问答
  • 二维码失效的原因
    千次阅读
    2021-06-28 10:15:33

    环景:

    钉钉电脑版6.0.15
    win10专业版

    问题描述:

    突然出现正在重连。。。,退出重新登录出现二维码失效和手机上确认登录电脑端没反应。
    之前钉钉网络自检说一下地址不通,测试了网络环境正常相应端口可以打开。
    203.119.129.47:443
    203.119.216.169:443

    解决方案:

    重启电脑,重新安装钉钉未解决,最后用密码登录

    更多相关内容
  • 3.通常的二维码都不能满足开发需求,大多数都要设置二维码有效时间来保证安全性,提供2种常见的二维码失效思路,简单易上手 4.提供通过QRCode.jar生成二维码的全部生产线上代码,可直接运行,含有关键注释
  • 第二讲 检查二维码失效状态

    千次阅读 2019-10-03 03:19:31
    在开发者界面用可以看到很多ptqrlogin开头的 name ...接下来判断二维码失效,两秒一次吧,弄一个Timer smart 类 #region 第二讲检查二维码状态 private static System.Timers.Timer S...

    在开发者界面用可以看到很多ptqrlogin开头的 name

    我要做的就是  模拟浏览器的操作,把它转换成我们自己的客户端。所以只要是浏览器里有的我们都要模拟。接下来判断二维码失效,两秒一次吧,弄一个Timer

     

     

    smart 类


    #region 第二讲检查二维码状态
    private static System.Timers.Timer StatuTimer = new System.Timers.Timer();
    public static void Login()
    {
    StatuTimer.AutoReset = true;
    StatuTimer.Elapsed +=StatuTimer_Elapsed;
    StatuTimer.Interval = 2000;
    StatuTimer.Start();
    }

    public static string Login_err = "其他";
    /// <summary>
    /// 检查二维码状态
    /// </summary>
    public static void Login_GetStatu()
    {
    string dat;
    dat = HTTP.Get(string.Format("https://ssl.ptlogin2.qq.com/ptqrlogin?ptqrtoken={0}&webqq_type=10&remember_uin=1&login2qq=1&aid=501004106&u1=https%3A%2F%2Fw.qq.com%2Fproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&ptredirect=0&ptlang=2052&daid=164&from_ui=1&pttype=1&dumy=&fp=loginerroralert&0-0-157510&mibao_css=m_webqq&t=undefined&g=1&js_type=0&js_ver=10184&login_sig=&pt_randsalt=3", ptqrtoken));
    string[] temp = dat.Split('\'');
    switch (temp[1])
    {
    case ("65"): //二维码失效
    Login_err = "二维码失效";
    break;
    case ("66"): //等待扫描
    Login_err = "等待扫描";
    break;
    case ("67"): //等待确认
    Login_err = "等待确认";
    break;
    case ("0"): //已经确认
    Login_err = "已经确认";
    StatuTimer.Stop();
    break;

    default: break;
    }

    }

    /// <summary>
    /// 每两秒检查一次二维码状态
    /// </summary>
    private static void StatuTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
    Login_GetStatu();
    }
    #endregion

     

     

    HTTP 类

     

    /// <summary>
    /// 带referer的http请求连接
    /// </summary>
    /// <param name="url"></param>
    /// <param name="referer"></param>
    /// <param name="timeout"></param>
    /// <param name="encode"></param>
    /// <param name="NoProxy"></param>
    /// <returns></returns>
    public static string Get(string url, string referer = "http://d1.web2.qq.com/proxy.html?v=20151105001&callback=1&id=2", int timeout = 100000, Encoding encode = null, bool NoProxy = false)
    {
    string dat;
    HttpWebResponse res = null;
    HttpWebRequest req;
    try
    {
    req = (HttpWebRequest)WebRequest.Create(url);
    req.CookieContainer = cookies;
    req.AllowAutoRedirect = false;
    req.Timeout = timeout;
    req.Referer = referer;
    if (NoProxy)
    req.Proxy = null;
    req.UserAgent = "Mozilla/5.0 (Windows NT 10.0;%20WOW64; rv:47.0) Gecko/20100101 Firefox/47.0";
    res = (HttpWebResponse)req.GetResponse();

    cookies.Add(res.Cookies);
    }
    catch (HttpException)
    {
    return "";
    }
    catch (WebException)
    {
    return "";
    }
    StreamReader reader;

    reader = new StreamReader(res.GetResponseStream(), encode == null ? Encoding.UTF8 : encode);
    dat = reader.ReadToEnd();

    res.Close();
    req.Abort();

    return dat;
    }

     

    转载于:https://www.cnblogs.com/qizhuocai/p/9295947.html

    展开全文
  • JAVA 生成二维码 并设置 +失效机制

    千次阅读 2021-03-17 18:20:50
    JAVA 生成二维码 并设置 失效机制 1.前言:我这里设置的失效机制用数据库记录每一张二维码的实效时间,二维码生成后上传至OSS 1.1 数据库设计 CREATE TABLE `qz_date` ( `id` int(11) NOT NULL AUTO_INCREMENT ...

    JAVA 生成二维码 并设置 失效机制

    1.前言:我这里设置的失效机制用数据库记录每一张二维码的实效时间,二维码生成后上传至OSS

    1.1 数据库设计

    CREATE TABLE `qz_date` (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
      `uuid` varchar(255) DEFAULT NULL COMMENT '二维码标号',
      `url` varchar(255) DEFAULT NULL COMMENT '二维码地址',
      `end_time` datetime DEFAULT NULL COMMENT '失效时间',
      `created_at` datetime DEFAULT NULL COMMENT '创建时间',
      `last_modified` datetime DEFAULT NULL COMMENT '修改时间',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4;
    

    2 二维码生成

    2.1 导入以来

    <dependency>
      <groupId>com.google.zxing</groupId>
      <artifactId>core</artifactId>
      <version>3.3.0</version>
    </dependency>
    <dependency>
      <groupId>com.google.zxing</groupId>
      <artifactId>javase</artifactId>
      <version>3.3.0</version>
    </dependency>
    

    2.2 生成和解析二维码工具类

    @Slf4j
    public class QRCodeUtils {
        private static final String CHARSET = "utf-8";
        private static final String FORMAT_NAME = "JPG";
        // 二维码尺寸    
        private static final int QRCODE_SIZE = 300;
        // LOGO宽度    
        private static final int WIDTH = 60;
        // LOGO高度    
        private static final int HEIGHT = 60;
    
        public static BufferedImage createImage(String content, String imgPath,
                                                 boolean needCompress) throws Exception {
            Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();
            hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
            hints.put(EncodeHintType.CHARACTER_SET, CHARSET);
            hints.put(EncodeHintType.MARGIN, 1);
            BitMatrix bitMatrix = new MultiFormatWriter().encode(content,
                    BarcodeFormat.QR_CODE, QRCODE_SIZE, QRCODE_SIZE, hints);
            int width = bitMatrix.getWidth();
            int height = bitMatrix.getHeight();
            BufferedImage image = new BufferedImage(width, height,
                    BufferedImage.TYPE_INT_RGB);
            for (int x = 0; x < width; x++) {
                for (int y = 0; y < height; y++) {
                    image.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000
                            : 0xFFFFFFFF);
                }
            }
            if (imgPath == null || "".equals(imgPath)) {
                return image;
            }
            // 插入图片    
            QRCodeUtils.insertImage(image, imgPath, needCompress);
            return image;
        }
    
        public static BufferedImage createImage(String content) throws Exception {
            Hashtable<EncodeHintType, Object> hints = new Hashtable<EncodeHintType, Object>();
            hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
            hints.put(EncodeHintType.CHARACTER_SET, CHARSET);
            hints.put(EncodeHintType.MARGIN, 1);
            BitMatrix bitMatrix = new MultiFormatWriter().encode(content,
                    BarcodeFormat.QR_CODE, QRCODE_SIZE, QRCODE_SIZE, hints);
            int width = bitMatrix.getWidth();
            int height = bitMatrix.getHeight();
            BufferedImage image = new BufferedImage(width, height,
                    BufferedImage.TYPE_INT_RGB);
            for (int x = 0; x < width; x++) {
                for (int y = 0; y < height; y++) {
                    image.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000
                            : 0xFFFFFFFF);
                }
            }
            return image;
        }
    
        /**
         * 插入LOGO  
         *
         * @param source
         *            二维码图片  
         * @param imgPath
         *            LOGO图片地址  
         * @param needCompress
         *            是否压缩  
         * @throws Exception
         */
        private static void insertImage(BufferedImage source, String imgPath,
                                        boolean needCompress) throws Exception {
            File file = new File(imgPath);
            if (!file.exists()) {
                System.err.println(""+imgPath+"   该文件不存在!");
                return;
            }
            Image src = ImageIO.read(new File(imgPath));
            int width = src.getWidth(null);
            int height = src.getHeight(null);
            if (needCompress) {
                if (width > WIDTH) {
                    width = WIDTH;
                }
                if (height > HEIGHT) {
                    height = HEIGHT;
                }
                Image image = src.getScaledInstance(width, height,
                        Image.SCALE_SMOOTH);
                BufferedImage tag = new BufferedImage(width, height,
                        BufferedImage.TYPE_INT_RGB);
                Graphics g = tag.getGraphics();
                g.drawImage(image, 0, 0, null); // 绘制缩小后的图    
                g.dispose();
                src = image;
            }
            // 插入LOGO    
            Graphics2D graph = source.createGraphics();
            int x = (QRCODE_SIZE - width) / 2;
            int y = (QRCODE_SIZE - height) / 2;
            graph.drawImage(src, x, y, width, height, null);
            Shape shape = new RoundRectangle2D.Float(x, y, width, width, 6, 6);
            graph.setStroke(new BasicStroke(3f));
            graph.draw(shape);
            graph.dispose();
        }
    
        /**
         * 生成二维码(内嵌LOGO)  
         *
         * @param content
         *            内容  
         * @param imgPath
         *            LOGO地址  
         * @param destPath
         *            存放目录  
         * @param needCompress
         *            是否压缩LOGO  
         * @throws Exception
         */
        public static String encode(String content, String imgPath, String destPath,
                                    boolean needCompress) throws Exception {
            BufferedImage image = QRCodeUtils.createImage(content, imgPath,
                    needCompress);
            mkdirs(destPath);
            String file = new Random().nextInt(99999999)+".jpg";
            ImageIO.write(image, FORMAT_NAME, new File(destPath+"/"+file));
            return file;
        }
    
        /**
         * 当文件夹不存在时,mkdirs会自动创建多层目录,区别于mkdir.(mkdir如果父目录不存在则会抛出异常)  
         * @date 2013-12-11 上午10:16:36  
         * @param destPath 存放目录  
         */
        public static void mkdirs(String destPath) {
            File file =new File(destPath);
            //当文件夹不存在时,mkdirs会自动创建多层目录,区别于mkdir.(mkdir如果父目录不存在则会抛出异常)    
            if (!file.exists() && !file.isDirectory()) {
                file.mkdirs();
            }
        }
    
        /**
         * 生成二维码(内嵌LOGO)  
         *
         * @param content
         *            内容  
         * @param imgPath
         *            LOGO地址  
         * @param destPath
         *            存储地址  
         * @throws Exception
         */
        public static void encode(String content, String imgPath, String destPath)
                throws Exception {
            QRCodeUtils.encode(content, imgPath, destPath, false);
        }
    
        /**
         * 生成二维码  
         *
         * @param content
         *            内容  
         * @param destPath
         *            存储地址  
         * @param needCompress
         *            是否压缩LOGO  
         * @throws Exception
         */
        public static void encode(String content, String destPath,
                                  boolean needCompress) throws Exception {
            QRCodeUtils.encode(content, null, destPath, needCompress);
        }
    
        /**
         * 生成二维码  
         *
         * @param content
         *            内容  
         * @param destPath
         *            存储地址  
         * @throws Exception
         */
        public static void encode(String content, String destPath) throws Exception {
            QRCodeUtils.encode(content, null, destPath, false);
        }
    
        /**
         * 生成二维码(内嵌LOGO)  
         *
         * @param content
         *            内容  
         * @param imgPath
         *            LOGO地址  
         * @param output
         *            输出流  
         * @param needCompress
         *            是否压缩LOGO  
         * @throws Exception
         */
        public static void encode(String content, String imgPath,
                                  OutputStream output, boolean needCompress) throws Exception {
            BufferedImage image = QRCodeUtils.createImage(content, imgPath,
                    needCompress);
            ImageIO.write(image, FORMAT_NAME, output);
        }
    
        /**
         * 生成二维码  
         *
         * @param content
         *            内容  
         * @param output
         *            输出流  
         * @throws Exception
         */
        public static void encode(String content, OutputStream output)
                throws Exception {
            QRCodeUtils.encode(content, null, output, false);
        }
    
        /**
         * 解析二维码  
         *
         * @param file
         *            二维码图片  
         * @return
         * @throws Exception
         */
        public static String decode(File file) throws Exception {
            BufferedImage image;
            image = ImageIO.read(file);
            if (image == null) {
                return null;
            }
            BufferedImageLuminanceSource source = new BufferedImageLuminanceSource(
                    image);
            BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
            Result result;
            Hashtable<DecodeHintType, Object> hints = new Hashtable<DecodeHintType, Object>();
            hints.put(DecodeHintType.CHARACTER_SET, CHARSET);
            result = new MultiFormatReader().decode(bitmap, hints);
            String resultStr = result.getText();
            return resultStr;
        }
    
        /**
         * 解析二维码  
         *
         * @param path
         *            二维码图片地址  
         * @return
         * @throws Exception
         */
        public static String decode(String path) throws Exception {
            return QRCodeUtils.decode(new File(path));
        }
    
    
        public static String upLoad(String uuid, BufferedImage image, String fileApi){
            String iconUrl = null;
            if (image!=null) {
                InputStream inputStream = bufferedImageToInputStream(image);
                Map<String, String> params = new HashMap<>(16);
                params.put("token", "oh, it's ok");
                String fileName = uuid + ".png";
                String result = UploadFile.uploadFileStream(fileApi, fileName, inputStream, params, new HashMap<>());
                Map resultMap = JSON.parseObject(result.substring(1, result.length() - 1), Map.class);
                iconUrl = resultMap.get("url").toString();
            }
            return iconUrl;
        }
    
        private static InputStream bufferedImageToInputStream(BufferedImage image){
            ByteArrayOutputStream os = new ByteArrayOutputStream();
            try {
                ImageIO.write(image, "png", os);
                InputStream input = new ByteArrayInputStream(os.toByteArray());
                return input;
            } catch (IOException e) {
                log.error("提示:",e);
            }
            return null;
        }
    
    
    }  
    

    3.测试

    @PostMapping("/getCode")
        @ApiOperation(value = "生成二维码", notes = "生成二维码")
        public ApiResponse getCode(@RequestBody JSONObject par,HttpServletRequest request) throws Exception {
    
            Integer elId = par.getInteger("elId");
            String url = par.getString("url");
            //二维码标识
          	String uuid = UUID.randomUUID().toString();
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("url",url);
            jsonObject.put("elId",elId);
            jsonObject.put("qzId",uuid);
    
           //生成二维码
          	BufferedImage image = QRCodeUtils.createImage(jsonObject.toJSONString());
            //上传二维码到OSS
          	String s = QRCodeUtils.upLoad(uuid, image, fileApi);
            
          	QzDate qzDate = new QzDate();
            qzDate.setUuid(uuid);
            qzDate.setUrl(s);
            //二维码有效期
          	qzDate.setEndTime(LocalDateTime.now().plusDays(3));
            iQzDateService.save(qzDate);
            return ApiResponse.success(s);
        }
    

    3.1 测试有效期

    @PostMapping("/getBizElement")
        @ApiOperation(value = "前台查询元素信息展示", notes = "前台使用")
        public ApiResponse<BizResponseParam> findBizBasicElement(@RequestBody JSONObject param, HttpServletRequest req) {
            Integer elId = param.getInteger("elId");
            String qzDate = param.getString("uuid");
    				
    				//查询二维码是否过期
            QueryWrapper<QzDate> qzDateQueryWrapper = new QueryWrapper<>();
            qzDateQueryWrapper.eq("uuid", qzDate);
            QzDate one = iQzDateService.getOne(qzDateQueryWrapper);
            LocalDateTime endTime = one.getEndTime();
            LocalDateTime now = LocalDateTime.now();
            ApiResponse<BizResponseParam> apiResponse = new ApiResponse<>();
    
            if (endTime.compareTo(now)>0) {
               //逻辑 。。。。
            } else {
                apiResponse.setErrorMsg("二维码已过期");
                apiResponse.setErrorCode(500);
            }
            return apiResponse;
        }
    
    展开全文
  • 今天解决了测试提交上来的一个bug,说是公司网站调用的二维码接口没有做超时失效处理,这种情况容易导致用户账号登出后,该二维码还是有效的,当用户扫描支付时还是能够支付成功,但是微信支付成功后调用我们配置好...

            今天解决了测试提交上来的一个bug,说是公司网站调用的二维码接口没有做超时失效处理,这种情况容易导致用户账号登出后,该二维码还是有效的,当用户扫描支付时还是能够支付成功,但是微信支付成功后调用我们配置好的回调接口时却会因为被拦截而无法执行正常的回调操作,一些重要的资金流水和自己网站独有的资金账户的信息都将无法保存,造成的影响是非常严重的。不多说,开始切入正题。

     

    在微信官方给出的微信支付开发文档,统一下单接口中有一个参数  time_expire  是用来设置二维码的超时时间的,截图如下:

     

     

    更多参数详情请访问: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1  查看。

     

    于是我在自己的代码中加入了 “time_expire ”这个参数,如下图红框部分:

     

    时间的生成方法是自己写的,很简单,附上代码如下:

        /**
         * 设置微信二维码失效时间,并返回具体失效的时间点
         * @param expire 二维码的有效时间,单位是毫秒
         * @return
         */
        public static String getOrderExpireTime(Long expire){
        	SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
    		  Date now = new Date();
    		  Date afterDate = new Date(now .getTime() + expire);
    		  return sdf.format(afterDate );
        }

     

    因为没有全面通读过微信支付开发文档,这套接口也是前面的老员工接入的,我算是半道子出门,所以以为这样就可以设置成功了,结果一试,发现二维码都无法显示了:

     

    查看后台打印的日志,发现是签名错误:

     

    直接去百度,结果发现网上没有解决的方案,正确的说,那些大神都不会犯这种小儿科的错误(汗颜),无奈我只能去读源码,结果让我发现,之前放入map中的参数所有参数,最后都要封装在<xml>中,于是我加上了:

     

    再次测试,发现此时二维码能正常显示了,如下图:

    我设置的超时失效时间是两分钟,两分钟过后,我再扫这个二维码时,发现二维码已经失效了:

     

    至此,问题算解决了。事实上,更完美的解决方案是,前端也要控制二维码的显示时间。

     

    完整的代码,请看我的另一篇博客 JAVA后端调用微信支付“统一下单”接口实现微信二维码扫码支付

     

    本来这个问题很简单,如果是接触过微信支付开发的人,应该能够很快实现这个需求,但是作为一个刚接触的人来说,确实是有些困难的,本着一查就有的原则,写下这篇博客,给以后和我一样苦逼的程序小白一点小小帮助吧。

     

     

    展开全文
  • 基于WebSocket实现二维码的被扫描即失效(VUE+SpringBoot) 算是记录贴,目的是给小程序的webview使用的,因为微信的限制,目前还没全部完成,在浏览器已经可以实现了 下面正文: 后端代码: 1、依赖 <...
  • 因为沙箱测试需要专门的钱包工具,而ios目前还不支持- -!
  • php二维码生成

    2020-12-19 12:40:50
    * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】 * @param string $data 二维码包含的信息,可以是数字、字符、二进制信息、汉字。不能混合数据类型,...
  • //判断手机为安卓还是ios 安卓html2canvas方法 ios系统dom-to-image方法 $(".code").click(function() { var u = navigator.userAgent; var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);... var isAndr...
  • 效果图 1.首先安装插件 npm install qrcodejs2 --save ...<div class="qrcode" ref="qrCodeUrl" >...二维码失效</p> <a @click="refresh()">刷新</a> </h1> isTimeo
  • Vue项目草料二维码使用失效

    千次阅读 2019-08-13 09:14:27
    问题描述:cnpm run dev之后出现的是localhost:8080这个本地路径是无法马上通过二维码访问的。 操作步骤: 1.在vue的config目录下的index.js里设置host为0.0.0.0,这个是所有域名都可以访问得到的。 2.在cmd窗口输入...
  • 支付宝生成二维码

    2019-03-08 17:17:32
    支付宝生成二维码,返回一个 二维码的url地址,通过将url地址转换成二维码,扫码就可以支付了。
  • 我们都知道微信群未满100人之前可以分享群二维码,让我们的粉丝通过扫码进群,但是人数超过100后,发出的二维码失效了,无法再次扫码进群,因此,很多人会有微信群满100人怎么再加人,今天给大家介绍下活码技术。...
  • 今天一整天都是在跟第三方支付接口打交道,主要...刚刚写了一个设置微信二维码失效时间的,现在在来个支付宝二维码失效时间的设置。相比于微信二维码失效时间的设置,支付宝二维码失效时间的设置要简单的多。 调用...
  • 第三方生成一个带13位时间戳参数的二维码,扫码后进入我的网站,我根据二维码中时间戳(二维码生成时间),和当前时间戳进行比较,如果详相减后大于某个值(10分钟、1天这种变量),则系统会提示二维码失效,否则,...
  • 1. 手机端浏览器登录网页的同时再用微信或者QQ扫码登录出现二维码失效问题如何解决?2.部分网站无法访问PC网页版如何解决?请看方案。
  • 开发过程中集成支付宝支付是扫描生成的二维码提示:二维码失效? 最近在做支付宝电脑网站支付开发时,使用官方sdk运行后,扫描生成的付款二维码提示:码已失效,请刷新二维码后重试。 导致这种错误的原因是我们...
  • 开发过程中集成支付宝支付是扫描生成的二维码提示:二维码失效? 1 最近在做支付宝电脑网站支付开发时,使用官方sdk运行后,扫描生成的付款二维码提示:码已失效,请刷新二维码后重试。 导致这种错误的原因是我们...
  • Java QRCode二维码生成与识别 开源

    热门讨论 2011-11-28 23:27:05
    Java QRCode二维码生成与识别,开放源代码,多种生成方式.支持汉字存储与解析。
  • 用支付宝扫码付款出现这个问题,原因是我用的沙箱环境,不能用正式的支付宝支付,用沙箱账号支付即可
  • 二维码案例全套

    2017-08-22 12:01:33
    二维码扫描解析全套详解
  • java实现二维码的生成

    2021-04-01 13:53:26
    https://blog.csdn.net/jam_fanatic/article/details/82818857 失效二维码方案: 1.生成二维码并把值设置为中转地址(某随机字符串,如www.a.com/qr/1111) 2.在redis中放入key: 1111, value: 真实二维码跳转地址,...
  • 支付宝用沙箱环境调试时,用普通账号扫码会提示过期,需要在沙箱工具中,下载支付宝钱包,登录提供的测试账号才可以正常扫码.
  • jQuery鼠标悬停或经过图片时弹出二维码遮罩效果
  • WebQQ生成的二维码怎样实现一段时间后失效的呢?就是一段时间后再扫这个二维码不会出来刚开始的链接和信息
  • 将一个查询类网站的查询内容生成二维码,过一段时间后就失效了,请问如何解决这一问题········
  • ZXing二维码介绍

    2021-05-30 15:34:07
    ZXing(Zebra Crossing)是Google开发的一个二维码解析和生成的开源库。 ZXing GitHub地址 引入 <dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> ...
  • 二维码 移动端扫码求职登记,做有效性校验 1.客户需要在PC端自定义设置二维码的过期时间,生成二维码,打印二维码和控制二维码的过期时间 2.用户移动端扫码进行有效时间验证 3.由于需要控制二维码是否过期,可能...
  • 昨天看了看后台留言看到了有朋友说这个js版的历史价格查询失效了,于是小良抽点时间连夜把这脚本修复了一下,希望能给朋友们带来度过一个愉快的购物节。在电商迅速的发展下,早已成为消费者购买物品的主要方式了,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,845
精华内容 4,738
热门标签
关键字:

二维码失效的原因