1.获取AccessToken
public String getAccessToken() {
String o= restTemplate.getForObject("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+appsecret,String.class);
JSONObject s= JSONObject.parseObject(o);
return s.getString("access_token");
}
2.发起请求获取小程序码的二进制数据
public ResultVo getWxacode(String path,String openid,Integer hid){
String url="https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+getAccessToken();
Map<String, Object> params = new HashMap<String, Object>();
params.put("scene", "openid="+openid+"&hid="+hid);
if (StringUtils.isNotBlank(path)) {
params.put("page", path);
}
byte[] byteArray = null;
ResponseEntity<byte[]> entity= restTemplate.postForEntity(url, JSON.toJSONString(params),byte[].class);
System.out.println(entity);
System.out.println(entity.getBody());
byteArray=entity.getBody();
String p= qiniuCloudService.uploadWxQrCode(byteArray,"images/"+ UUID.randomUUID()+".png");
System.out.println(p);
return null;
}
3.上传二进制流到七牛云
public String uploadWxQrCode(byte[] byteArray,String fileName){
InputStream inputStream=new ByteArrayInputStream(byteArray);
Configuration cfg = new Configuration(Zone.zone0());
UploadManager uploadManager = new UploadManager(cfg);
String key = null;
Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
String upToken = auth.uploadToken(BUCKET);
try {
Response response = null;
response = uploadManager.put(inputStream, fileName, upToken, null, null);
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
System.out.println(putRet.key);
System.out.println(putRet.hash);
return QINIU_UPLOAD_SITE+putRet.key;
} catch (QiniuException ex) {
Response r = ex.response;
System.err.println(r.toString());
try {
System.err.println(r.bodyString());
} catch (QiniuException ex2) {
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}