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

简介: 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 参数说明


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


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

(2)请求接口测试

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


https://img-blog.csdn.net/20170830102022282?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdzQxMDU4OTUwMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast


请求测试结果返回一个小程序码图片,与微信公众平台生成二维码不同,小程序码直接返回文件流,不是微信公众平台的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 参数说明

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


https://img-blog.csdn.net/20170830110805670?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdzQxMDU4OTUwMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast


(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. 其他方法生成的码只有小程序上线后才会有权限访问 否则会提示小程序尚未发布

相关文章
|
10月前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
小程序 Java 关系型数据库
基于Java微信小程序同城家政服务系统设计和实现(源码+LW+调试文档+讲解等)
基于Java微信小程序同城家政服务系统设计和实现(源码+LW+调试文档+讲解等)
|
存储 小程序 前端开发
微信小程序与Java后端实现微信授权登录功能
微信小程序极大地简化了登录注册流程。对于用户而言,仅仅需要点击授权按钮,便能够完成登录操作,无需经历繁琐的注册步骤以及输入账号密码等一系列复杂操作,这种便捷的登录方式极大地提升了用户的使用体验
3989 12
|
小程序 前端开发 算法
|
小程序 Java
小程序访问java后台失败解决方案
小程序访问java后台失败解决方案
217 2
|
小程序 JavaScript Java
小程序访问java后台
小程序访问java后台
217 1
|
小程序 前端开发 JavaScript
Java开发工程师转小程序开发的前景如何?
Java开发工程师转小程序开发的前景如何?
334 1
|
小程序
java--微信小程序发送模板消息
java--微信小程序发送模板消息
754 0
|
小程序 前端开发 Java
java 生成小程序二维码
java 生成小程序二维码
401 0
|
小程序 Java
小程序通过get请求提交数据到java后台
小程序通过get请求提交数据到java后台
195 0

热门文章

最新文章