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 79ae9318..0e623260 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 f2292684..34ef4f5d 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 fae2d931..d8a98544 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 c13f1b8f..d7867191 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 4dd133ab..b7227085 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 */