本段代碼是生成微信二維碼圖片,並利用字節流將其輸出至js頁面端.也適用於其他想要獲得生成動態圖片的需求.可結合實際情況進行取捨.代碼如下:
@RequestMapping(value="/loan/showQRcode")
public void showQRcode(HttpServletRequest request, Model model, HttpServletResponse response,
@RequestParam (value="rechargeMoney",required=true) Double rechargeMoney,
@RequestParam (value="rechargeNo",required=true) String rechargeNo,
@RequestParam (value="rechargeDesc",required=true) String rechargeDesc) throws WriterException, IOException {
//準備調用pay工程微信支付接口的請求參數
int total_fee = (int) (rechargeMoney * 100);//將單位轉換爲分
String out_trade_no = rechargeNo;
String body = rechargeDesc;
//發送請求 -》 獲取返回信息
Map<String,Object> paramMap = new ConcurrentHashMap<String,Object>();
paramMap.put("total_fee", total_fee);
paramMap.put("out_trade_no", out_trade_no);
paramMap.put("body", body);
String result = HttpClinentUtils.doPost(config.getP2p_wxpay_pay_url(), paramMap);
//解析返回的內容
//將返回的json格式字符串轉換爲json對象
JSONObject jsonObject = JSON.parseObject(result);
//獲取return_code
String return_code = jsonObject.getString("return_code");
if("SUCCESS".equals(return_code)) {
String result_code = jsonObject.getString("result_code");
if("SUCCESS".equals(result_code)) {
String code_url = jsonObject.getString("code_url");
int width = 200;//寬度
int height = 200;//高度
Map<EncodeHintType,Object> hints = new HashMap<EncodeHintType,Object>();
hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
//生成矩陣
BitMatrix bitMatrix = new MultiFormatWriter().encode(code_url, BarcodeFormat.QR_CODE, width, height, hints);
//字節數組輸出流
ByteArrayOutputStream imageOut = new ByteArrayOutputStream();
MatrixToImageWriter.writeToStream(bitMatrix, "jpg", imageOut);
//字節數組輸入流
ByteArrayInputStream imageIn = new ByteArrayInputStream(imageOut.toByteArray());
BufferedImage bImage = ImageIO.read(imageIn);
OutputStream out = response.getOutputStream();
ImageIO.write(bImage, "jpg", out);
bImage.flush();
out.flush();
out.close();
}
}
//獲取到code_url,生成二維碼
}