1
0
mirror of synced 2025-12-17 04:43:15 +08:00

🆕 #3736 【小程序】增加解密群入口敏感数据的方法

This commit is contained in:
Copilot
2025-11-17 12:01:15 +08:00
committed by GitHub
parent 1922aaaa94
commit 833f60c68d
4 changed files with 78 additions and 0 deletions

View File

@@ -1,5 +1,6 @@
package cn.binarywang.wx.miniapp.api;
import cn.binarywang.wx.miniapp.bean.WxMaGroupEnterInfo;
import cn.binarywang.wx.miniapp.bean.WxMaShareInfo;
/**
@@ -18,4 +19,16 @@ public interface WxMaShareService {
*/
WxMaShareInfo getShareInfo(String sessionKey, String encryptedData, String ivStr);
/**
* 解密群入口敏感数据.
* 对应 wx.getGroupEnterInfo 接口返回的 encryptedData 解密
*
* @param sessionKey 会话密钥
* @param encryptedData 消息密文
* @param ivStr 加密算法的初始向量
* @return 群入口信息
* @see <a href="https://developers.weixin.qq.com/miniprogram/dev/api/open-api/group/wx.getGroupEnterInfo.html">wx.getGroupEnterInfo 官方文档</a>
*/
WxMaGroupEnterInfo getGroupEnterInfo(String sessionKey, String encryptedData, String ivStr);
}

View File

@@ -2,6 +2,7 @@ package cn.binarywang.wx.miniapp.api.impl;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.WxMaShareService;
import cn.binarywang.wx.miniapp.bean.WxMaGroupEnterInfo;
import cn.binarywang.wx.miniapp.bean.WxMaShareInfo;
import cn.binarywang.wx.miniapp.util.crypt.WxMaCryptUtils;
import lombok.RequiredArgsConstructor;
@@ -18,4 +19,9 @@ public class WxMaShareServiceImpl implements WxMaShareService {
return WxMaShareInfo.fromJson(WxMaCryptUtils.decrypt(sessionKey, encryptedData, ivStr));
}
@Override
public WxMaGroupEnterInfo getGroupEnterInfo(String sessionKey, String encryptedData, String ivStr) {
return WxMaGroupEnterInfo.fromJson(WxMaCryptUtils.decrypt(sessionKey, encryptedData, ivStr));
}
}

View File

@@ -0,0 +1,46 @@
package cn.binarywang.wx.miniapp.bean;
import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import java.io.Serializable;
/**
* 微信小程序群入口信息.
* 对应 wx.getGroupEnterInfo 接口返回的解密数据
*
* @see <a href="https://developers.weixin.qq.com/miniprogram/dev/api/open-api/group/wx.getGroupEnterInfo.html">wx.getGroupEnterInfo 官方文档</a>
*/
@Data
public class WxMaGroupEnterInfo implements Serializable {
private static final long serialVersionUID = -8053613683499632227L;
/**
* 多聊群下返回的群唯一标识.
*/
@SerializedName("opengid")
private String openGId;
/**
* 单聊群下返回的群唯一标识.
*/
@SerializedName("open_single_roomid")
private String openSingleRoomid;
/**
* 用户在当前群的唯一标识.
*/
@SerializedName("group_openid")
private String groupOpenid;
/**
* 聊天室类型.
*/
@SerializedName("chat_type")
private Integer chatType;
public static WxMaGroupEnterInfo fromJson(String json) {
return WxMaGsonBuilder.create().fromJson(json, WxMaGroupEnterInfo.class);
}
}

View File

@@ -1,6 +1,7 @@
package cn.binarywang.wx.miniapp.api.impl;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaGroupEnterInfo;
import cn.binarywang.wx.miniapp.bean.WxMaShareInfo;
import cn.binarywang.wx.miniapp.test.ApiTestModule;
import com.google.inject.Inject;
@@ -37,4 +38,16 @@ public class WxMaShareServiceImplTest {
assertNotNull(shareInfo);
System.out.println(shareInfo.toString());
}
/**
* TODO 测试数据有问题,需要替换为正确的数据
*/
@Test
public void testGetGroupEnterInfo() {
WxMaGroupEnterInfo groupEnterInfo = this.wxService.getShareService().getGroupEnterInfo("tiihtNczf5v6AKRyjwEUhQ==",
"CiyLU1Aw2KjvrjMdj8YKliAjtP4gsMZMQmRzooG2xrDcvSnxIMXFufNstNGTyaGS9uT5geRa0W4oTOb1WT7fJlAC+oNPdbB+3hVbJSRgv+4lGOETKUQz6OYStslQ142dNCuabNPGBzlooOmB231qMM85d2/fV6ChevvXvQP8Hkue1poOFtnEtpyxVLW1zAo6/1Xx1COxFvrc2d7UL/lmHInNlxuacJXwu0fjpXfz/YqYzBIBzD6WUfTIF9GRHpOn/Hz7saL8xz+W//FRAUid1OksQaQx4CMs8LOddcQhULW4ucetDf96JcR3g0gfRK4PC7E/r7Z6xNrXd2UIeorGj5Ef7b1pJAYB6Y5anaHqZ9J6nKEBvB4DnNLIVWSgARns/8wR2SiRS7MNACwTyrGvt9ts8p12PKFdlqYTopNHR1Vf7XjfhQlVsAJdNiKdYmYVoKlaRv85IfVunYzO0IKXsyl7JCUjCpoG20f0a04COwfneQAGGwd5oa+T8yO5hzuyDb/XcxxmK01EpqOyuxINew==",
"r7BXXKkLb8qrSNn05n0qiA==");
assertNotNull(groupEnterInfo);
System.out.println(groupEnterInfo.toString());
}
}