From 49a1b41feda0fc9665028e6d3b36eaa2e6e6a8af Mon Sep 17 00:00:00 2001
From: wangrenhuang <wangren_huang@163.com>
Date: 星期三, 27 七月 2022 18:04:33 +0800
Subject: [PATCH] 生成有限二维码带版本参数

---
 src/main/java/com/hx/mp/util/MPWeixinBaseUtil.java |  310 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 309 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/hx/mp/util/MPWeixinBaseUtil.java b/src/main/java/com/hx/mp/util/MPWeixinBaseUtil.java
index 2e0c414..f1be76e 100644
--- a/src/main/java/com/hx/mp/util/MPWeixinBaseUtil.java
+++ b/src/main/java/com/hx/mp/util/MPWeixinBaseUtil.java
@@ -37,7 +37,7 @@
 	//鐢熸垚灏忕▼搴忎簩缁寸爜鍦板潃锛堟柟褰級
 	public static final String MAKE_TWOCODE_SQUARE_URL = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=";
 	//鐢熸垚灏忕▼搴忎簩缁寸爜鍦板潃锛堝渾褰級
-	public static final String MAKE_TWOCODE_ROUND_URL = "https://api.weixin.qq.com/wxa/getwxacode?access_token=";
+	public static final String MAKE_TWOCODE_ROUND_URL = "https://api.weixin.qq.com/wxa/getwxacode?access_token={0}";
 	//鐢熸垚鏃犻檺浜岀淮鐮�
 	public static final String URL_UNLIMIT_SQUARE = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token={0}";
 	//////////////////////////////////////////////////
@@ -150,6 +150,211 @@
 		}
 
 		return imgUrl;
