微信官方文档地址:获取小程序码 | 微信开放文档
获取小程序二维码首先我们先要获取AccessToken
请求地址
GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
请求参数
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
grant_type | string | 是 | 填写 client_credential | |
appid | string | 是 | 小程序唯一凭证,即 AppID,可在「微信公众平台 - 设置 - 开发设置」页中获得。(需要已经成为开发者,且帐号没有异常状态) | |
secret | string | 是 | 小程序唯一凭证密钥,即 AppSecret,获取方式同 appid |
java代码
/**
* 获取小程序号的ACCESS_TOKEN
* @return ACCESS_TOKEN
*/
public String getAccessToken() {
RestTemplate restTemplate = new RestTemplate();
Map<String, String> params = new HashMap<>();
params.put("APPID", "appID"); //替换成自己的appId
params.put("APPSECRET", "appSecret"); //替换成自己的appSecret
ResponseEntity<String> responseEntity = restTemplate.getForEntity(
"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={APPID}&secret={APPSECRET}",
String.class, params);
String body = responseEntity.getBody();
JSONObject object = JSON.parseObject(body);
String accessToken = object.getString("access_token");
if (accessToken==null){
logger.info(String.valueOf("获取accessToken失败"));
}
return accessToken;
}
获取小程序码
请求地址
POST https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN
请求参数
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
access_token / cloudbase_access_token | string | 是 | 接口调用凭证 | |
scene | string | 是 | 最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~ ,其它字符请自行编码为合法字符(因不支持% ,中文无法使用 urlencode 处理,请使用其他编码方式) | |
page | string | 主页 | 否 | 页面 page,例如 pages/index/index ,根路径前不要填加 / ,不能携带参数(参数请放在 scene 字段里),如果不填写这个字段,默认跳主页面 |
check_path | boolean | true | 否 | 检查 page 是否存在,为 true 时 page 必须是已经发布的小程序存在的页面(否则报错);为 false 时允许小程序未发布或者 page 不存在, 但 page 有数量上限(60000个)请勿滥用 |
env_version | string | "release" | 否 | 要打开的小程序版本。正式版为 release ,体验版为 trial ,开发版为 develop |
width | number | 430 | 否 | 二维码的宽度,单位 px,最小 280px,最大 1280px |
auto_color | boolean | false | 否 | 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调,默认 false |
line_color | Object | {"r":0,"g":0,"b":0} | 否 | auto_color 为 false 时生效,使用 rgb 设置颜色 例如 {"r":"xxx","g":"xxx","b":"xxx"} 十进制表示 |
is_hyaline | boolean | false | 否 | 是否需要透明底色,为 true 时,生成透明底色的小程序 |
返回值
图片Buffer
java代码
/**
* 获取二维码
* @return 二维码字符串
*/
public String getQRCode() {
Map map = new HashMap();
String accessToken = getCustomerAccessToken();
String postUrl ="https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+accessToken;
JSONObject jsonObject = new JSONObject();
jsonObject.put("scene", "1"); //可以用作传参,必填,内容随意
jsonObject.put("page", "pages/weChat_login/weChat_login"); //扫码后跳转页面,选填
jsonObject.put("check_path", false); //是否检查跳转页面存不存在
jsonObject.put("env_version", "develop"); //版本
byte[] string = null;
try {
string = sendPostJsonImge(postUrl, jsonObject.toJSONString());
} catch (IOException e) {
logger.info(String.valueOf("获取二维码时出现异常"));
}
String base64Str = Base64.getEncoder().encodeToString(string);
return base64Str ;
}
前端画面显示
<img style="width: 50%;" :src="dataBuffer" />
//将返回的字符串拼上"data:image/png;base64,"
this.dataBuffer = "data:image/png;base64," + response.data;
注意:
1.scene:是必填值
2.page:需要填项目真实地址,若地址不存在会报错。
3.check_path:如果想跳项目中不存在页面,将此值设置为false