Skip to content

Commit

Permalink
Merge pull request #124 from dromara/1.0.20
Browse files Browse the repository at this point in the history
1.0.20
  • Loading branch information
NotFound403 committed Apr 29, 2024
2 parents 87257fc + 5b8850b commit d95d9de
Show file tree
Hide file tree
Showing 15 changed files with 156 additions and 34 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ Starter,支持微信优惠券,代金券、商家券、智慧商圈、商家
<dependency>
<groupId>cn.felord</groupId>
<artifactId>payment-spring-boot-starter</artifactId>
<version>1.0.19.RELEASE</version>
<version>1.0.20.RELEASE</version>
</dependency>
```

Expand Down
4 changes: 2 additions & 2 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
<dependency>
<groupId>cn.felord</groupId>
<artifactId>payment-spring-boot-starter</artifactId>
<version>1.0.19.RELEASE</version>
<version>1.0.20.RELEASE</version>
</dependency>
```
## 采用技术
Expand All @@ -51,4 +51,4 @@

## **免责声明**

**<span style="color:red;">本项目涉及到资金交易开发,开发者需要经严格测试后方能用于生产环境,本项目不对使用者的行为负责。</span>**
**<span style="color:red;">本项目涉及到资金交易开发,开发者需要经严格测试后方能用于生产环境,本项目不对使用者的行为负责。</span>**
4 changes: 2 additions & 2 deletions docs/quick_start.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<dependency>
<groupId>cn.felord</groupId>
<artifactId>payment-spring-boot-starter</artifactId>
<version>1.0.19.RELEASE</version>
<version>1.0.20.RELEASE</version>
</dependency>
```
> 基于 **Spring Boot 2.x**
Expand Down Expand Up @@ -174,4 +174,4 @@ public class PayConfig {
System.out.println("execute = " + execute.getBody());
}
```
```
6 changes: 3 additions & 3 deletions payment-spring-boot-autoconfigure/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@
<parent>
<groupId>cn.felord</groupId>
<artifactId>payment-spring-boot</artifactId>
<version>1.0.19.RELEASE</version>
<version>1.0.20.RELEASE</version>
</parent>

<artifactId>payment-spring-boot-autoconfigure</artifactId>
<version>1.0.19.RELEASE</version>
<version>1.0.20.RELEASE</version>
<packaging>jar</packaging>
<modelVersion>4.0.0</modelVersion>

Expand Down Expand Up @@ -92,4 +92,4 @@
</plugin>
</plugins>
</build>
</project>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
/*
* 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.enumeration;

/**
* The enum Business cert type.
*
* @author dax
* @since 2023 /7/1 8:34
*/
public enum BusinessCertType {
/**
* 事业单位法人证书
*/
CERTIFICATE_TYPE_2388,

/**
* 统一社会信用代码证书
*/
CERTIFICATE_TYPE_2389,

/**
* 社会团体法人登记证书
*/
CERTIFICATE_TYPE_2394,
/**
* 民办非企业单位登记证书
*/
CERTIFICATE_TYPE_2395,

/**
* 基金会法人登记证书
*/
CERTIFICATE_TYPE_2396,
/**
* 宗教活动场所登记证
*/
CERTIFICATE_TYPE_2399,

/**
* 政府部门下发的其他有效证明文件
*/
CERTIFICATE_TYPE_2400,
/**
* 执业许可证/执业证
*/
CERTIFICATE_TYPE_2520,
/**
* 基层群众性自治组织特别法人统一社会信用代码证
*/
CERTIFICATE_TYPE_2521,
/**
* 农村集体经济组织登记证
*/
CERTIFICATE_TYPE_2522
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
import org.springframework.core.io.Resource;
import org.springframework.http.ContentDisposition;
import org.springframework.http.HttpHeaders;
Expand All @@ -44,6 +47,8 @@

import java.net.URI;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.Objects;
import java.util.Optional;
Expand Down Expand Up @@ -92,12 +97,16 @@ public AbstractApi(WechatPayClient wechatPayClient, String tenantId) {
* @param mapper the mapper
*/
private void applyObjectMapper(ObjectMapper mapper) {
JavaTimeModule javaTimeModule = new JavaTimeModule();
javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ISO_LOCAL_DATE));
javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ISO_LOCAL_DATE_TIME));
javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ISO_LOCAL_TIME));
mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE)
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
// empty string error
.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true)
.setSerializationInclusion(JsonInclude.Include.NON_NULL)
.registerModule(new JavaTimeModule());
.registerModule(javaTimeModule);
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -184,15 +184,15 @@ public boolean responseSignVerify(ResponseSignVerifyParams params) {
.orElseThrow(() -> new PayException("cannot obtain the certificate"));
});

try {
final String signatureStr = createSign(params.getWechatpayTimestamp(), params.getWechatpayNonce(), params.getBody());
Signature signer = Signature.getInstance("SHA256withRSA", BC_PROVIDER);
signer.initVerify(certificate.getX509Certificate());
signer.update(signatureStr.getBytes(StandardCharsets.UTF_8));
return signer.verify(Base64Utils.decodeFromString(params.getWechatpaySignature()));
}catch (Exception e){
throw new PayException("An exception occurred during the response verification, the cause: "+e.getMessage());
}
try {
final String signatureStr = createSign(params.getWechatpayTimestamp(), params.getWechatpayNonce(), params.getBody());
Signature signer = Signature.getInstance("SHA256withRSA", BC_PROVIDER);
signer.initVerify(certificate.getX509Certificate());
signer.update(signatureStr.getBytes(StandardCharsets.UTF_8));
return signer.verify(Base64Utils.decodeFromString(params.getWechatpaySignature()));
} catch (Exception e) {
throw new PayException("An exception occurred during the response verification, the cause: " + e.getMessage());
}
}


Expand Down Expand Up @@ -230,12 +230,9 @@ private synchronized void refreshCertificate(String tenantId) {
throw new PayException("cant obtain the response body");
}
ArrayNode certificates = bodyObjectNode.withArray("data");
if (certificates.isArray() && certificates.size() > 0) {
CERTIFICATE_SET.forEach(x509WechatCertificateInfo -> {
if (Objects.equals(tenantId, x509WechatCertificateInfo.getTenantId())) {
CERTIFICATE_SET.remove(x509WechatCertificateInfo);
}
});
if (certificates.isArray() && !certificates.isEmpty()) {
CERTIFICATE_SET.removeIf(x509WechatCertificateInfo ->
Objects.equals(tenantId, x509WechatCertificateInfo.getTenantId()));
final CertificateFactory certificateFactory = CertificateFactory.getInstance("X509", BC_PROVIDER);
certificates.forEach(objectNode -> {
JsonNode encryptCertificate = objectNode.get("encrypt_certificate");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,9 @@ private RequestEntity<?> sendStocksFunction(WechatPayV3Type type, StocksSendPara
WechatPayProperties.V3 v3 = this.wechatMetaBean().getV3();

params.setAppid(v3.getAppId());
params.setStockCreatorMchid(v3.getMchId());
if (StringUtils.hasText(params.getStockCreatorMchid())){
params.setStockCreatorMchid(v3.getMchId());
}
URI uri = UriComponentsBuilder.fromHttpUrl(type.uri(WeChatServer.CHINA))
.build()
.expand(params.getOpenid())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ public WechatResponseEntity<ObjectNode> find(ParkingServiceQueryParams params) {

URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA))
.queryParams(queryParams)
.encode()
.build()
.toUri();
return Get(uri);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,11 @@ public class CreateBatchTransferParams {
* 指定该笔转账使用的转账场景ID
*/
private String transferSceneId;
/**
* 回调通知
* @since 1.0.20
*/
private String notifyUrl;

/**
* 转账明细.
Expand Down Expand Up @@ -96,4 +101,4 @@ public static class TransferDetailListItem{
*/
private String userIdCard;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

package cn.felord.payment.wechat.v3.model.ecommerce;

import cn.felord.payment.wechat.enumeration.BusinessCertType;
import lombok.Data;

/**
Expand All @@ -25,6 +26,7 @@
*/
@Data
public class EcommerceBusinessLicenseInfo {
private BusinessCertType certType;
private String businessLicenseCopy;
private String businessLicenseNumber;
private String merchantName;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ public class EcommerceContactInfo {
private String contactIdCardNumber;
private String contactIdDocCopy;
private String contactIdDocCopyBack;
private String contactIdDocPeriodBegin;
private String contactIdDocPeriodEnd;
private String businessAuthorizationLetter;
private String contactIdDocPeriodBegin;
private String mobilePhone;
private String contactEmail;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* 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.v3.model.ecommerce;

import cn.felord.payment.wechat.enumeration.IdDocType;
import lombok.Data;

import java.time.LocalDate;

@Data
public class UboInfoListItem {
private IdDocType uboIdDocType;
private String uboIdDocCopy;
private String uboIdDocCopyBack;
private String uboIdDocName;
private String uboIdDocNumber;
private String uboIdDocAddress;
private LocalDate uboIdDocPeriodBegin;
private String uboIdDocPeriodEnd;
}
6 changes: 3 additions & 3 deletions payment-spring-boot-starter/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,11 @@
<parent>
<groupId>cn.felord</groupId>
<artifactId>payment-spring-boot</artifactId>
<version>1.0.19.RELEASE</version>
<version>1.0.20.RELEASE</version>
</parent>

<artifactId>payment-spring-boot-starter</artifactId>
<version>1.0.19.RELEASE</version>
<version>1.0.20.RELEASE</version>
<packaging>jar</packaging>
<modelVersion>4.0.0</modelVersion>

Expand Down Expand Up @@ -62,4 +62,4 @@
</dependency>
</dependencies>

</project>
</project>
6 changes: 3 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<groupId>cn.felord</groupId>
<artifactId>payment-spring-boot</artifactId>
<version>1.0.19.RELEASE</version>
<version>1.0.20.RELEASE</version>
<packaging>pom</packaging>
<modelVersion>4.0.0</modelVersion>

Expand Down Expand Up @@ -90,7 +90,7 @@
<java.version>1.8</java.version>
<spring-boot.version>2.7.7</spring-boot.version>
<alipay-sdk.version>4.31.7.ALL</alipay-sdk.version>
<bcprov.version>1.69</bcprov.version>
<bcprov.version>1.74</bcprov.version>
</properties>

<distributionManagement>
Expand Down Expand Up @@ -212,4 +212,4 @@
</plugin>
</plugins>
</build>
</project>
</project>

0 comments on commit d95d9de

Please sign in to comment.