Java 获取小程序码的两种方式

目前小程序推出了自己的识别码,小程序码,圆形的码看起来比二维码好看。

本文总结微信小程序的获取小程序二维码的接口开发。官方地址

主要内容摘抄自微信小程序的API文档,java接口开发是自己总结开发。

一、简介

通过后台接口可以获取小程序任意页面的二维码,扫描该二维码可以直接进入小程序对应的页面。

目前微信支持两种二维码,小程序码(左),小程序二维码(右),如下所示:这篇文章主要讲解的是获取小程序码的两种方式。
这里写图片描述

获取<小程序码>的前提

必须获取小程序的TOKEN

获取 access_token
详见文档

/**
  * 获取token
  * @param url
  * @param grantType
  * @param appid
  * @param secret
  * @return
  */
 public static String getAccessToken(String url,String grantType,String appid,String secret){
     String access_token = "";
     String tokenUrl = url+"?grant_type="+ grantType+"&appid="+ appid + "&secret="+ secret;
     Object result = HttpUtils.doGet(tokenUrl);
     JSONObject jsons = JSONObject.parseObject(result.toString());
     String expires_in = jsons.getString("expires_in");
     if(BL3Utils.isNotEmpty(expires_in)&&Integer.parseInt(expires_in)==7200){
         //ok
         access_token = jsons.getString("access_token");
     }else{
         System.out.println("出错获取token失败!");
     }
     return access_token;
 }

参数介绍:

1.url :https://api.weixin.qq.com/cgi-bin/token
2.grantType: client_credential
3.appid:小程序appid,微信公众平台注册小程序时自动生成的。
4.secret:小程序secret,微信公众平台注册小程序时自动生成的。
5.url 和grantType参数官网其实有介绍的。

获取小程序码的两种方式

目前有两个接口可以生成小程序码,开发者可以根据自己的需要选择合适的接口

第一种

  1. 适用于需要的码数量较少的业务场景
  2. 是呢不带参数有限个小程序码接口
  3. 总共生成的码数量限制为100,000,请谨慎调用。

接口地址:

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

(1)POST 参数说明

参数类型默认值说明
pathString不能为空,最大长度 128 字节
widthInt430二维码的宽度
auto_colorBoolfalse自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调
line_colorObject{“r”:”0”,”g”:”0”,”b”:”0”}auth_color 为 false 时生效,使用 rgb
设置颜色 例如 {“r”:”xxx”,”g”:”xxx”,”b”:”xxx”}

注意:通过该接口生成的小程序码,永久有效,但数量有效,请谨慎使用。用户扫描该码进入小程序后,将直接进入 path 对应的页面。

(2)请求接口测试

使用http请求插件postman或者RESTClient请求测试。

è¿éåå¾çæè¿°

请求测试结果返回一个小程序码图片,与微信公众平台生成二维码不同,小程序码直接返回文件流,不是微信公众平台的url和ticket。

(3)java接口开发

    /**
     1. 带参数有限个数小程序码接口
     2. @param url
     3. @param access_token
     4. @param path
     5. @param width
     6. @return
     */
     public static InputStream getwxacode(String url,String access_token,String path,String width){
         url = url + "?access_token=" + access_token;
         JSONObject jsonParam = new JSONObject();
         jsonParam.put("path", path);
         jsonParam.put("width", Integer.parseInt(width));
         jsonParam.put("auto_color", false);
         Map<String,Object> line_color = new HashMap<>();
         line_color.put("r", 0);
         line_color.put("g", 0);
         line_color.put("b", 0);
         jsonParam.put("line_color", line_color);
         InputStream instreams = HttpUtils.doWXPost(url, jsonParam);
         if(BL3Utils.isEmpty(instreams)){
             System.out.println("出错获取二维码失败!");
         }
         return instreams;
     }

参数说明

1.url : https://api.weixin.qq.com/wxa/getwxacode

2.access_token:上面有介绍(getAccessToken这个方法)

3.path:用户扫描该码进入小程序后,将直接进入 path 对应的页面;一般是首页地址:”pages/index/index”
也可以带上参数:”pages/index/index?query=1”。

4.width:二维码的宽度 int类型 默认 430

第二种

  1. 适用于需要的码数量极多的业务场景
  2. 没有数量限制呢
  3. 带参数

接口地址:

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

(1)POST 参数说明

参数类型默认值说明
sceneString
最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&’()*+,/:;=?@-._~,其它字符请自行编码为合法字符(因不支持%,中文无法使用
urlencode 处理,请使用其他编码方式)
pageString必须是已经发布的小程序页面,例如 “pages/index/index” ,如果不填写这个字段,默认跳主页面
widthInt430二维码的宽度
auto_colorBoolfalse自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调
line_colorObject{“r”:”0”,”g”:”0”,”b”:”0”}auto_color 为 false 时生效,使用 rgb
设置颜色 例如 {“r”:”xxx”,”g”:”xxx”,”b”:”xxx”}

注意:通过该接口生成的小程序码,永久有效,数量暂无限制。用户扫描该码进入小程序后,开发者需在对应页面获取的码中 scene
字段的值,再做处理逻辑。使用如下代码可以获取到二维码中的 scene 字段的值。调试阶段可以使用开发工具的条件编译自定义参数 scene=xxxx
进行模拟,开发工具模拟时的 scene 的参数值需要进行 urlencode。同时需要注意,此接口的page参数中不能带任何参数,参数都在scene
参数中处理,切记!!!

