xujunwei 9 maanden geleden
bovenliggende
commit
59ca0cf4bf

+ 80 - 0
framework-common/src/main/java/com/mrxu/framework/common/xcx/api/WxaCodeApi.java

@@ -0,0 +1,80 @@
+package com.mrxu.framework.common.xcx.api;
+
+import com.alibaba.fastjson.JSONObject;
+import com.mrxu.framework.common.util.MrxuAssert;
+import com.mrxu.framework.common.weixin.base.WxHttp;
+import com.mrxu.framework.common.xcx.bean.AddTemplateResponse;
+import com.mrxu.framework.common.xcx.bean.WxaCode;
+
+/**
+ * 未调通
+ * @author xvjunwei
+ *
+ */
+public class WxaCodeApi {
+	
+	private static String url = "https://api.weixin.qq.com/wxa/";
+	
+	/**
+	 * 获取小程序码,适用于需要的码数量较少的业务场景。通过该接口生成的小程序码,永久有效,有数量限制
+	 * @param token
+	 * @param path 扫码进入的小程序页面路径,最大长度 128 字节,不能为空;对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar",即可在 wx.getLaunchOptionsSync 接口中的 query 参数获取到 {foo:"bar"}。
+	 * @param width 二维码的宽度,单位 px,最小 280px,最大 1280px
+	 * @param auto_color 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调,默认 false
+	 * @param line_color auto_color 为 false 时生效,使用 rgb 设置颜色 例如 {"r":"xxx","g":"xxx","b":"xxx"} 十进制表示
+	 * @param is_hyaline 是否需要透明底色,为 true 时,生成透明底色的小程序
+	 * @return
+	 */
+	public static WxaCode getwxacode(String token, String path, int width, boolean auto_color, JSONObject line_color, boolean is_hyaline) {
+		MrxuAssert.isTrue(width>=280, "二维码的宽度不小于280px");
+		MrxuAssert.isTrue(width<=1280, "二维码的宽度不大于1280px");
+		JSONObject queryParas = new JSONObject();
+		queryParas.put("path", path);
+		queryParas.put("width", width);
+		queryParas.put("auto_color", auto_color);
+		queryParas.put("line_color", line_color);
+		queryParas.put("is_hyaline", is_hyaline);
+		return WxHttp.post(WxaCode.class, url+"getwxacode"+"?access_token="+token, queryParas);
+	}
+	
+	/**
+	 * 获取小程序码,适用于需要的码数量极多的业务场景。通过该接口生成的小程序码,永久有效,数量暂无限制
+	 * @param token
+	 * @param scene 最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)
+	 * @param page 必须是已经发布的小程序存在的页面(否则报错),例如 pages/index/index, 根路径前不要填加 /,不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面
+	 * @param width 二维码的宽度,单位 px,最小 280px,最大 1280px
+	 * @param auto_color 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调,默认 false
+	 * @param line_color auto_color 为 false 时生效,使用 rgb 设置颜色 例如 {"r":"xxx","g":"xxx","b":"xxx"} 十进制表示
+	 * @param is_hyaline 是否需要透明底色,为 true 时,生成透明底色的小程序
+	 * @return
+	 */
+	public static WxaCode getwxacodeunlimit(String token,String scene,String page,int width,boolean auto_color,JSONObject line_color,boolean is_hyaline) {
+		MrxuAssert.isTrue(width>=280, "二维码的宽度不小于280px");
+		MrxuAssert.isTrue(width<=1280, "二维码的宽度不大于1280px");
+		JSONObject queryParas = new JSONObject();
+		queryParas.put("scene", scene);
+		queryParas.put("page", page);
+		queryParas.put("width", width);
+		queryParas.put("auto_color", auto_color);
+		queryParas.put("line_color", line_color);
+		queryParas.put("is_hyaline", is_hyaline);
+		return WxHttp.post(WxaCode.class,  url+"getwxacodeunlimit"+"?access_token="+token, queryParas);
+	}
+	
+	/**
+	 * 获取小程序二维码,适用于需要的码数量较少的业务场景。通过该接口生成的小程序码,永久有效,有数量限制
+	 * @param token
+	 * @param page 扫码进入的小程序页面路径,最大长度 128 字节,不能为空;对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar",即可在 wx.getLaunchOptionsSync 接口中的 query 参数获取到 {foo:"bar"}。
+	 * @param width 二维码的宽度,单位 px,最小 280px,最大 1280px
+	 * @return
+	 */
+	public static WxaCode createwxaqrcode(String token,String path,int width) {
+		MrxuAssert.isTrue(width>=280, "二维码的宽度不小于280px");
+		MrxuAssert.isTrue(width<=1280, "二维码的宽度不大于1280px");
+		JSONObject queryParas = new JSONObject();
+		queryParas.put("path", path);
+		queryParas.put("width", width);
+		return WxHttp.post(WxaCode.class,  url+"getwxacodeunlimit"+"https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token="+token, queryParas);
+	}
+	
+}

+ 29 - 0
framework-common/src/main/java/com/mrxu/framework/common/xcx/bean/WxaCode.java

@@ -0,0 +1,29 @@
+package com.mrxu.framework.common.xcx.bean;
+
+import com.mrxu.framework.common.weixin.base.WxResult;
+
+public class WxaCode extends WxResult {
+	
+	private String contentType;
+	
+	private String  url;
+
+	public String getContentType() {
+		return contentType;
+	}
+
+	public void setContentType(String contentType) {
+		this.contentType = contentType;
+	}
+
+	public String getUrl() {
+		return url;
+	}
+
+	public void setUrl(String url) {
+		this.url = url;
+	}
+
+
+	
+}