xujunwei 3 лет назад
Родитель
Сommit
0883958fa9

+ 13 - 1
framework-common/src/main/java/com/mrxu/framework/common/weixin/api/ComponentTokenApi.java

@@ -10,7 +10,7 @@ public class ComponentTokenApi {
     private static String authorizer_token = "https://api.weixin.qq.com/cgi-bin/component/api_authorizer_token?component_access_token=";
     private static String authorizer_token = "https://api.weixin.qq.com/cgi-bin/component/api_authorizer_token?component_access_token=";
     private static String create_preauthcode = "https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode?component_access_token=";
     private static String create_preauthcode = "https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode?component_access_token=";
     private static String query_auth = "https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token=";
     private static String query_auth = "https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token=";
-
+    private static String get_authorizer_info = "https://api.weixin.qq.com/cgi-bin/component/api_get_authorizer_info?component_access_token=";
     // https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/ThirdParty/token/component_access_token.html
     // https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/ThirdParty/token/component_access_token.html
     public static ComponentToken getComponentToken(String componentAppid, String componentAppsecret,String componentVerifyTicket) {
     public static ComponentToken getComponentToken(String componentAppid, String componentAppsecret,String componentVerifyTicket) {
         JSONObject json = new JSONObject();
         JSONObject json = new JSONObject();
@@ -56,5 +56,17 @@ public class ComponentTokenApi {
         return rs.getAuthorization_info();
         return rs.getAuthorization_info();
     }
     }
 
 
+    /**
+     * @Description:获取授权帐号详情
+     * https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/ThirdParty/token/api_get_authorizer_info.html
+     */ 
+    public static AuthAccountInfo getAuthorizerInfo(String componentAppid, String componentAccessToken,String authorizerAppid) {
+        JSONObject json = new JSONObject();
+        json.put("component_appid", componentAppid);
+        json.put("authorizer_appid", authorizerAppid);
+        AuthAccountInfo rs = WxHttp.post(AuthAccountInfo.class,get_authorizer_info+componentAccessToken,json);
+        return rs;
+    }
+
 
 
 }
 }

+ 14 - 0
framework-common/src/main/java/com/mrxu/framework/common/weixin/bean/AuthAccountInfo.java

@@ -0,0 +1,14 @@
+package com.mrxu.framework.common.weixin.bean;
+
+import com.mrxu.framework.common.weixin.base.WxResult;
+import lombok.Data;
+
+@Data
+public class AuthAccountInfo extends WxResult {
+
+    // 授权信息,详见authorization_info
+    private AuthorizationInfo authorization_info;
+    // 详见公众号帐号信息
+    private AuthorizerInfo authorizer_info;
+
+}

+ 206 - 0
framework-common/src/main/java/com/mrxu/framework/common/weixin/bean/AuthorizerInfo.java

