From 8d96e3c46f4eead390516b27cb46310efeaa3ba4 Mon Sep 17 00:00:00 2001 From: niko-develop Date: Mon, 20 Dec 2021 13:55:49 +0800 Subject: [PATCH] add phoneNumberApi --- .../foxinmy/weixin4j/wxa/WeixinAppFacade.java | 25 +++-- .../weixin4j/wxa/api/PhoneInfoResult.java | 106 ++++++++++++++++++ .../weixin4j/wxa/api/PhoneNumberApi.java | 35 ++++++ .../weixin4j/wxa/api/weixin.properties | 3 + 4 files changed, 159 insertions(+), 10 deletions(-) create mode 100644 weixin4j-wxa/src/main/java/com/foxinmy/weixin4j/wxa/api/PhoneInfoResult.java create mode 100644 weixin4j-wxa/src/main/java/com/foxinmy/weixin4j/wxa/api/PhoneNumberApi.java diff --git a/weixin4j-wxa/src/main/java/com/foxinmy/weixin4j/wxa/WeixinAppFacade.java b/weixin4j-wxa/src/main/java/com/foxinmy/weixin4j/wxa/WeixinAppFacade.java index aae4a24f..d2bcf87e 100644 --- a/weixin4j-wxa/src/main/java/com/foxinmy/weixin4j/wxa/WeixinAppFacade.java +++ b/weixin4j-wxa/src/main/java/com/foxinmy/weixin4j/wxa/WeixinAppFacade.java @@ -1,7 +1,5 @@ package com.foxinmy.weixin4j.wxa; -import java.util.Properties; - import com.foxinmy.weixin4j.cache.CacheStorager; import com.foxinmy.weixin4j.cache.FileCacheStorager; import com.foxinmy.weixin4j.model.Token; @@ -9,13 +7,9 @@ import com.foxinmy.weixin4j.model.WeixinAccount; import com.foxinmy.weixin4j.mp.token.WeixinTokenCreator; import com.foxinmy.weixin4j.token.TokenCreator; import com.foxinmy.weixin4j.token.TokenManager; -import com.foxinmy.weixin4j.wxa.api.CustomMessageApi; -import com.foxinmy.weixin4j.wxa.api.LoginApi; -import com.foxinmy.weixin4j.wxa.api.QrCodeApi; -import com.foxinmy.weixin4j.wxa.api.SecCheckApi; -import com.foxinmy.weixin4j.wxa.api.TemplateApi; -import com.foxinmy.weixin4j.wxa.api.TemplateMessageApi; -import com.foxinmy.weixin4j.wxa.api.SubscribeMessageApi; +import com.foxinmy.weixin4j.wxa.api.*; + +import java.util.Properties; /** * The facade of WeChat Mini Program APIs. @@ -31,6 +25,7 @@ public class WeixinAppFacade { private final CustomMessageApi customMessageApi; private final SecCheckApi secCheckApi; private final SubscribeMessageApi subscribeMessageApi; + private final PhoneNumberApi phoneNumberApi; /** * Constructs {@link WeixinAppFacade} using {@link FileCacheStorager}. @@ -69,7 +64,7 @@ public class WeixinAppFacade { * * @param weixinAccount the {@link WeixinAccount}. * @param cacheStorager the {@link CacheStorager}. - * @param properties properties to overrides the properties defined in {@code weixin.properties}. + * @param properties properties to overrides the properties defined in {@code weixin.properties}. */ public WeixinAppFacade( WeixinAccount weixinAccount, @@ -114,6 +109,7 @@ public class WeixinAppFacade { this.customMessageApi = new CustomMessageApi(tokenManager, properties); this.secCheckApi = new SecCheckApi(tokenManager, properties); this.subscribeMessageApi = new SubscribeMessageApi(tokenManager, properties); + this.phoneNumberApi = new PhoneNumberApi(tokenManager, properties); } /** @@ -180,4 +176,13 @@ public class WeixinAppFacade { return secCheckApi; } + /** + * 获取微信手机号相关的 API。 + * + * @return 微信手机号相关的 API。 + * @since 1.10 + */ + public PhoneNumberApi getPhoneNumberApi() { + return phoneNumberApi; + } } diff --git a/weixin4j-wxa/src/main/java/com/foxinmy/weixin4j/wxa/api/PhoneInfoResult.java b/weixin4j-wxa/src/main/java/com/foxinmy/weixin4j/wxa/api/PhoneInfoResult.java new file mode 100644 index 00000000..e813cef4 --- /dev/null +++ b/weixin4j-wxa/src/main/java/com/foxinmy/weixin4j/wxa/api/PhoneInfoResult.java @@ -0,0 +1,106 @@ +package com.foxinmy.weixin4j.wxa.api; + +import com.alibaba.fastjson.TypeReference; + +import java.io.Serializable; + +/** + * get phone number result + * + * @see + */ +public class PhoneInfoResult implements Serializable { + + public static final TypeReference TYPE_REFERENCE + = new TypeReference() { + }; + + private PhoneInfo phoneInfo; + + public PhoneInfo getPhoneInfo() { + return phoneInfo; + } + + public void setPhoneInfo(PhoneInfo phoneInfo) { + this.phoneInfo = phoneInfo; + } + + public static class PhoneInfo implements Serializable { + + private String phoneNumber; + + private String purePhoneNumber; + + private String countryCode; + + private Watermark watermark; + + /** + * @return 用户绑定的手机号(国外手机号会有区号) + */ + public String getPhoneNumber() { + return phoneNumber; + } + + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + + /** + * @return 没有区号的手机号 + */ + public String getPurePhoneNumber() { + return purePhoneNumber; + } + + public void setPurePhoneNumber(String purePhoneNumber) { + this.purePhoneNumber = purePhoneNumber; + } + + /** + * @return 区号 + */ + public String getCountryCode() { + return countryCode; + } + + public void setCountryCode(String countryCode) { + this.countryCode = countryCode; + } + + /** + * @return 数据水印 + */ + public Watermark getWatermark() { + return watermark; + } + + public void setWatermark(Watermark watermark) { + this.watermark = watermark; + } + } + + + public static class Watermark implements Serializable { + + private String appId; + + private Long timestamp; + + public String getAppId() { + return appId; + } + + public void setAppId(String appId) { + this.appId = appId; + } + + public Long getTimestamp() { + return timestamp; + } + + public void setTimestamp(Long timestamp) { + this.timestamp = timestamp; + } + } +} diff --git a/weixin4j-wxa/src/main/java/com/foxinmy/weixin4j/wxa/api/PhoneNumberApi.java b/weixin4j-wxa/src/main/java/com/foxinmy/weixin4j/wxa/api/PhoneNumberApi.java new file mode 100644 index 00000000..46c87081 --- /dev/null +++ b/weixin4j-wxa/src/main/java/com/foxinmy/weixin4j/wxa/api/PhoneNumberApi.java @@ -0,0 +1,35 @@ +package com.foxinmy.weixin4j.wxa.api; + +import com.foxinmy.weixin4j.exception.WeixinException; +import com.foxinmy.weixin4j.http.weixin.WeixinResponse; +import com.foxinmy.weixin4j.token.TokenManager; + +import java.util.Properties; + +public class PhoneNumberApi extends TokenManagerApi { + + public PhoneNumberApi(TokenManager tokenManager) { + super(tokenManager); + } + + public PhoneNumberApi(TokenManager tokenManager, Properties properties) { + super(tokenManager, properties); + } + + /** + * 获取微信绑定手机号码 + * + * @see + */ + public PhoneInfoResult.PhoneInfo getPhoneNumber(String code) throws WeixinException { + String wxaGetUserPhone = getRequestUri( + "wxa_get_user_phone", + code, + WxaApiResult.TYPE_REFERENCE + ); + WeixinResponse post = this.weixinExecutor.post(wxaGetUserPhone); + return post.getAsObject(PhoneInfoResult.TYPE_REFERENCE) + .getPhoneInfo(); + } + +} diff --git a/weixin4j-wxa/src/main/resources/com/foxinmy/weixin4j/wxa/api/weixin.properties b/weixin4j-wxa/src/main/resources/com/foxinmy/weixin4j/wxa/api/weixin.properties index afc6991e..94f8b1f2 100644 --- a/weixin4j-wxa/src/main/resources/com/foxinmy/weixin4j/wxa/api/weixin.properties +++ b/weixin4j-wxa/src/main/resources/com/foxinmy/weixin4j/wxa/api/weixin.properties @@ -55,3 +55,6 @@ wxa_media_check_async={api_wxa_url}/media_check_async?access_token=%s # msgSecCheck wxa_msg_sec_check={api_wxa_url}/msg_sec_check?access_token=%s + +# getuserphonenumber +wxa_get_user_phone={api_wxa_url}/business/getuserphonenumber?access_token=%s&code=%s