// 这是首页的 js  
 Page({  
 onLoad: function(options) {  
 // options 中的 scene 需要使用 decodeURIComponent 才能获取到生成二维码时传入的 scene  
 var scene = decodeURIComponent(options.scene)  
 }  
 })

(2)请求接口测试

这里写图片描述

(3)java接口开发

    /**
      * 带参数无限个数小程序码接口
      * @param url
      * @param access_token
      * @param path
      * @param width
      * @return
      */
      public static InputStream getwxacodeunlimit(String url,String access_token,String path,String width){
          String[] str = path.split("[?]");
          path = str[0];
          String scene = str[1];
          url = url + "?access_token=" + access_token;
          // 接收参数json列表
          JSONObject jsonParam = new JSONObject();
          jsonParam.put("scene", scene);
          jsonParam.put("page", path);
          jsonParam.put("width", Integer.parseInt(width));
          jsonParam.put("auto_color", false);
          Map<String,Object> line_color = new HashMap<>();
          line_color.put("r", 0);
          line_color.put("g", 0);
          line_color.put("b", 0);
          jsonParam.put("line_color", line_color);
          InputStream instreams = HttpUtils.doWXPost(url, jsonParam);
          if(BL3Utils.isEmpty(instreams)){
              System.out.println("出错获取二维码失败!");
          }
          return instreams;
      }

参数说明

1.url : https://api.weixin.qq.com/wxa/getwxacodeunlimit
2.access_token:上面有介绍(getAccessToken这个方法)
3.path:用户扫描该码进入小程序后,将直接进入 path 对应的页面;一般是首页地址”pages/index/index”
也可以带上参数:”pages/index/index?query=1”。
4.width:二维码的宽度 int类型 默认 430

注意:

  1. 第二种生成小程序码的情况 只有小程序上线后才能生成二维码。
  2. 其他方法生成的码只有小程序上线后才会有权限访问 否则会提示小程序尚未发布
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 我可以回答这个问题。彩票购买抽奖Java程序可以通过编写Java代码实现,具体实现方式可以参考Java的随机数生成函数和数组操作等知识。需要注意的是,彩票购买抽奖程序需要遵守相关法律法规,确保公平公正。 ### 回答2: 彩票购买抽奖Java程序可以通过使用面向对象的编程方式来实现。程序主要包含两个类:彩票类和抽奖类。 首先是彩票类,该类表示一张彩票对象。彩票类具有以下属性:编号、购买者名称和购买时间。可定义构造方法来初始化这些属性,并且提供获取和设置属性值的方法。 接下来是抽奖类,该类模拟了彩票抽奖的过程。抽奖类具有两个主要方法:购买彩票方法和开奖方法。购买彩票方法接收购买者名称作为参数,并随机生成一个彩票编号和当前时间作为购买时间。购买的彩票对象将被添加到一个列表中。 开奖方法将从购买的彩票列表中随机选择一个彩票作为中奖彩票,并输出中奖的彩票编号和购买者名称。 程序的执行入口是一个主方法,通过创建抽奖类的实例,可以调用购买彩票方法和开奖方法。 在购买彩票方法中,可以使用Java的随机数生成器来生成彩票编号。可以使用System类的currentTimeMillis方法获取当前时间作为购买时间。然后,将生成的彩票对象添加到一个ArrayList中。 在开奖方法中,可以使用随机数生成器来选择一个中奖彩票,并输出中奖号码和购买者名称。 这样,我们就可以通过调用购买彩票方法让用户购买彩票,并通过调用开奖方法来开奖。这个彩票购买抽奖Java程序可以提供简单而有趣的购彩体验。 ### 回答3: 彩票购买抽奖Java程序是一个用于模拟彩票购买和抽奖的程序。以下是一个简单的实现思路: 1. 定义彩票类(Lottery):包括彩票的属性和方法。属性可以包括彩票编号、中奖号码和奖金金额等。方法可以包括生成中奖号码、返回彩票详情等。 2. 定义购买者类(Buyer):包括购买者的属性和方法。属性可以包括名称、购买的彩票等。方法可以包括购买彩票、查询中奖情况等。 3. 主程序(Main):在主程序中创建购买者和彩票对象。购买者可以根据需要购买彩票,购买后将彩票添加到购买者的彩票列表中。程序还可以随机生成中奖号码,并遍历购买者列表判断是否中奖,如果中奖则根据中奖情况来发放奖金。 这个程序可以通过面向对象的设计思想来实现,其中使用到了类、对象、方法和属性等概念。用户可以根据实际需求添加其他功能,比如支持多种彩票类型、中奖规则可配置等。通过这个程序,用户可以模拟购买彩票和抽奖的过程,并自动判断是否中奖,提高用户的体验和娱乐性。 总之,彩票购买抽奖Java程序是一个基于面向对象的程序,通过定义彩票类和购买者类来实现购买彩票和抽奖功能,提供了一种简单而便捷的方式来模拟彩票的购买和抽奖过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员徐师兄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值