@@ -0,0 +1,206 @@
+package com.mrxu.framework.common.weixin.bean;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AuthorizerInfo {
+
+    // 昵称
+    private String nick_name;
+    // 头像
+    private String head_img;
+    // 公众号类型
+    private ServiceTypeInfo service_type_info;
+    // 公众号认证类型
+    private VerifyTypeInfo verify_type_info;
+    // 原始 ID
+    private String user_name;
+    // 主体名称
+    private String principal_name;
+    // 公众号所设置的微信号,可能为空
+    private String alias;
+    // 用以了解功能的开通状况(0代表未开通,1代表已开通),详见business_info 说明
+    BusinessInfo business_info;
+    // 二维码图片的 URL,开发者最好自行也进行保存
+    private String qrcode_url;
+    // 帐号状态,该字段小程序也返回
+    private int account_status;
+
+
+    // 小程序特有*******************************************
+    // 帐号介绍
+    private String signature;
+    // 小程序注册方式
+    private Integer register_type;
+    // 基础配置信息
+    private BasicConfig basic_config;
+    // 小程序配置,根据这个字段判断是否为小程序类型授权
+    private MiniProgramInfo	object;
+
+    // 公众号类型
+    @Data
+    public class ServiceTypeInfo {
+        private String id;
+        public String getDes() {
+            // 认为是公众号
+            if(register_type == null) {
+                if("0".equals(id)) {
+                    return "订阅号";
+                }
+                if("1".equals(id)) {
+                    return "由历史老帐号升级后的订阅号";
+                }
+                if("2".equals(id)) {
+                    return "服务号";
+                }
+            }
+            // 认为是小程序
+            else {
+                if("0".equals(id)) {
+                    return "普通小程序";
+                }
+                if("12".equals(id)) {
+                    return "试用小程序";
+                }
+                if("4".equals(id)) {
+                    return "小游戏";
+                }
+                if("10".equals(id)) {
+                    return "小商店";
+                }
+                if("2".equals(id) || "3".equals(id)) {
+                    return "门店小程序";
+                }
+            }
+            return "错误";
+        }
+    }
+
+    // 公众号认证类型
+    @Data
+    public class VerifyTypeInfo {
+        private String id;
+        public String getDes() {
+            // 认为是公众号
+            if(register_type == null) {
+                if ("-1".equals(id)) {
+                    return "未认证";
+                }
+                if ("0".equals(id)) {
+                    return "微信认证";
+                }
+                if ("1".equals(id)) {
+                    return "新浪微博认证";
+                }
+                if ("2".equals(id)) {
+                    return "腾讯微博认证";
+                }
+                if ("3".equals(id)) {
+                    return "已资质认证通过但还未通过名称认证";
+                }
+                if ("4".equals(id)) {
+                    return "已资质认证通过、还未通过名称认证,但通过了新浪微博认证";
+                }
+                if ("5".equals(id)) {
+                    return "已资质认证通过、还未通过名称认证,但通过了腾讯微博认证";
+                }
+            }
+            // 认为是小程序
+            else {
+                if ("0".equals(id)) {
+                    return "普通方式注册";
+                }
+                if ("2".equals(id)) {
+                    return "通过复用公众号创建小程序 api 注册";
+                }
+                if ("6".equals(id)) {
+                    return "通过法人扫脸创建企业小程序 api 注册";
+                }
+                if ("13".equals(id)) {
+                    return "通过创建试用小程序 api 注册";
+                }
+                if ("15".equals(id)) {
+                    return "通过联盟控制台注册";
+                }
+                if ("16".equals(id)) {
+                    return "通过创建个人小程序 api 注册";
+                }
+                if ("17".equals(id)) {
+                    return "通过创建个人交易小程序 api 注册";
+                }
+                if ("19".equals(id)) {
+                    return "通过试用小程序转正 api 注册";
+                }
+                if ("22".equals(id)) {
+                    return "通过复用商户号创建企业小程序 api 注册";
+                }
+                if ("23".equals(id)) {
+                    return "通过复用商户号转正 api 注册";
+                }
+            }
+            return "错误";
+        }
+    }
+
+    // 用以了解功能的开通状况(0代表未开通,1代表已开通),详见business_info 说明
+    @Data
+    public class BusinessInfo {
+        // 是否开通微信门店功能
+        private int open_store;
+        // 是否开通微信扫商品功能
+        private int open_scan;
+        // 是否开通微信支付功能
+        private int open_pay;
+        // 是否开通微信卡券功能
+        private int open_card;
+        // 是否开通微信摇一摇功能
+        private int open_shake;
+    }
+
+    @Data
+    public class BasicConfig {
+        // 是否已经绑定手机号
+        private boolean is_phone_configured;
+        // 是否已经绑定邮箱,不绑定邮箱帐号的不可登录微信公众平台
+        private boolean is_email_configured;
+    }
+
+    @Data
+    public class MiniProgramInfo {
+        // 小程序配置的合法域名信息
+        NetWork network;
+        // array小程序配置的类目信息
+        List<Categories> categories;
+    }
+
+    // 小程序配置的合法域名信息
+    @Data
+    public class NetWork {
+        private String [] RequestDomain;
+        private String [] WsRequestDomain;
+        private String [] UploadDomain;
+        private String [] DownloadDomain;
+        private String [] BizDomain;
+        private String [] UDPDomain;
+        private String [] TCPDomain;
+        private String [] PrefetchDNSDomain;
+        private String [] NewRequestDomain;
+        private String [] NewWsRequestDomain;
+        private String [] NewUploadDomain;
+        private String [] NewDownloadDomain;
+        private String [] NewBizDomain;
+        private String [] NewUDPDomain;
+        private String [] NewTCPDomain;
+        private String [] NewPrefetchDNSDomain;
+    }
+
+    // array小程序配置的类目信息
+    @Data
+    public class Categories {
+        private String first;
+        private String second;
+    }
+
+}