+	}
+
+	/**鐢熸垚鏈夐檺浜岀淮鐮�,杩斿洖涓存椂鏂�
+	 * @param at 寰俊token
+	 * @param page 璺宠浆閾炬帴
+	 * @param width 瀹藉害
+	 * @param autoColor 榛樿false
+	 * @param lineColor 榛樿null
+	 * @param isHyaline 榛樿false
+	 * @return
+	 */
+	public static File createLimitedQrCode(String at, String page, int width, boolean autoColor,
+										   JSONObject lineColor, boolean isHyaline) {
+		String imgUrl = null;
+		InputStream in = null;
+		HttpURLConnection conn = null;
+
+		//鍒涘缓涓存椂鏂囦欢
+		File file = null;
+		try {
+			file = File.createTempFile("temp", ".jpg");
+			//鐢熸垚鍙戦�佹暟鎹�
+			JSONObject obj = new JSONObject();
+			obj.put("width", width);
+			obj.put("path", page);
+			obj.put("auto_color", autoColor);
+			obj.put("line_color", lineColor);
+			obj.put("is_hyaline", isHyaline);
+
+			// 鍒涘缓url璧勬簮
+			URL url = new URL(StringUtils.format(MAKE_TWOCODE_ROUND_URL, at));
+			// 寤虹珛http杩炴帴
+			conn = (HttpURLConnection) url.openConnection();
+			// 璁剧疆鍏佽杈撳嚭
+			conn.setDoOutput(true);
+			conn.setDoInput(true);
+			// 璁剧疆涓嶇敤缂撳瓨
+			conn.setUseCaches(false);
+			// 璁剧疆浼犻�掓柟寮�
+			conn.setRequestMethod("POST");
+			// 璁剧疆缁存寔闀胯繛鎺�
+			conn.setRequestProperty("Connection", "Keep-Alive");
+			// 璁剧疆鏂囦欢瀛楃闆�:
+			conn.setRequestProperty("Charset", "UTF-8");
+			// 璁剧疆鏂囦欢绫诲瀷:
+			conn.setRequestProperty("contentType", "application/json");
+			// 寮�濮嬭繛鎺ヨ姹�
+			conn.connect();
+			OutputStream out = conn.getOutputStream();
+			// 鍐欏叆璇锋眰鐨勫瓧绗︿覆
+			out.write((obj.toString()).getBytes());
+			out.flush();
+			out.close();
+
+			// 璇锋眰杩斿洖鐨勭姸鎬�
+			if (conn.getResponseCode() == 200) {
+				// 璇锋眰杩斿洖鐨勬暟鎹�
+				in = conn.getInputStream();
+				//杈撳叆鍒颁复鏃舵枃浠�
+				/*OutputStream os = new FileOutputStream(file);
+				int bytesRead = 0;
+				byte[] buffer = new byte[8192];
+				while ((bytesRead = in.read(buffer, 0, 8192)) != -1) {
+					os.write(buffer, 0, bytesRead);
+				}*/
+				FileUtils.copyInputStreamToFile(in, file);
+
+				conn.disconnect();
+				conn = null;
+			}
+
+			if (in != null) {
+				in.close();
+				in = null;
+			}
+
+			if (conn != null) {
+				conn.disconnect();
+				conn = null;
+			}
+		}catch (Exception e) {
+			e.printStackTrace();
+			if (in != null) {
+				try {
+					in.close();
+				}catch (Exception ep) {
+					ep.printStackTrace();
+				}
+				in = null;
+			}
+
+			if (conn != null) {
+				conn.disconnect();
+				conn = null;
+			}
+		}finally {
+			if(file != null){
+				file.deleteOnExit();
+			}
+		}
+		return file;
+	}
+
+
+	/**鐢熸垚鏈夐檺浜岀淮鐮�,杩斿洖涓存椂鏂�
+	 * @param at 寰俊token
+	 * @param page 璺宠浆閾炬帴
+	 * @param width 瀹藉害
+	 * @param autoColor 榛樿false
+	 * @param lineColor 榛樿null
+	 * @param isHyaline 榛樿false
+	 * @param envVersion 瑕佹墦寮�鐨勫皬绋嬪簭鐗堟湰銆傛寮忕増涓� release锛屼綋楠岀増涓� trial锛屽紑鍙戠増涓� develop
+	 * @return
+	 */
+	public static File createLimitedQrCode(String at, String page, int width, boolean autoColor,
+										   JSONObject lineColor, boolean isHyaline,String envVersion) {
+		String imgUrl = null;
+		InputStream in = null;
+		HttpURLConnection conn = null;
+
+		//鍒涘缓涓存椂鏂囦欢
+		File file = null;
+		try {
+			file = File.createTempFile("temp", ".jpg");
+			//鐢熸垚鍙戦�佹暟鎹�
+			JSONObject obj = new JSONObject();
+			obj.put("width", width);
+			obj.put("path", page);
+			obj.put("auto_color", autoColor);
+			obj.put("line_color", lineColor);
+			obj.put("is_hyaline", isHyaline);
+			obj.put("env_version", envVersion);
+
+			// 鍒涘缓url璧勬簮
+			URL url = new URL(StringUtils.format(MAKE_TWOCODE_ROUND_URL, at));
+			// 寤虹珛http杩炴帴
+			conn = (HttpURLConnection) url.openConnection();
+			// 璁剧疆鍏佽杈撳嚭
+			conn.setDoOutput(true);
+			conn.setDoInput(true);
+			// 璁剧疆涓嶇敤缂撳瓨
+			conn.setUseCaches(false);
+			// 璁剧疆浼犻�掓柟寮�
+			conn.setRequestMethod("POST");
+			// 璁剧疆缁存寔闀胯繛鎺�
+			conn.setRequestProperty("Connection", "Keep-Alive");
+			// 璁剧疆鏂囦欢瀛楃闆�:
+			conn.setRequestProperty("Charset", "UTF-8");
+			// 璁剧疆鏂囦欢绫诲瀷:
+			conn.setRequestProperty("contentType", "application/json");
+			// 寮�濮嬭繛鎺ヨ姹�
+			conn.connect();
+			OutputStream out = conn.getOutputStream();
+			// 鍐欏叆璇锋眰鐨勫瓧绗︿覆
+			out.write((obj.toString()).getBytes());
+			out.flush();
+			out.close();
+
+			// 璇锋眰杩斿洖鐨勭姸鎬�
+			if (conn.getResponseCode() == 200) {
+				// 璇锋眰杩斿洖鐨勬暟鎹�
+				in = conn.getInputStream();
+				//杈撳叆鍒颁复鏃舵枃浠�
+				/*OutputStream os = new FileOutputStream(file);
+				int bytesRead = 0;
+				byte[] buffer = new byte[8192];
+				while ((bytesRead = in.read(buffer, 0, 8192)) != -1) {
+					os.write(buffer, 0, bytesRead);
+				}*/
+				FileUtils.copyInputStreamToFile(in, file);
+
+				conn.disconnect();
+				conn = null;
+			}
+
+			if (in != null) {
+				in.close();
+				in = null;
+			}
+
+			if (conn != null) {
+				conn.disconnect();
+				conn = null;
+			}
+		}catch (Exception e) {
+			e.printStackTrace();
+			if (in != null) {
+				try {
+					in.close();
+				}catch (Exception ep) {
+					ep.printStackTrace();
+				}
+				in = null;
+			}
+
+			if (conn != null) {
+				conn.disconnect();
+				conn = null;
+			}
+		}finally {
+			if(file != null){
+				file.deleteOnExit();
+			}
+		}
+		return file;
 	}
 
 	/**鐢熸垚鏃犻檺浜岀淮鐮�,杩斿洖涓存椂鏂�
@@ -504,4 +709,107 @@
 		return obj;
 	}
 
+
+
+	/**鐢熸垚鏃犻檺浜岀淮鐮�,杩斿洖涓存椂鏂�
+	 * @param at 寰俊token
+	 * @param scene 鍙傛暟锛屽彧鑳�32浣嶏紝鏈�濂戒笉瑕佷腑鏂�
+	 * @param page 璺宠浆閾炬帴
+	 * @param width 瀹藉害
+	 * @param autoColor 榛樿false
+	 * @param lineColor 榛樿null
+	 * @param isHyaline 榛樿false
+	 * @return
+	 */
+	public static File createUnlimitQrCode(String at, String scene, String page, int width, boolean autoColor,
+										   JSONObject lineColor, boolean isHyaline, String env_version) throws IOException {
+		String imgUrl = null;
+		InputStream in = null;
+		HttpURLConnection conn = null;
+
+		//鍒涘缓涓存椂鏂囦欢
+		File file = File.createTempFile("temp", ".jpg");
+
+		try {
+			//鐢熸垚鍙戦�佹暟鎹�
+			JSONObject obj = new JSONObject();
+			obj.put("scene", scene);
+			obj.put("width", width);
+			obj.put("page", page);
+			obj.put("auto_color", autoColor);
+			obj.put("line_color", lineColor);
+			obj.put("is_hyaline", isHyaline);
+			obj.put("env_version", env_version);
+			// 鍒涘缓url璧勬簮
+			URL url = new URL(StringUtils.format(URL_UNLIMIT_SQUARE, at));
+			// 寤虹珛http杩炴帴
+			conn = (HttpURLConnection) url.openConnection();
+			// 璁剧疆鍏佽杈撳嚭
+			conn.setDoOutput(true);
+			conn.setDoInput(true);
+			// 璁剧疆涓嶇敤缂撳瓨
+			conn.setUseCaches(false);
+			// 璁剧疆浼犻�掓柟寮�
+			conn.setRequestMethod("POST");
+			// 璁剧疆缁存寔闀胯繛鎺�
+			conn.setRequestProperty("Connection", "Keep-Alive");
+			// 璁剧疆鏂囦欢瀛楃闆�:
+			conn.setRequestProperty("Charset", "UTF-8");
+			// 璁剧疆鏂囦欢绫诲瀷:
+			conn.setRequestProperty("contentType", "application/json");
+			// 寮�濮嬭繛鎺ヨ姹�
+			conn.connect();
+			OutputStream out = conn.getOutputStream();
+			// 鍐欏叆璇锋眰鐨勫瓧绗︿覆
+			out.write((obj.toString()).getBytes());
+			out.flush();
+			out.close();
+
+			// 璇锋眰杩斿洖鐨勭姸鎬�
+			if (conn.getResponseCode() == 200) {
+				// 璇锋眰杩斿洖鐨勬暟鎹�
+				in = conn.getInputStream();
+				//杈撳叆鍒颁复鏃舵枃浠�
+				/*OutputStream os = new FileOutputStream(file);
+				int bytesRead = 0;
+				byte[] buffer = new byte[8192];
+				while ((bytesRead = in.read(buffer, 0, 8192)) != -1) {
+					os.write(buffer, 0, bytesRead);
+				}*/
+				FileUtils.copyInputStreamToFile(in, file);
+
+				conn.disconnect();
+				conn = null;
+			}
+
+			if (in != null) {
+				in.close();
+				in = null;
+			}
+
+			if (conn != null) {
+				conn.disconnect();
+				conn = null;
+			}
+		}catch (Exception e) {
+			e.printStackTrace();
+			if (in != null) {
+				try {
+					in.close();
+				}catch (Exception ep) {
+					ep.printStackTrace();
+				}
+				in = null;
+			}
+
+			if (conn != null) {
+				conn.disconnect();
+				conn = null;
+			}
+		}finally {
+			file.deleteOnExit();
+		}
+		return file;
+	}
+
 }

--
Gitblit v1.8.0