Skip to content

Commit 833f60c

Browse files
authored
🆕 #3736 【小程序】增加解密群入口敏感数据的方法
1 parent 1922aaa commit 833f60c

File tree

4 files changed

+78
-0
lines changed

4 files changed

+78
-0
lines changed

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package cn.binarywang.wx.miniapp.api;
22

3+
import cn.binarywang.wx.miniapp.bean.WxMaGroupEnterInfo;
34
import cn.binarywang.wx.miniapp.bean.WxMaShareInfo;
45

56
/**
@@ -18,4 +19,16 @@ public interface WxMaShareService {
1819
*/
1920
WxMaShareInfo getShareInfo(String sessionKey, String encryptedData, String ivStr);
2021

22+
/**
23+
* 解密群入口敏感数据.
24+
* 对应 wx.getGroupEnterInfo 接口返回的 encryptedData 解密
25+
*
26+
* @param sessionKey 会话密钥
27+
* @param encryptedData 消息密文
28+
* @param ivStr 加密算法的初始向量
29+
* @return 群入口信息
30+
* @see <a href="https://developers.weixin.qq.com/miniprogram/dev/api/open-api/group/wx.getGroupEnterInfo.html">wx.getGroupEnterInfo 官方文档</a>
31+
*/
32+
WxMaGroupEnterInfo getGroupEnterInfo(String sessionKey, String encryptedData, String ivStr);
33+
2134
}

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import cn.binarywang.wx.miniapp.api.WxMaService;
44
import cn.binarywang.wx.miniapp.api.WxMaShareService;
5+
import cn.binarywang.wx.miniapp.bean.WxMaGroupEnterInfo;
56
import cn.binarywang.wx.miniapp.bean.WxMaShareInfo;
67
import cn.binarywang.wx.miniapp.util.crypt.WxMaCryptUtils;
78
import lombok.RequiredArgsConstructor;
@@ -18,4 +19,9 @@ public WxMaShareInfo getShareInfo(String sessionKey, String encryptedData, Strin
1819
return WxMaShareInfo.fromJson(WxMaCryptUtils.decrypt(sessionKey, encryptedData, ivStr));
1920

2021
}
22+
23+
@Override
24+
public WxMaGroupEnterInfo getGroupEnterInfo(String sessionKey, String encryptedData, String ivStr) {
25+
return WxMaGroupEnterInfo.fromJson(WxMaCryptUtils.decrypt(sessionKey, encryptedData, ivStr));
26+
}
2127
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package cn.binarywang.wx.miniapp.bean;
2+
3+
import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder;
4+
import com.google.gson.annotations.SerializedName;
5+
import lombok.Data;
6+
7+
import java.io.Serializable;
8+
9+
/**
10+
* 微信小程序群入口信息.
11+
* 对应 wx.getGroupEnterInfo 接口返回的解密数据
12+
*
13+
* @see <a href="https://developers.weixin.qq.com/miniprogram/dev/api/open-api/group/wx.getGroupEnterInfo.html">wx.getGroupEnterInfo 官方文档</a>
14+
*/
15+
@Data
16+
public class WxMaGroupEnterInfo implements Serializable {
17+
private static final long serialVersionUID = -8053613683499632227L;
18+
19+
/**
20+
* 多聊群下返回的群唯一标识.
21+
*/
22+
@SerializedName("opengid")
23+
private String openGId;
24+
25+
/**
26+
* 单聊群下返回的群唯一标识.
27+
*/
28+
@SerializedName("open_single_roomid")
29+
private String openSingleRoomid;
30+
31+
/**
32+
* 用户在当前群的唯一标识.
33+
*/
34+
@SerializedName("group_openid")
35+
private String groupOpenid;
36+
37+
/**
38+
* 聊天室类型.
39+
*/
40+
@SerializedName("chat_type")
41+
private Integer chatType;
42+
43+
public static WxMaGroupEnterInfo fromJson(String json) {
44+
return WxMaGsonBuilder.create().fromJson(json, WxMaGroupEnterInfo.class);
45+
}
46+
}

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package cn.binarywang.wx.miniapp.api.impl;
22

33
import cn.binarywang.wx.miniapp.api.WxMaService;
4+
import cn.binarywang.wx.miniapp.bean.WxMaGroupEnterInfo;
45
import cn.binarywang.wx.miniapp.bean.WxMaShareInfo;
56
import cn.binarywang.wx.miniapp.test.ApiTestModule;
67
import com.google.inject.Inject;
@@ -37,4 +38,16 @@ public void testGetShareInfo() {
3738
assertNotNull(shareInfo);
3839
System.out.println(shareInfo.toString());
3940
}
41+
42+
/**
43+
* TODO 测试数据有问题,需要替换为正确的数据
44+
*/
45+
@Test
46+
public void testGetGroupEnterInfo() {
47+
WxMaGroupEnterInfo groupEnterInfo = this.wxService.getShareService().getGroupEnterInfo("tiihtNczf5v6AKRyjwEUhQ==",
48+
"CiyLU1Aw2KjvrjMdj8YKliAjtP4gsMZMQmRzooG2xrDcvSnxIMXFufNstNGTyaGS9uT5geRa0W4oTOb1WT7fJlAC+oNPdbB+3hVbJSRgv+4lGOETKUQz6OYStslQ142dNCuabNPGBzlooOmB231qMM85d2/fV6ChevvXvQP8Hkue1poOFtnEtpyxVLW1zAo6/1Xx1COxFvrc2d7UL/lmHInNlxuacJXwu0fjpXfz/YqYzBIBzD6WUfTIF9GRHpOn/Hz7saL8xz+W//FRAUid1OksQaQx4CMs8LOddcQhULW4ucetDf96JcR3g0gfRK4PC7E/r7Z6xNrXd2UIeorGj5Ef7b1pJAYB6Y5anaHqZ9J6nKEBvB4DnNLIVWSgARns/8wR2SiRS7MNACwTyrGvt9ts8p12PKFdlqYTopNHR1Vf7XjfhQlVsAJdNiKdYmYVoKlaRv85IfVunYzO0IKXsyl7JCUjCpoG20f0a04COwfneQAGGwd5oa+T8yO5hzuyDb/XcxxmK01EpqOyuxINew==",
49+
"r7BXXKkLb8qrSNn05n0qiA==");
50+
assertNotNull(groupEnterInfo);
51+
System.out.println(groupEnterInfo.toString());
52+
}
4053
}

0 commit comments

Comments
 (0)