diff --git a/README.md b/README.md index 4219dd7..1677836 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ Starter,支持微信优惠券,代金券、商家券、智慧商圈、商家 cn.felord payment-spring-boot-starter - 1.0.17.RELEASE + 1.0.18.RELEASE ``` diff --git a/docs/README.md b/docs/README.md index 7dc84d4..748e750 100644 --- a/docs/README.md +++ b/docs/README.md @@ -35,7 +35,7 @@ cn.felord payment-spring-boot-starter - 1.0.17.RELEASE + 1.0.18.RELEASE ``` ## 采用技术 diff --git a/docs/_sidebar.md b/docs/_sidebar.md index 6be5292..1214bf2 100644 --- a/docs/_sidebar.md +++ b/docs/_sidebar.md @@ -2,6 +2,6 @@ * [项目简介](README.md) * [快速接入](quick_start.md) * [JavaDoc](apidocs/index.html ':ignore') -* [微信支付V3接口文档](wechat_v3_api.md) +* [Payment微信支付V3接口文档](wechat_v3_api.md) * [日常踩坑](stackoverflow.md) * [更新日志](changelog.md) diff --git a/docs/quick_start.md b/docs/quick_start.md index 3350856..ac4e6b2 100644 --- a/docs/quick_start.md +++ b/docs/quick_start.md @@ -4,7 +4,7 @@ cn.felord payment-spring-boot-starter - 1.0.17.RELEASE + 1.0.18.RELEASE ``` > 基于 **Spring Boot 2.x** diff --git a/docs/wechat_v3_api.md b/docs/wechat_v3_api.md index 65a92b6..c8de1c8 100644 --- a/docs/wechat_v3_api.md +++ b/docs/wechat_v3_api.md @@ -9,8 +9,8 @@ #### 基础支付 - [x] `WechatDirectPayApi` 基础支付,通过`WechatApiProvider#directPayApi`初始化 - - [x] `jsPay` APP下单 - - [x] `appPay` JSAPI/小程序下单 + - [x] `jsPay` JSAPI/小程序下单 + - [x] `appPay` APP下单 - [x] `h5Pay` H5下单 - [x] `nativePay` Native下单 - [x] 查询订单 @@ -24,8 +24,8 @@ - [x] `downloadTradeBill` 申请交易账单,直接下载为gzip或者txt文件 - [x] `downloadFundFlowBill` 申请资金账单,直接下载为gzip或者txt文件 - [x] `WechatCombinePayApi` 合单支付,通过`WechatApiProvider#combinePayApi`初始化 - - [x] `jsPay` 合单APP下单 - - [x] `appPay` 合单JSAPI/小程序下单 + - [x] `jsPay` 合单JSAPI/小程序下单 + - [x] `appPay` 合单APP下单 - [x] `h5Pay` 合单H5下单 - [x] `nativePay` 合单Native下单 - [x] `queryTransactionByOutTradeNo` 查询订单,**合单支付目前只支持商户订单号查询** diff --git a/payment-spring-boot-autoconfigure/pom.xml b/payment-spring-boot-autoconfigure/pom.xml index 5633c86..3c85483 100644 --- a/payment-spring-boot-autoconfigure/pom.xml +++ b/payment-spring-boot-autoconfigure/pom.xml @@ -22,11 +22,11 @@ cn.felord payment-spring-boot - 1.0.17.RELEASE + 1.0.18.RELEASE payment-spring-boot-autoconfigure - 1.0.17.RELEASE + 1.0.18.RELEASE jar 4.0.0 diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/InMemoryWechatTenantService.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/InMemoryWechatTenantService.java index 78bc9fd..e35272b 100644 --- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/InMemoryWechatTenantService.java +++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/InMemoryWechatTenantService.java @@ -20,9 +20,10 @@ package cn.felord.payment.wechat; import cn.felord.payment.wechat.v3.KeyPairFactory; import cn.felord.payment.wechat.v3.WechatMetaBean; import lombok.AllArgsConstructor; -import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; +import org.springframework.core.io.ResourceLoader; +import org.springframework.util.ResourceUtils; import java.util.Map; import java.util.Set; @@ -37,6 +38,7 @@ import java.util.stream.Collectors; @AllArgsConstructor public class InMemoryWechatTenantService implements WechatTenantService { private final WechatPayProperties wechatPayProperties; + private final ResourceLoader resourceLoader; @Override public Set loadTenants() { @@ -51,7 +53,8 @@ public class InMemoryWechatTenantService implements WechatTenantService { String certAbsolutePath = v3.getCertAbsolutePath(); String mchId = v3.getMchId(); Resource resource = certAbsolutePath != null ? new FileSystemResource(certAbsolutePath) : - new ClassPathResource(certPath == null ? "wechat/apiclient_cert.p12" : certPath); + resourceLoader.getResource(certPath == null ? "classpath:wechat/apiclient_cert.p12" : + certPath.startsWith(ResourceUtils.CLASSPATH_URL_PREFIX) ? certPath : ResourceUtils.CLASSPATH_URL_PREFIX + certPath); WechatMetaBean wechatMetaBean = keyPairFactory.initWechatMetaBean(resource, mchId); wechatMetaBean.setV3(v3); wechatMetaBean.setTenantId(tenantId); diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatPayConfiguration.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatPayConfiguration.java index f2c77c5..56b3a04 100644 --- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatPayConfiguration.java +++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatPayConfiguration.java @@ -43,9 +43,7 @@ public class WechatPayConfiguration { @Bean @ConditionalOnMissingBean WechatMetaContainer wechatMetaContainer(WechatTenantService wechatTenantService) { - WechatMetaContainer container = new WechatMetaContainer(); - container.addWechatMetas(wechatTenantService.loadTenants()); - return container; + return new WechatMetaContainer(wechatTenantService); } /** diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatTenantServiceConfiguration.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatTenantServiceConfiguration.java index a34e312..575c93e 100644 --- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatTenantServiceConfiguration.java +++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/WechatTenantServiceConfiguration.java @@ -22,6 +22,7 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.ResourceLoader; /** * The type Wechat tenant service configuration. @@ -42,7 +43,7 @@ public class WechatTenantServiceConfiguration { */ @Bean @ConditionalOnMissingBean - public WechatTenantService wechatTenantService(WechatPayProperties wechatPayProperties) { - return new InMemoryWechatTenantService(wechatPayProperties); + public WechatTenantService wechatTenantService(WechatPayProperties wechatPayProperties, ResourceLoader resourceLoader) { + return new InMemoryWechatTenantService(wechatPayProperties, resourceLoader); } } diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/RefundModel.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/RefundModel.java deleted file mode 100644 index 8f094c6..0000000 --- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/RefundModel.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2019-2022 felord.cn - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * Website: - * https://felord.cn - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package cn.felord.payment.wechat.v2.model; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * @author felord.cn - * @since 1.0.4.RELEASE - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class RefundModel extends BaseModel { - - private String appid; - private String mchId; - private String signType="MD5"; - private String transactionId; - private String outTradeNo; - private String outRefundNo; - private Integer totalFee; - private Integer refundFee; - private String refundFeeType="CNY"; - private String refundDesc; - private String refundAccount; - private String notifyUrl; - -} diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/RefundQueryModel.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/RefundQueryModel.java deleted file mode 100644 index 6c9c415..0000000 --- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/RefundQueryModel.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2019-2022 felord.cn - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * Website: - * https://felord.cn - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package cn.felord.payment.wechat.v2.model; - -/** - * @author felord.cn - * @since 1.0.4.RELEASE - */ -public class RefundQueryModel { -} diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatMetaContainer.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatMetaContainer.java index 5109bec..d82c0ca 100644 --- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatMetaContainer.java +++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatMetaContainer.java @@ -17,6 +17,9 @@ package cn.felord.payment.wechat.v3; +import cn.felord.payment.wechat.WechatTenantService; +import lombok.AllArgsConstructor; + import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentSkipListSet; @@ -27,10 +30,11 @@ import java.util.concurrent.ConcurrentSkipListSet; * @author felord.cn * @since 1.0.0.RELEASE */ +@AllArgsConstructor public class WechatMetaContainer { private final Map wechatMetaBeanMap = new ConcurrentHashMap<>(); private final Set tenantIds = new ConcurrentSkipListSet<>(); - + private final WechatTenantService wechatTenantService; /** * Add wechat metas. @@ -66,7 +70,14 @@ public class WechatMetaContainer { * @return the wechat meta */ public WechatMetaBean getWechatMeta(String tenantId) { - return Objects.requireNonNull(this.wechatMetaBeanMap.get(tenantId)); + WechatMetaBean wechatMetaBean = this.wechatMetaBeanMap.get(tenantId); + if (Objects.nonNull(wechatMetaBean)) { + return wechatMetaBean; + } else { + this.addWechatMetas(wechatTenantService.loadTenants()); + return Objects.requireNonNull(this.wechatMetaBeanMap.get(tenantId), + "cant obtain the config with tenant: "+tenantId); + } } /** diff --git a/payment-spring-boot-starter/pom.xml b/payment-spring-boot-starter/pom.xml index d02ac7a..9469996 100644 --- a/payment-spring-boot-starter/pom.xml +++ b/payment-spring-boot-starter/pom.xml @@ -22,11 +22,11 @@ cn.felord payment-spring-boot - 1.0.17.RELEASE + 1.0.18.RELEASE payment-spring-boot-starter - 1.0.17.RELEASE + 1.0.18.RELEASE jar 4.0.0 diff --git a/pom.xml b/pom.xml index 40fe902..eae2276 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> cn.felord payment-spring-boot - 1.0.17.RELEASE + 1.0.18.RELEASE pom 4.0.0 @@ -47,7 +47,7 @@ - payment-spring-boot-1.0.14.RELEASE + payment-spring-boot-1.0.18.RELEASE https://github.com/NotFound403/payment-spring-boot scm:git:https://github.com/NotFound403/payment-spring-boot.git scm:git:https://github.com/NotFound403/payment-spring-boot.git