From 36028b8d5b17c76ecd8d482d545658aba7e6c06a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B2=B8=E7=82=B9108?= <75881401@qq.com> Date: Sun, 26 Mar 2023 21:57:01 +0800 Subject: [PATCH] =?UTF-8?q?:new:=20#2962=20=E3=80=90=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E3=80=91=20=E5=A2=9E=E5=8A=A0=E6=9E=84?= =?UTF-8?q?=E9=80=A0=E7=AC=AC=E4=B8=89=E6=96=B9=E5=BA=94=E7=94=A8oauth2?= =?UTF-8?q?=E9=93=BE=E6=8E=A5=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cp/bean/message/WxCpTpXmlMessage.java | 18 ++++++++++ .../cp/tp/service/WxCpTpOAuth2Service.java | 34 ++++++++++++++++++ .../weixin/cp/tp/service/WxCpTpService.java | 7 ++++ .../service/impl/BaseWxCpTpServiceImpl.java | 10 +++++- .../service/impl/WxCpTpOAuth2ServiceImpl.java | 35 +++++++++++++++++++ 5 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/WxCpTpOAuth2Service.java create mode 100644 weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/impl/WxCpTpOAuth2ServiceImpl.java diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/message/WxCpTpXmlMessage.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/message/WxCpTpXmlMessage.java index a3b68c234..7fe4dacef 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/message/WxCpTpXmlMessage.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/message/WxCpTpXmlMessage.java @@ -9,6 +9,8 @@ import me.chanjar.weixin.common.util.XmlUtils; import me.chanjar.weixin.common.util.xml.IntegerArrayConverter; import me.chanjar.weixin.common.util.xml.StringArrayConverter; import me.chanjar.weixin.common.util.xml.XStreamCDataConverter; +import me.chanjar.weixin.cp.config.WxCpTpConfigStorage; +import me.chanjar.weixin.cp.util.crypto.WxCpTpCryptUtil; import me.chanjar.weixin.cp.util.xml.XStreamTransformer; import java.io.Serializable; @@ -774,4 +776,20 @@ public class WxCpTpXmlMessage implements Serializable { return xmlPackage; } + /** + * + * @param encryptedXml the encrypted xml + * @param wxCpTpConfigStorage the wx cp config storage + * @param timestamp the timestamp + * @param nonce the nonce + * @param msgSignature the msg signature + * @return the wx cp tp xml message + */ + public static WxCpTpXmlMessage fromEncryptedXml(String encryptedXml, WxCpTpConfigStorage wxCpTpConfigStorage, + String timestamp, String nonce, String msgSignature) { + WxCpTpCryptUtil cryptUtil = new WxCpTpCryptUtil(wxCpTpConfigStorage); + String plainText = cryptUtil.decrypt(msgSignature, timestamp, nonce, encryptedXml); + log.debug("解密后的原始xml消息内容:{}", plainText); + return fromXml(plainText); + } } diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/WxCpTpOAuth2Service.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/WxCpTpOAuth2Service.java new file mode 100644 index 000000000..0746feea2 --- /dev/null +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/WxCpTpOAuth2Service.java @@ -0,0 +1,34 @@ +package me.chanjar.weixin.cp.tp.service; + +/** + *
+ * 构造第三方应用oauth2链接 + * Created by feidian108 on 2023/3/24. + *+ *
+ * 企业微信服务商文档 + */ +public interface WxCpTpOAuth2Service { + + /** + *
+ * 构造第三方应用oauth2链接(静默授权) + *+ * @param redirectUri 授权后重定向的回调链接地址 + * @param state 重定向后state参数 + * @return url string + */ + String buildAuthorizeUrl(String redirectUri, String state); + + + /** + *
+ * 构造第三方应用oauth2链接 + *+ * @param redirectUri 授权后重定向的回调链接地址 + * @param state 重定向后state参数 + * @param scope 应用授权作用域,snsapi_base:静默授权,snsapi_privateinfo:手动授权 + * @return url string + */ + String buildAuthorizeUrl(String redirectUri, String state, String scope); +} diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/WxCpTpService.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/WxCpTpService.java index f86426876..5dbcd8b29 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/WxCpTpService.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/WxCpTpService.java @@ -631,4 +631,11 @@ public interface WxCpTpService { void setWxCpTpIdConverService(WxCpTpIdConvertService wxCpTpIdConvertService); + /** + * 构造第三方应用oauth2链接 + */ + WxCpTpOAuth2Service getWxCpTpOAuth2Service(); + + void setWxCpTpOAuth2Service(WxCpTpOAuth2Service wxCpTpOAuth2Service); + } diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/impl/BaseWxCpTpServiceImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/impl/BaseWxCpTpServiceImpl.java index 06f919aa6..68ac59bb2 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/impl/BaseWxCpTpServiceImpl.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/impl/BaseWxCpTpServiceImpl.java @@ -56,7 +56,7 @@ public abstract class BaseWxCpTpServiceImpl