Skip to content

Commit e44f6d8

Browse files
committed
🎨 binarywang#3345 【小程序】获取手机号 getPhoneNoInfo 旧版本兼容
1 parent 5c1aacc commit e44f6d8

File tree

3 files changed

+29
-4
lines changed

3 files changed

+29
-4
lines changed

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaUserService.java

+14-2
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,19 @@ public interface WxMaUserService {
4545
void setUserStorage(Map<String, String> kvMap, String sessionKey, String openid) throws WxErrorException;
4646

4747
/**
48-
* 获取手机号信息,2023年8月28日起
48+
* 解密用户手机号信息.
49+
*
50+
* @param sessionKey 会话密钥
51+
* @param encryptedData 消息密文
52+
* @param ivStr 加密算法的初始向量
53+
* @return .
54+
* @deprecated 当前(基础库2.21.2以下使用)旧版本,以上请使用替代方法 {@link #getPhoneNoInfo(String)}
55+
*/
56+
@Deprecated
57+
WxMaPhoneNumberInfo getPhoneNoInfo(String sessionKey, String encryptedData, String ivStr);
58+
59+
/**
60+
* 获取手机号信息,基础库:2.21.2及以上或2023年8月28日起
4961
*
5062
* @param code 每个code只能使用一次,code的有效期为5min。code获取方式参考<a href="https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html">手机号快速验证组件</a>
5163
* @return 用户手机号信息
@@ -55,7 +67,7 @@ public interface WxMaUserService {
5567
WxMaPhoneNumberInfo getPhoneNumber(String code) throws WxErrorException;
5668

5769
/**
58-
* 获取手机号信息,2023年8月28日起
70+
* 获取手机号信息,基础库:2.21.2及以上或2023年8月28日起
5971
*
6072
* @param code 每个code只能使用一次,code的有效期为5min。code获取方式参考<a href="https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html">手机号快速验证组件</a>
6173
* @return 用户手机号信息

weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaUserServiceImpl.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ public void setUserStorage(Map<String, String> kvMap, String sessionKey, String
5757
this.service.post(url, params);
5858
}
5959

60+
@Override
61+
public WxMaPhoneNumberInfo getPhoneNoInfo(String sessionKey, String encryptedData, String ivStr) {
62+
return WxMaPhoneNumberInfo.fromJson(WxMaCryptUtils.decrypt(sessionKey, encryptedData, ivStr));
63+
}
64+
6065
@Override
6166
public WxMaPhoneNumberInfo getPhoneNumber(String code) throws WxErrorException {
6267
JsonObject param = new JsonObject();
@@ -67,7 +72,6 @@ public WxMaPhoneNumberInfo getPhoneNumber(String code) throws WxErrorException {
6772
return WxMaGsonBuilder.create().fromJson(response.getAsJsonObject(PHONE_INFO),
6873
WxMaPhoneNumberInfo.class);
6974
}
70-
7175
return null;
7276
}
7377

weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaUserServiceImplTest.java

+10-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,16 @@ public void testCheckUserInfo() {
4949

5050

5151
@Test
52-
public void testGetPhoneNoInfo() throws WxErrorException {
52+
public void testGetPhoneNoInfo() {
53+
WxMaPhoneNumberInfo phoneNoInfo = this.wxService.getUserService().getPhoneNoInfo("tiihtNczf5v6AKRyjwEUhQ==",
54+
"CiyLU1Aw2KjvrjMdj8YKliAjtP4gsMZMQmRzooG2xrDcvSnxIMXFufNstNGTyaGS9uT5geRa0W4oTOb1WT7fJlAC+oNPdbB+3hVbJSRgv+4lGOETKUQz6OYStslQ142dNCuabNPGBzlooOmB231qMM85d2/fV6ChevvXvQP8Hkue1poOFtnEtpyxVLW1zAo6/1Xx1COxFvrc2d7UL/lmHInNlxuacJXwu0fjpXfz/YqYzBIBzD6WUfTIF9GRHpOn/Hz7saL8xz+W//FRAUid1OksQaQx4CMs8LOddcQhULW4ucetDf96JcR3g0gfRK4PC7E/r7Z6xNrXd2UIeorGj5Ef7b1pJAYB6Y5anaHqZ9J6nKEBvB4DnNLIVWSgARns/8wR2SiRS7MNACwTyrGvt9ts8p12PKFdlqYTopNHR1Vf7XjfhQlVsAJdNiKdYmYVoKlaRv85IfVunYzO0IKXsyl7JCUjCpoG20f0a04COwfneQAGGwd5oa+T8yO5hzuyDb/XcxxmK01EpqOyuxINew==",
55+
"r7BXXKkLb8qrSNn05n0qiA==");
56+
assertNotNull(phoneNoInfo);
57+
System.out.println(phoneNoInfo.toString());
58+
}
59+
60+
@Test
61+
public void testGetPhoneInfo() throws WxErrorException {
5362
WxMaPhoneNumberInfo phoneNoInfo = this.wxService.getUserService().getPhoneNumber("tiihtNczf5v6AKRyjwEUhQ==");
5463
assertNotNull(phoneNoInfo);
5564
System.out.println(phoneNoInfo.toString());

0 commit comments

Comments
 (0)