diff --git a/payment-spring-boot-autoconfigure/pom.xml b/payment-spring-boot-autoconfigure/pom.xml
index 0cf299e..a561726 100644
--- a/payment-spring-boot-autoconfigure/pom.xml
+++ b/payment-spring-boot-autoconfigure/pom.xml
@@ -12,8 +12,8 @@
org.apache.maven.plugins
maven-compiler-plugin
- 7
- 7
+ 8
+ 8
@@ -70,14 +70,17 @@
com.fasterxml.jackson.dataformat
jackson-dataformat-xml
+ true
com.squareup.okhttp3
okhttp
+ true
org.bouncycastle
bcprov-jdk15to18
+ true
diff --git a/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/alipay/configuration/AliPayConfiguration.java b/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/autoconfigure/AliPayConfiguration.java
similarity index 71%
rename from payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/alipay/configuration/AliPayConfiguration.java
rename to payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/autoconfigure/AliPayConfiguration.java
index 009cc06..c6dbeb5 100644
--- a/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/alipay/configuration/AliPayConfiguration.java
+++ b/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/autoconfigure/AliPayConfiguration.java
@@ -1,5 +1,6 @@
-package com.enongm.dianji.payment.alipay.configuration;
+package com.enongm.dianji.payment.autoconfigure;
+import com.enongm.dianji.payment.autoconfigure.AliPayProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;
diff --git a/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/alipay/configuration/AliPayProperties.java b/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/autoconfigure/AliPayProperties.java
similarity index 94%
rename from payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/alipay/configuration/AliPayProperties.java
rename to payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/autoconfigure/AliPayProperties.java
index fe58bae..6693fd2 100644
--- a/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/alipay/configuration/AliPayProperties.java
+++ b/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/autoconfigure/AliPayProperties.java
@@ -1,4 +1,4 @@
-package com.enongm.dianji.payment.alipay.configuration;
+package com.enongm.dianji.payment.autoconfigure;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
diff --git a/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/autoconfigure/EnableWechatPay.java b/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/autoconfigure/EnableWechatPay.java
new file mode 100644
index 0000000..51a6108
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/autoconfigure/EnableWechatPay.java
@@ -0,0 +1,11 @@
+package com.enongm.dianji.payment.autoconfigure;
+
+import org.springframework.context.annotation.Import;
+
+/**
+ * @author Dax
+ * @since 9:49
+ */
+@Import(WechatPayConfiguration.class)
+public @interface EnableWechatPay {
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/autoconfigure/WechatPayConfiguration.java b/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/autoconfigure/WechatPayConfiguration.java
index 77938e0..ecabe44 100644
--- a/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/autoconfigure/WechatPayConfiguration.java
+++ b/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/autoconfigure/WechatPayConfiguration.java
@@ -6,6 +6,7 @@ import com.enongm.dianji.payment.wechat.WechatPayV3Service;
import com.enongm.dianji.payment.wechat.v2.WechatPayV2Service;
import com.enongm.dianji.payment.wechat.v3.SignatureProvider;
import com.enongm.dianji.payment.wechat.v3.model.WechatMetaBean;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@@ -14,12 +15,13 @@ import org.springframework.context.annotation.Configuration;
* The type Wechat pay configuration.
*/
@Configuration
+@ConditionalOnProperty(prefix = "wechat.pay",havingValue = "v3")
@EnableConfigurationProperties(WechatPayProperties.class)
public class WechatPayConfiguration {
private static final String CERT_ALIAS = "Tenpay Certificate";
/**
- * 微信支付公私钥 以及序列号.
+ * 微信支付公私钥 以及序列号等元数据.
*
* @param wechatPayProperties the wechat pay properties
* @return the wechat cert bean
@@ -35,13 +37,13 @@ public class WechatPayConfiguration {
}
/**
- * Signature provider signature provider.
+ * 微信支付V3签名工具.
*
* @param wechatMetaBean the wechat meta bean
* @return the signature provider
*/
@Bean
- public SignatureProvider signatureProvider(WechatMetaBean wechatMetaBean) {
+ SignatureProvider signatureProvider(WechatMetaBean wechatMetaBean) {
return new SignatureProvider(wechatMetaBean);
}
@@ -58,7 +60,7 @@ public class WechatPayConfiguration {
}
/**
- * Wechat pay service wechat pay service.
+ * 微信支付V3 全量支持.
*
* @param signatureProvider the signature provider
* @return the wechat pay service
diff --git a/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/wechat/v2/WechatPayV2Service.java b/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/wechat/v2/WechatPayV2Service.java
index be2726d..da41a84 100644
--- a/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/wechat/v2/WechatPayV2Service.java
+++ b/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/wechat/v2/WechatPayV2Service.java
@@ -5,22 +5,37 @@ import com.enongm.dianji.payment.autoconfigure.WechatPayProperties;
import com.enongm.dianji.payment.wechat.v2.model.BaseModel;
/**
+ * The type Wechat pay v 2 service.
+ *
* @author Dax
- * @since 15:15
+ * @since 15 :15
*/
public class WechatPayV2Service {
private final WechatPayProperties wechatPayProperties;
+ /**
+ * Instantiates a new Wechat pay v 2 service.
+ *
+ * @param wechatPayProperties the wechat pay properties
+ */
public WechatPayV2Service(WechatPayProperties wechatPayProperties) {
this.wechatPayProperties = wechatPayProperties;
}
+ /**
+ * Model base model.
+ *
+ * @param the type parameter
+ * @param model the model
+ * @return the base model
+ */
public BaseModel model(M model) {
WechatPayProperties.V3 v3 = wechatPayProperties.getV3();
return model.appId(v3.getAppId())
- .mchId(v3.getMchId());
+ .mchId(v3.getMchId())
+ .appSecret(v3.getAppSecret());
}
}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/wechat/v2/model/BaseModel.java b/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/wechat/v2/model/BaseModel.java
index fce9b48..9c5647d 100644
--- a/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/wechat/v2/model/BaseModel.java
+++ b/payment-spring-boot-autoconfigure/src/main/java/com/enongm/dianji/payment/wechat/v2/model/BaseModel.java
@@ -19,6 +19,7 @@ import org.bouncycastle.crypto.Digest;
import org.bouncycastle.crypto.digests.MD5Digest;
import org.bouncycastle.util.encoders.Hex;
import org.springframework.util.AlternativeJdkIdGenerator;
+import org.springframework.util.Assert;
import org.springframework.util.IdGenerator;
@@ -52,7 +53,7 @@ public class BaseModel {
private String mchid;
private String sign;
@JsonIgnore
- private String key;
+ private String appSecret;
@JsonIgnore
private V2PayType payType;
@@ -72,6 +73,11 @@ public class BaseModel {
return this;
}
+ public BaseModel appSecret(String appSecret) {
+ this.appSecret = appSecret;
+ return this;
+ }
+
/**
* Xml string.
*
@@ -79,15 +85,8 @@ public class BaseModel {
*/
@SneakyThrows
public String xml() {
-
-
-
- this.key = "Djkjchina19491001";
- String link = link(this, key);
-
+ String link = link(this);
this.sign = this.bouncyCastleMD5(link);
-
-
return MAPPER.writer()
.withRootName("xml")
.writeValueAsString(this);
@@ -116,8 +115,10 @@ public class BaseModel {
* @return the map
*/
@SneakyThrows
- private String link(T t, String apiKey) {
-
+ private String link(T t) {
+ Assert.hasText(this.mchAppid, "wechat pay appId is required");
+ Assert.hasText(this.mchid, "wechat pay mchId is required");
+ Assert.hasText(appSecret, "wechat pay appSecret is required");
return new ObjectMapper()
.configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY, true)
.setSerializationInclusion(JsonInclude.Include.NON_NULL)
@@ -128,13 +129,13 @@ public class BaseModel {
.replaceAll("\",\"", "&")
.replaceAll("\\{\"", "")
.replaceAll("\"}", "")
- .concat("&key=").concat(apiKey);
+ .concat("&key=").concat(this.appSecret);
}
@SneakyThrows
public WechatResponseBody request() {
-
+ Assert.notNull(payType, "wechat pay payType is required");
Request request = new Request.Builder()
.method(payType.method(), RequestBody.create(MediaType.parse("application/x-www-form-urlencoded"), this.xml()))
.url(payType.defaultUri(WeChatServer.CHINA))
diff --git a/payment-spring-boot-starter/pom.xml b/payment-spring-boot-starter/pom.xml
index 7169396..9bf8b98 100644
--- a/payment-spring-boot-starter/pom.xml
+++ b/payment-spring-boot-starter/pom.xml
@@ -38,6 +38,18 @@
com.enongm.dianji
payment-spring-boot-autoconfigure
+
+ com.fasterxml.jackson.dataformat
+ jackson-dataformat-xml
+
+
+ com.squareup.okhttp3
+ okhttp
+
+
+ org.bouncycastle
+ bcprov-jdk15to18
+
\ No newline at end of file