diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpConfigStorage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpConfigStorage.java index 79ae93189..0e6232607 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpConfigStorage.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpConfigStorage.java @@ -80,6 +80,16 @@ public interface WxMpConfigStorage { String getAppId(); + /** + * 服务商模式下的子商户公众账号ID + */ + String getSubAppId(); + + /** + * 服务商模式下的子商户号 + */ + String getSubMchId(); + String getSecret(); String getPartnerId(); diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInMemoryConfigStorage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInMemoryConfigStorage.java index f22926841..34ef4f5d5 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInMemoryConfigStorage.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInMemoryConfigStorage.java @@ -20,6 +20,8 @@ import java.util.concurrent.locks.ReentrantLock; public class WxMpInMemoryConfigStorage implements WxMpConfigStorage { protected volatile String appId; + protected volatile String subAppId; + protected volatile String subMchId; protected volatile String secret; protected volatile String partnerId; protected volatile String partnerKey; @@ -349,4 +351,22 @@ public class WxMpInMemoryConfigStorage implements WxMpConfigStorage { public boolean useSandboxForWxPay() { return false; } + + @Override + public String getSubAppId() { + return subAppId; + } + + public void setSubAppId(String subAppId) { + this.subAppId = subAppId; + } + + @Override + public String getSubMchId() { + return subMchId; + } + + public void setSubMchId(String subMchId) { + this.subMchId = subMchId; + } } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpPayServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpPayServiceImpl.java index fae2d9314..d8a985445 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpPayServiceImpl.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpPayServiceImpl.java @@ -268,9 +268,19 @@ public class WxMpPayServiceImpl implements WxMpPayService { if (StringUtils.isBlank(request.getAppid())) { request.setAppid(getConfig().getAppId()); } + if (StringUtils.isBlank(request.getMchId())) { request.setMchId(getConfig().getPartnerId()); } + + if (StringUtils.isBlank(request.getSubAppId())) { + request.setAppid(getConfig().getSubAppId()); + } + + if (StringUtils.isBlank(request.getSubMchId())) { + request.setMchId(getConfig().getSubMchId()); + } + if (StringUtils.isBlank(request.getNonceStr())) { request.setNonceStr(String.valueOf(System.currentTimeMillis())); } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxPayBaseRequest.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxPayBaseRequest.java index c13f1b8fc..d78671917 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxPayBaseRequest.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/request/WxPayBaseRequest.java @@ -47,6 +47,32 @@ public abstract class WxPayBaseRequest { */ @XStreamAlias("mch_id") protected String mchId; + + /** + *
+ * 服务商模式下的子商户公众账号ID + * sub_appid + * 是 + * String(32) + * wxd678efh567hg6787 + * 微信分配的子商户公众账号ID + *+ */ + @XStreamAlias("sub_appid") + protected String subAppId; + + /** + *
+ * 服务商模式下的子商户号 + * sub_mch_id + * 是 + * String(32) + * 1230000109 + * 微信支付分配的子商户号,开发者模式下必填 + *+ */ + @XStreamAlias("sub_mch_id") + protected String subMchId; /** *
* 随机字符串
@@ -128,6 +154,22 @@ public abstract class WxPayBaseRequest {
this.sign = sign;
}
+ public String getSubAppId() {
+ return subAppId;
+ }
+
+ public void setSubAppId(String subAppId) {
+ this.subAppId = subAppId;
+ }
+
+ public String getSubMchId() {
+ return subMchId;
+ }
+
+ public void setSubMchId(String subMchId) {
+ this.subMchId = subMchId;
+ }
+
@Override
public String toString() {
return ToStringUtils.toSimpleString(this);
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPayBaseResult.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPayBaseResult.java
index 4dd133abe..b72270857 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPayBaseResult.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/pay/result/WxPayBaseResult.java
@@ -61,6 +61,16 @@ public abstract class WxPayBaseResult {
*/
@XStreamAlias("mch_id")
private String mchId;
+ /**
+ * 服务商模式下的子公众账号ID
+ */
+ @XStreamAlias("appid")
+ private String subAppId;
+ /**
+ * 服务商模式下的子商户号
+ */
+ @XStreamAlias("sub_mch_id")
+ private String subMchId;
/**
* 随机字符串
*/
@@ -181,6 +191,22 @@ public abstract class WxPayBaseResult {
this.sign = sign;
}
+ public String getSubAppId() {
+ return subAppId;
+ }
+
+ public void setSubAppId(String subAppId) {
+ this.subAppId = subAppId;
+ }
+
+ public String getSubMchId() {
+ return subMchId;
+ }
+
+ public void setSubMchId(String subMchId) {
+ this.subMchId = subMchId;
+ }
+
/**
* 将bean通过保存的xml字符串转换成map
*/