From d27a9221c3be19877ab64fba9dbf0229680223bb Mon Sep 17 00:00:00 2001 From: tarzanwang Date: Fri, 1 May 2026 17:06:25 +0700 Subject: [PATCH 01/38] =?UTF-8?q?:art:=20#3973=20=E3=80=90=E4=BC=81?= =?UTF-8?q?=E4=B8=9A=E5=BE=AE=E4=BF=A1=E3=80=91=E4=BF=AE=E5=A4=8DOA=20?= =?UTF-8?q?=E5=AE=A1=E6=89=B9=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3=E4=B8=AD?= =?UTF-8?q?=20PhoneNumber=20=E6=8E=A7=E4=BB=B6=E5=80=BC=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E8=A2=AB=20Gson=20=E5=8F=8D=E5=BA=8F=E5=88=97=E5=8C=96?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../weixin/cp/bean/oa/applydata/ContentValue.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/oa/applydata/ContentValue.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/oa/applydata/ContentValue.java index 848e377791..db1f412fa1 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/oa/applydata/ContentValue.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/oa/applydata/ContentValue.java @@ -61,6 +61,20 @@ public class ContentValue implements Serializable { @SerializedName("bank_account") private BankAccount bankAccount; + @SerializedName("phonenumber") + private PhoneNumber phonenumber; + + /** + * Phone number control value: {@code value.phonenumber = { area, number }}. + * e.g. area="+62", number="87827717730" + */ + @Data + public static class PhoneNumber implements Serializable { + private static final long serialVersionUID = 1L; + private String area; + private String number; + } + /** * The type Date. */ From 56fd7bec1cfc38c650558c970b5aa0971fc932b4 Mon Sep 17 00:00:00 2001 From: buaazyl Date: Thu, 7 May 2026 13:43:20 +0800 Subject: [PATCH 02/38] =?UTF-8?q?:art:=20#3976=20=E3=80=90=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E6=94=AF=E4=BB=98=E3=80=91v3=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E8=B5=B0=E5=85=AC=E9=92=A5=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E7=BB=9F=E4=B8=80=E6=90=BA=E5=B8=A6=20Wechat?= =?UTF-8?q?pay-Serial=20=E8=AF=B7=E6=B1=82=E5=A4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wxjava/pay/config/WxPayAutoConfiguration.java | 2 +- .../solon/wxjava/pay/properties/WxPayProperties.java | 10 +++++----- .../wx-java-pay-multi-spring-boot-starter/README.md | 12 ++++++------ .../wxjava/pay/properties/WxPaySingleProperties.java | 10 +++++----- .../wxjava/pay/service/WxPayMultiServicesImpl.java | 2 +- .../starter/wxjava/pay/WxPayMultiServicesTest.java | 2 +- .../wxjava/pay/config/WxPayAutoConfiguration.java | 2 +- .../wxjava/pay/properties/WxPayProperties.java | 10 +++++----- .../github/binarywang/wxpay/config/WxPayConfig.java | 8 ++++---- 9 files changed, 29 insertions(+), 29 deletions(-) diff --git a/solon-plugins/wx-java-pay-solon-plugin/src/main/java/com/binarywang/solon/wxjava/pay/config/WxPayAutoConfiguration.java b/solon-plugins/wx-java-pay-solon-plugin/src/main/java/com/binarywang/solon/wxjava/pay/config/WxPayAutoConfiguration.java index 3ef7456daa..4043c19e13 100644 --- a/solon-plugins/wx-java-pay-solon-plugin/src/main/java/com/binarywang/solon/wxjava/pay/config/WxPayAutoConfiguration.java +++ b/solon-plugins/wx-java-pay-solon-plugin/src/main/java/com/binarywang/solon/wxjava/pay/config/WxPayAutoConfiguration.java @@ -55,7 +55,7 @@ public WxPayService wxPayService() { payConfig.setPrivateKeyPath(StringUtils.trimToNull(this.properties.getPrivateKeyPath())); payConfig.setPrivateCertPath(StringUtils.trimToNull(this.properties.getPrivateCertPath())); payConfig.setCertSerialNo(StringUtils.trimToNull(this.properties.getCertSerialNo())); - payConfig.setApiV3Key(StringUtils.trimToNull(this.properties.getApiv3Key())); + payConfig.setApiV3Key(StringUtils.trimToNull(this.properties.getApiV3Key())); payConfig.setPublicKeyId(StringUtils.trimToNull(this.properties.getPublicKeyId())); payConfig.setPublicKeyPath(StringUtils.trimToNull(this.properties.getPublicKeyPath())); payConfig.setApiHostUrl(StringUtils.trimToNull(this.properties.getApiHostUrl())); diff --git a/solon-plugins/wx-java-pay-solon-plugin/src/main/java/com/binarywang/solon/wxjava/pay/properties/WxPayProperties.java b/solon-plugins/wx-java-pay-solon-plugin/src/main/java/com/binarywang/solon/wxjava/pay/properties/WxPayProperties.java index d394fefbd1..df202a5b84 100644 --- a/solon-plugins/wx-java-pay-solon-plugin/src/main/java/com/binarywang/solon/wxjava/pay/properties/WxPayProperties.java +++ b/solon-plugins/wx-java-pay-solon-plugin/src/main/java/com/binarywang/solon/wxjava/pay/properties/WxPayProperties.java @@ -59,7 +59,7 @@ public class WxPayProperties { /** * apiV3秘钥 */ - private String apiv3Key; + private String apiV3Key; /** * 微信支付分回调地址 @@ -114,13 +114,13 @@ public class WxPayProperties { private String apiHostUrl; /** - * 是否将全部v3接口的请求都添加Wechatpay-Serial请求头,默认不添加 + * 是否将全部v3接口的请求都添加Wechatpay-Serial请求头,默认添加 */ - private boolean strictlyNeedWechatPaySerial = false; + private boolean strictlyNeedWechatPaySerial = true; /** - * 是否完全使用公钥模式(用以微信从平台证书到公钥的灰度切换),默认不使用 + * 是否完全使用公钥模式(用以微信从平台证书到公钥的灰度切换),默认使用 */ - private boolean fullPublicKeyModel = false; + private boolean fullPublicKeyModel = true; } diff --git a/spring-boot-starters/wx-java-pay-multi-spring-boot-starter/README.md b/spring-boot-starters/wx-java-pay-multi-spring-boot-starter/README.md index d8d41b7de8..1af617aab8 100644 --- a/spring-boot-starters/wx-java-pay-multi-spring-boot-starter/README.md +++ b/spring-boot-starters/wx-java-pay-multi-spring-boot-starter/README.md @@ -104,7 +104,7 @@ wx: # 公众号1配置 wx.pay.configs.wx1234567890abcdef.app-id=wx1234567890abcdef wx.pay.configs.wx1234567890abcdef.mch-id=1234567890 -wx.pay.configs.wx1234567890abcdef.apiv3-key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +wx.pay.configs.wx1234567890abcdef.api-v3-key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx wx.pay.configs.wx1234567890abcdef.cert-serial-no=62C6CEAA360BCxxxxxxxxxxxxxxx wx.pay.configs.wx1234567890abcdef.private-key-path=classpath:cert/app1/apiclient_key.pem wx.pay.configs.wx1234567890abcdef.private-cert-path=classpath:cert/app1/apiclient_cert.pem @@ -113,7 +113,7 @@ wx.pay.configs.wx1234567890abcdef.notify-url=https://example.com/pay/notify # 公众号2配置 wx.pay.configs.wx9876543210fedcba.app-id=wx9876543210fedcba wx.pay.configs.wx9876543210fedcba.mch-id=9876543210 -wx.pay.configs.wx9876543210fedcba.apiv3-key=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy +wx.pay.configs.wx9876543210fedcba.api-v3-key=yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy wx.pay.configs.wx9876543210fedcba.cert-serial-no=73D7DFBB471CDxxxxxxxxxxxxxxx wx.pay.configs.wx9876543210fedcba.private-key-path=classpath:cert/app2/apiclient_key.pem wx.pay.configs.wx9876543210fedcba.private-cert-path=classpath:cert/app2/apiclient_cert.pem @@ -255,8 +255,8 @@ public class PayService { | payScorePermissionNotifyUrl | 支付分授权回调地址 | 无 | | useSandboxEnv | 是否使用沙箱环境 | false | | apiHostUrl | 自定义API主机地址 | https://api.mch.weixin.qq.com | -| strictlyNeedWechatPaySerial | 是否所有V3请求都添加序列号头 | false | -| fullPublicKeyModel | 是否完全使用公钥模式 | false | +| strictlyNeedWechatPaySerial | 是否所有V3请求都添加序列号头 | true | +| fullPublicKeyModel | 是否完全使用公钥模式 | true | | publicKeyId | 公钥ID | 无 | | publicKeyPath | 公钥文件路径 | 无 | @@ -312,5 +312,5 @@ wx: ## 更多信息 - [WxJava 项目首页](https://github.com/Wechat-Group/WxJava) -- [微信支付官方文档](https://pay.weixin.qq.com/wiki/doc/api/) -- [微信支付V3接口文档](https://pay.weixin.qq.com/wiki/doc/apiv3/index.shtml) +- [微信支付V2文档](https://pay.weixin.qq.com/doc/v2) +- [微信支付V3接口文档](https://pay.weixin.qq.com/doc/v3/merchant/4012062524) diff --git a/spring-boot-starters/wx-java-pay-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/properties/WxPaySingleProperties.java b/spring-boot-starters/wx-java-pay-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/properties/WxPaySingleProperties.java index a5cda55fb0..93cdc9dd8f 100644 --- a/spring-boot-starters/wx-java-pay-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/properties/WxPaySingleProperties.java +++ b/spring-boot-starters/wx-java-pay-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/properties/WxPaySingleProperties.java @@ -58,7 +58,7 @@ public class WxPaySingleProperties implements Serializable { /** * apiV3秘钥. */ - private String apiv3Key; + private String apiV3Key; /** * 微信支付异步回调地址,通知url必须为直接可访问的url,不能携带参数. @@ -113,12 +113,12 @@ public class WxPaySingleProperties implements Serializable { private String apiHostUrl; /** - * 是否将全部v3接口的请求都添加Wechatpay-Serial请求头,默认不添加. + * 是否将全部v3接口的请求都添加Wechatpay-Serial请求头,默认添加. */ - private boolean strictlyNeedWechatPaySerial = false; + private boolean strictlyNeedWechatPaySerial = true; /** - * 是否完全使用公钥模式(用以微信从平台证书到公钥的灰度切换),默认不使用. + * 是否完全使用公钥模式(用以微信从平台证书到公钥的灰度切换),默认使用. */ - private boolean fullPublicKeyModel = false; + private boolean fullPublicKeyModel = true; } diff --git a/spring-boot-starters/wx-java-pay-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/service/WxPayMultiServicesImpl.java b/spring-boot-starters/wx-java-pay-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/service/WxPayMultiServicesImpl.java index 459fe3b6c0..68f36ccb46 100644 --- a/spring-boot-starters/wx-java-pay-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/service/WxPayMultiServicesImpl.java +++ b/spring-boot-starters/wx-java-pay-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/service/WxPayMultiServicesImpl.java @@ -79,7 +79,7 @@ private WxPayService buildWxPayService(WxPaySingleProperties properties) { payConfig.setPrivateKeyPath(StringUtils.trimToNull(properties.getPrivateKeyPath())); payConfig.setPrivateCertPath(StringUtils.trimToNull(properties.getPrivateCertPath())); payConfig.setCertSerialNo(StringUtils.trimToNull(properties.getCertSerialNo())); - payConfig.setApiV3Key(StringUtils.trimToNull(properties.getApiv3Key())); + payConfig.setApiV3Key(StringUtils.trimToNull(properties.getApiV3Key())); payConfig.setPublicKeyId(StringUtils.trimToNull(properties.getPublicKeyId())); payConfig.setPublicKeyPath(StringUtils.trimToNull(properties.getPublicKeyPath())); payConfig.setApiHostUrl(StringUtils.trimToNull(properties.getApiHostUrl())); diff --git a/spring-boot-starters/wx-java-pay-multi-spring-boot-starter/src/test/java/com/binarywang/spring/starter/wxjava/pay/WxPayMultiServicesTest.java b/spring-boot-starters/wx-java-pay-multi-spring-boot-starter/src/test/java/com/binarywang/spring/starter/wxjava/pay/WxPayMultiServicesTest.java index 25a091da02..a64822efd8 100644 --- a/spring-boot-starters/wx-java-pay-multi-spring-boot-starter/src/test/java/com/binarywang/spring/starter/wxjava/pay/WxPayMultiServicesTest.java +++ b/spring-boot-starters/wx-java-pay-multi-spring-boot-starter/src/test/java/com/binarywang/spring/starter/wxjava/pay/WxPayMultiServicesTest.java @@ -57,7 +57,7 @@ public void testConfiguration() { assertNotNull(app2Config, "app2 configuration should exist"); assertEquals("wx2222222222222222", app2Config.getAppId()); assertEquals("2222222222", app2Config.getMchId()); - assertEquals("22222222222222222222222222222222", app2Config.getApiv3Key()); + assertEquals("22222222222222222222222222222222", app2Config.getApiV3Key()); } @Test diff --git a/spring-boot-starters/wx-java-pay-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/config/WxPayAutoConfiguration.java b/spring-boot-starters/wx-java-pay-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/config/WxPayAutoConfiguration.java index 758fd929a1..0256aec990 100644 --- a/spring-boot-starters/wx-java-pay-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/config/WxPayAutoConfiguration.java +++ b/spring-boot-starters/wx-java-pay-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/config/WxPayAutoConfiguration.java @@ -59,7 +59,7 @@ public WxPayService wxPayService() { payConfig.setPrivateKeyPath(StringUtils.trimToNull(this.properties.getPrivateKeyPath())); payConfig.setPrivateCertPath(StringUtils.trimToNull(this.properties.getPrivateCertPath())); payConfig.setCertSerialNo(StringUtils.trimToNull(this.properties.getCertSerialNo())); - payConfig.setApiV3Key(StringUtils.trimToNull(this.properties.getApiv3Key())); + payConfig.setApiV3Key(StringUtils.trimToNull(this.properties.getApiV3Key())); payConfig.setPublicKeyId(StringUtils.trimToNull(this.properties.getPublicKeyId())); payConfig.setPublicKeyPath(StringUtils.trimToNull(this.properties.getPublicKeyPath())); payConfig.setApiHostUrl(StringUtils.trimToNull(this.properties.getApiHostUrl())); diff --git a/spring-boot-starters/wx-java-pay-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/properties/WxPayProperties.java b/spring-boot-starters/wx-java-pay-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/properties/WxPayProperties.java index 25f7d7c02e..a7308bd6ea 100644 --- a/spring-boot-starters/wx-java-pay-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/properties/WxPayProperties.java +++ b/spring-boot-starters/wx-java-pay-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/properties/WxPayProperties.java @@ -57,7 +57,7 @@ public class WxPayProperties { /** * apiV3秘钥 */ - private String apiv3Key; + private String apiV3Key; /** * 微信支付异步回调地址,通知url必须为直接可访问的url,不能携带参数 @@ -112,13 +112,13 @@ public class WxPayProperties { private String apiHostUrl; /** - * 是否将全部v3接口的请求都添加Wechatpay-Serial请求头,默认不添加 + * 是否将全部v3接口的请求都添加Wechatpay-Serial请求头,默认添加 */ - private boolean strictlyNeedWechatPaySerial = false; + private boolean strictlyNeedWechatPaySerial = true; /** - * 是否完全使用公钥模式(用以微信从平台证书到公钥的灰度切换),默认不使用 + * 是否完全使用公钥模式(用以微信从平台证书到公钥的灰度切换),默认使用 */ - private boolean fullPublicKeyModel = false; + private boolean fullPublicKeyModel = true; } diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java index 1e0e8d2c46..bb9d6f7a12 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java @@ -270,14 +270,14 @@ public class WxPayConfig { private Verifier verifier; /** - * 是否将全部v3接口的请求都添加Wechatpay-Serial请求头,默认不添加 + * 是否将全部v3接口的请求都添加Wechatpay-Serial请求头,默认添加 */ - private boolean strictlyNeedWechatPaySerial = false; + private boolean strictlyNeedWechatPaySerial = true; /** - * 是否完全使用公钥模式(用以微信从平台证书到公钥的灰度切换),默认不使用 + * 是否完全使用公钥模式(用以微信从平台证书到公钥的灰度切换),默认使用 */ - private boolean fullPublicKeyModel = false; + private boolean fullPublicKeyModel = true; /** * 返回所设置的微信支付接口请求地址域名. From 63e8291248f284288c99b2b1ac9a82601cbc2b2c Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Fri, 8 May 2026 19:30:00 +0800 Subject: [PATCH 03/38] =?UTF-8?q?:new:=20#3975=20=E6=96=B0=E5=A2=9E=20wx-j?= =?UTF-8?q?ava-bom=20=E6=A8=A1=E5=9D=97=EF=BC=8C=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E7=AE=A1=E7=90=86=20WxJava=20=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 38 +++++++++ pom.xml | 1 + wx-java-bom/pom.xml | 197 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 236 insertions(+) create mode 100644 wx-java-bom/pom.xml diff --git a/README.md b/README.md index 94c52d7e07..ad3e59ace7 100644 --- a/README.md +++ b/README.md @@ -120,6 +120,44 @@ ### Maven 引用方式 注意:最新版本(包括测试版)为 [![Maven Central](https://img.shields.io/maven-central/v/com.github.binarywang/wx-java.svg)](https://central.sonatype.com/artifact/com.github.binarywang/wx-java/versions),以下为最新正式版。 +#### 方式一:使用 BOM 统一管理版本(推荐) + +如果同时使用多个 WxJava 模块,推荐通过 BOM 统一管理版本,无需为每个模块单独指定版本号。 +`wx-java-bom` 从 **4.8.3.B** 版本开始提供,请使用该版本或更高版本: + +```xml + + 4.8.3.B + + + + + + com.github.binarywang + wx-java-bom + ${wx-java.version} + pom + import + + + +``` + +之后直接引入所需模块,无需指定版本: + +```xml + + com.github.binarywang + weixin-java-mp + + + com.github.binarywang + weixin-java-pay + +``` + +#### 方式二:直接引用单个模块 + ```xml com.github.binarywang diff --git a/pom.xml b/pom.xml index f3be565062..3f4fc56610 100644 --- a/pom.xml +++ b/pom.xml @@ -127,6 +127,7 @@ weixin-java-channel spring-boot-starters solon-plugins + wx-java-bom diff --git a/wx-java-bom/pom.xml b/wx-java-bom/pom.xml new file mode 100644 index 0000000000..793d4e09ea --- /dev/null +++ b/wx-java-bom/pom.xml @@ -0,0 +1,197 @@ + + + 4.0.0 + + com.github.binarywang + wx-java + 4.8.2.B + + + wx-java-bom + pom + WxJava - BOM + WxJava 依赖管理 BOM(Bill of Materials),用于统一管理 WxJava 各模块的版本 + + + + + + com.github.binarywang + weixin-graal + ${project.version} + + + com.github.binarywang + weixin-java-common + ${project.version} + + + com.github.binarywang + weixin-java-mp + ${project.version} + + + com.github.binarywang + weixin-java-pay + ${project.version} + + + com.github.binarywang + weixin-java-miniapp + ${project.version} + + + com.github.binarywang + weixin-java-open + ${project.version} + + + com.github.binarywang + weixin-java-cp + ${project.version} + + + com.github.binarywang + weixin-java-channel + ${project.version} + + + com.github.binarywang + weixin-java-qidian + ${project.version} + + + + + com.github.binarywang + wx-java-mp-spring-boot-starter + ${project.version} + + + com.github.binarywang + wx-java-mp-multi-spring-boot-starter + ${project.version} + + + com.github.binarywang + wx-java-pay-spring-boot-starter + ${project.version} + + + com.github.binarywang + wx-java-pay-multi-spring-boot-starter + ${project.version} + + + com.github.binarywang + wx-java-miniapp-spring-boot-starter + ${project.version} + + + com.github.binarywang + wx-java-miniapp-multi-spring-boot-starter + ${project.version} + + + com.github.binarywang + wx-java-open-spring-boot-starter + ${project.version} + + + com.github.binarywang + wx-java-open-multi-spring-boot-starter + ${project.version} + + + com.github.binarywang + wx-java-cp-spring-boot-starter + ${project.version} + + + com.github.binarywang + wx-java-cp-multi-spring-boot-starter + ${project.version} + + + com.github.binarywang + wx-java-cp-tp-multi-spring-boot-starter + ${project.version} + + + com.github.binarywang + wx-java-channel-spring-boot-starter + ${project.version} + + + com.github.binarywang + wx-java-channel-multi-spring-boot-starter + ${project.version} + + + com.github.binarywang + wx-java-qidian-spring-boot-starter + ${project.version} + + + + + com.github.binarywang + wx-java-mp-solon-plugin + ${project.version} + + + com.github.binarywang + wx-java-mp-multi-solon-plugin + ${project.version} + + + com.github.binarywang + wx-java-pay-solon-plugin + ${project.version} + + + com.github.binarywang + wx-java-miniapp-solon-plugin + ${project.version} + + + com.github.binarywang + wx-java-miniapp-multi-solon-plugin + ${project.version} + + + com.github.binarywang + wx-java-open-solon-plugin + ${project.version} + + + com.github.binarywang + wx-java-cp-solon-plugin + ${project.version} + + + com.github.binarywang + wx-java-cp-multi-solon-plugin + ${project.version} + + + com.github.binarywang + wx-java-channel-solon-plugin + ${project.version} + + + com.github.binarywang + wx-java-channel-multi-solon-plugin + ${project.version} + + + com.github.binarywang + wx-java-qidian-solon-plugin + ${project.version} + + + + + From 7a4204a6c2baa4afd093854d3f81369b4b29fb3a Mon Sep 17 00:00:00 2001 From: softboy99 Date: Sat, 9 May 2026 10:22:10 +0800 Subject: [PATCH 04/38] =?UTF-8?q?:art:=20#3977=20=E3=80=90=E4=BC=81?= =?UTF-8?q?=E4=B8=9A=E5=BE=AE=E4=BF=A1=E3=80=91=E4=BF=AE=E5=A4=8D=E3=80=8C?= =?UTF-8?q?=E4=BA=BA=E4=BA=8B=E5=8A=A9=E6=89=8B=E3=80=8D=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E5=9C=A8=E5=93=8D=E5=BA=94=E5=8F=8D=E5=BA=8F?= =?UTF-8?q?=E5=88=97=E5=8C=96=E6=97=B6=E5=AD=97=E6=AE=B5=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E4=B8=8E=E5=AE=9E=E9=99=85=20API=20=E8=BF=94=E5=9B=9E=E4=B8=8D?= =?UTF-8?q?=E4=B8=80=E8=87=B4=E5=AF=BC=E8=87=B4=E7=9A=84=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- weixin-java-cp/pom.xml | 9 ++ .../cp/bean/hr/WxCpHrEmployeeFieldData.java | 104 +++++++++++++-- .../bean/hr/WxCpHrEmployeeFieldDataResp.java | 24 +++- .../cp/bean/hr/WxCpHrEmployeeFieldInfo.java | 114 ++++++++++++++--- .../bean/hr/WxCpHrEmployeeFieldInfoResp.java | 53 +++++++- .../cp/api/impl/WxCpHrServiceImplTest.java | 121 ++++++++++++++++-- weixin-java-cp/src/test/resources/testng.xml | 1 + 7 files changed, 380 insertions(+), 46 deletions(-) diff --git a/weixin-java-cp/pom.xml b/weixin-java-cp/pom.xml index 4d5d172ed2..a75b7b034e 100644 --- a/weixin-java-cp/pom.xml +++ b/weixin-java-cp/pom.xml @@ -125,6 +125,15 @@ src/test/resources/testng.xml + + --add-opens java.base/java.lang=ALL-UNNAMED + --add-opens java.base/java.lang.reflect=ALL-UNNAMED + --add-opens java.base/java.io=ALL-UNNAMED + --add-opens java.base/java.security=ALL-UNNAMED + --add-opens java.base/java.util=ALL-UNNAMED + --add-opens java.management/javax.management=ALL-UNNAMED + --add-opens java.naming/javax.naming=ALL-UNNAMED + diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldData.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldData.java index 971e5958d1..bb4d3a60ae 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldData.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldData.java @@ -5,10 +5,9 @@ import lombok.NoArgsConstructor; import java.io.Serializable; -import java.util.List; /** - * 人事助手-员工档案数据(单个员工). + * 人事助手-员工档案数据(单个字段). * * @author leejoker created on 2024-01-01 */ @@ -18,19 +17,98 @@ public class WxCpHrEmployeeFieldData implements Serializable { private static final long serialVersionUID = 4593693598671765396L; /** - * 员工userid. + * 字段ID. */ + @SerializedName("fieldid") + private Integer fieldId; + + /** + * 子字段索引. + */ + @SerializedName("sub_idx") + private Integer subIdx; + + /** + * 结果状态,1表示成功. + */ + @SerializedName("result") + private Integer result; + + /** + * 值类型:1-字符串,2-uint64,3-uint32,4-int64,5-mobile. + */ + @SerializedName("value_type") + private Integer valueType; + + /** + * 字符串值(value_type=1时使用). + */ + @SerializedName("value_string") + private String valueString; + + /** + * 无符号32位整数值(value_type=3时使用). + */ + @SerializedName("value_uint32") + private Long valueUint32; + + /** + * 有符号64位整数值(value_type=4时使用). + */ + @SerializedName("value_int64") + private Long valueInt64; + + /** + * 无符号64位整数值(value_type=2时使用). + */ + @SerializedName("value_uint64") + private Long valueUint64; + + /** + * 手机号值(value_type=5时使用). + */ + @SerializedName("value_mobile") + private MobileValue valueMobile; + + /** + * 手机号值. + */ + @Data + @NoArgsConstructor + public static class MobileValue implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 国家代码. + */ + @SerializedName("value_country_code") + private String valueCountryCode; + + /** + * 手机号. + */ + @SerializedName("value_mobile") + private String valueMobile; + } + + /** + * 员工userid(兼容旧版本,实际API不返回此字段). + * @deprecated 此字段在API响应中不存在 + */ + @Deprecated @SerializedName("userid") private String userid; /** - * 字段数据列表. + * 字段数据列表(兼容旧版本,实际API不返回此字段). + * @deprecated 此字段在API响应中不存在 */ + @Deprecated @SerializedName("field_list") - private List fieldList; + private java.util.List fieldList; /** - * 字段数据项. + * 字段数据项(用于更新员工档案). */ @Data @NoArgsConstructor @@ -38,15 +116,21 @@ public static class FieldItem implements Serializable { private static final long serialVersionUID = 1L; /** - * 字段key. + * 字段ID. */ - @SerializedName("field_key") - private String fieldKey; + @SerializedName("fieldid") + private Integer fieldId; /** - * 字段值. + * 字段值对象(推荐使用,支持多种类型). */ @SerializedName("field_value") private WxCpHrEmployeeFieldValue fieldValue; + + /** + * 字符串值(简化用法,适用于文本类型字段). + */ + @SerializedName("value_string") + private String valueString; } } diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldDataResp.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldDataResp.java index 07e286c2ef..f8e763c293 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldDataResp.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldDataResp.java @@ -21,10 +21,28 @@ public class WxCpHrEmployeeFieldDataResp extends WxCpBaseResp { private static final long serialVersionUID = 6593693598671765396L; /** - * 员工档案数据列表. + * 字段数据列表(API实际返回field_info). */ - @SerializedName("employee_field_list") - private List employeeFieldList; + @SerializedName("field_info") + private List fieldInfoList; + + /** + * 员工档案数据列表(兼容旧版本方法名). + * @deprecated 请使用 getFieldInfoList() + */ + @Deprecated + public List getEmployeeFieldList() { + return this.fieldInfoList; + } + + /** + * 员工档案数据列表(兼容旧版本方法名). + * @deprecated 请使用 setFieldInfoList() + */ + @Deprecated + public void setEmployeeFieldList(List employeeFieldList) { + this.fieldInfoList = employeeFieldList; + } /** * From json wx cp hr employee field data resp. diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldInfo.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldInfo.java index e355d8cc6a..3db3f2057d 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldInfo.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/hr/WxCpHrEmployeeFieldInfo.java @@ -18,30 +18,43 @@ public class WxCpHrEmployeeFieldInfo implements Serializable { private static final long serialVersionUID = 2593693598671765396L; /** - * 字段key. + * 字段ID. */ - @SerializedName("field_key") - private String fieldKey; - - /** - * 字段英文名称. - */ - @SerializedName("field_en_name") - private String fieldEnName; + @SerializedName("fieldid") + private Integer fieldId; /** - * 字段中文名称. + * 字段名称. */ - @SerializedName("field_zh_name") - private String fieldZhName; + @SerializedName("field_name") + private String fieldName; /** * 字段类型. - * 具体取值参见 {@link WxCpHrFieldType} + * 1: 文本 + * 2: 单选/多选 + * 3: 日期 */ @SerializedName("field_type") private Integer fieldType; + /** + * 是否必填. + */ + @SerializedName("is_must") + private Boolean isMust; + + /** + * 值类型. + * 1: 字符串 + * 2: uint64 + * 3: uint32 + * 4: int64 + * 5: mobile + */ + @SerializedName("value_type") + private Integer valueType; + /** * 获取字段类型枚举. * @@ -52,22 +65,79 @@ public WxCpHrFieldType getFieldTypeEnum() { } /** - * 是否系统字段. - * 0: 否 - * 1: 是 + * 选项列表(单选/多选字段专用). + */ + @SerializedName("option_list") + private List