> 文章列表 > 微信小程序:获取不限制的小程序码后端Java实现

微信小程序:获取不限制的小程序码后端Java实现

微信小程序:获取不限制的小程序码后端Java实现

文档

  • 获取不限制的小程序

看腾讯写的文档,对于不同的程序员来说,可能接收到的信息会不一样,往往需要花很多时间来调试

目录

    • 1、请求参数
    • 2、发起请求
    • 3、响应结果

1、请求参数

根据文档,可以将入参提取为一个简单java类

用到的第三方库:

  • lombok
  • jackson
package com.demo.utils.wechat.entity;import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;/* 获取不限制的小程序码接口请求参数* https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/qrcode-link/qr-code/getUnlimitedQRCode.html*/
@Data
public class UnlimitedQRCodeParam {/* 默认是主页,页面 page,例如 pages/index/index,* 根路径前不要填加 /,不能携带参数(参数请放在scene字段里),* 如果不填写这个字段,默认跳主页面。*/private String page;/* 最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,* 其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)*/private String scene;/* 默认是true,检查page 是否存在,为 true 时 page 必须是已经发布的小程序存在的页面(否则报错);* 为 false 时允许小程序未发布或者 page 不存在, 但page 有数量上限(60000个)请勿滥用。*/@JsonProperty("check_path")private Boolean checkPath;/* 否	要打开的小程序版本。* 正式版为 "release",默认* 体验版为 "trial"* 开发版为 "develop"*/@JsonProperty("env_version")private String envVersion;/* 否	默认430,二维码的宽度,单位 px,最小 280px,最大 1280px*/private Integer width;/* 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调,默认 false*/@JsonProperty("auto_color")private Boolean autoColor;/* 默认是{"r":0,"g":0,"b":0} 。* auto_color 为 false 时生效,使用 rgb 设置颜色* 例如 {"r":"xxx","g":"xxx","b":"xxx"} 十进制表示*/@JsonProperty("line_color")private LineColor lineColor;/* 否	默认是false,是否需要透明底色,为 true 时,生成透明底色的小程序*/@JsonProperty("is_hyaline")private Integer isHyaline;}
package com.demo.utils.wechat.entity;import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;@Data
public class LineColor {@JsonProperty("r")private Integer red;@JsonProperty("g")private Integer green;@JsonProperty("b")private Integer blue;
}

2、发起请求

请求时用 jackson 将参数序列化为json数据

发起请求时需要注意access_token 参数是查询参数形式传递,其他参数以json格式以body体形式传递

完整示例

POST https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN 
Content-Type: application/json{"page": "pages/index/index","scene": "a=1","check_path": true,"env_version": "release"
} 

3、响应结果

响应结果

package com.demo.utils.wechat.entity;import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;@Data
public class UnlimitedQRCodeResult {@JsonProperty("errcode")private int errCode;@JsonProperty("errmsg")private String errMsg;private String contentType;private String buffer;
}

注意 这里需要注意:

文档上说返回值是json,实际操作下来会发现

  • 如果调用成功,会直接返回图片二进制内容
  • 如果请求失败,会返回 JSON 格式的数据

所以需要判断返回内容类型,根据contentType判断,

  • 成功:如果是application/json就使用jackson解析,抛出异常
  • 失败:如果是image/jpeg ,就使用byte[]接收二进制流