diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/ecommerce/ApplymentApi.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/ecommerce/ApplymentApi.java index fde3656..2b46e31 100644 --- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/ecommerce/ApplymentApi.java +++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/ecommerce/ApplymentApi.java @@ -34,6 +34,7 @@ import cn.felord.payment.wechat.v3.model.ecommerce.UboInfo; import cn.felord.payment.wechat.v3.model.specmch.SubMchModifyParams; import com.fasterxml.jackson.databind.node.ObjectNode; import org.springframework.http.HttpHeaders; +import org.springframework.util.StringUtils; import org.springframework.web.util.UriComponentsBuilder; import java.net.URI; @@ -68,21 +69,16 @@ public class ApplymentApi extends AbstractApi { */ public WechatResponseEntity apply(EcommerceApplymentParams params) { WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>(); - this.client().withType(WechatPayV3Type.ECOMMERCE_APPLYMENT, params) - .function((wechatPayV3Type, applymentParams) -> { - SignatureProvider signatureProvider = this.client().signatureProvider(); - X509WechatCertificateInfo certificate = signatureProvider.getCertificate(this.wechatMetaBean().getTenantId()); - final X509Certificate x509Certificate = certificate.getX509Certificate(); - EcommerceApplymentParams applyRequestParams = this.convert(applymentParams, signatureProvider, x509Certificate); - URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA)) - .build() - .toUri(); - HttpHeaders httpHeaders = new HttpHeaders(); - httpHeaders.add("Wechatpay-Serial", certificate.getWechatPaySerial()); - return Post(uri, applyRequestParams, httpHeaders); - }) - .consumer(wechatResponseEntity::convert) - .request(); + this.client().withType(WechatPayV3Type.ECOMMERCE_APPLYMENT, params).function((wechatPayV3Type, applymentParams) -> { + SignatureProvider signatureProvider = this.client().signatureProvider(); + X509WechatCertificateInfo certificate = signatureProvider.getCertificate(this.wechatMetaBean().getTenantId()); + final X509Certificate x509Certificate = certificate.getX509Certificate(); + EcommerceApplymentParams applyRequestParams = this.convert(applymentParams, signatureProvider, x509Certificate); + URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA)).build().toUri(); + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.add("Wechatpay-Serial", certificate.getWechatPaySerial()); + return Post(uri, applyRequestParams, httpHeaders); + }).consumer(wechatResponseEntity::convert).request(); return wechatResponseEntity; } @@ -94,16 +90,10 @@ public class ApplymentApi extends AbstractApi { */ public WechatResponseEntity queryByApplymentId(String applymentId) { WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>(); - this.client().withType(WechatPayV3Type.ECOMMERCE_APPLYMENT_ID, applymentId) - .function((type, id) -> { - URI uri = UriComponentsBuilder.fromHttpUrl(type.uri(WeChatServer.CHINA)) - .build() - .expand(id) - .toUri(); - return Get(uri); - }) - .consumer(wechatResponseEntity::convert) - .request(); + this.client().withType(WechatPayV3Type.ECOMMERCE_APPLYMENT_ID, applymentId).function((type, id) -> { + URI uri = UriComponentsBuilder.fromHttpUrl(type.uri(WeChatServer.CHINA)).build().expand(id).toUri(); + return Get(uri); + }).consumer(wechatResponseEntity::convert).request(); return wechatResponseEntity; } @@ -116,16 +106,10 @@ public class ApplymentApi extends AbstractApi { public WechatResponseEntity queryByBusinessCode(String outRequestNo) { WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>(); - this.client().withType(WechatPayV3Type.ECOMMERCE_APPLYMENT_OUT_REQUEST_NO, outRequestNo) - .function((type, id) -> { - URI uri = UriComponentsBuilder.fromHttpUrl(type.uri(WeChatServer.CHINA)) - .build() - .expand(id) - .toUri(); - return Get(uri); - }) - .consumer(wechatResponseEntity::convert) - .request(); + this.client().withType(WechatPayV3Type.ECOMMERCE_APPLYMENT_OUT_REQUEST_NO, outRequestNo).function((type, id) -> { + URI uri = UriComponentsBuilder.fromHttpUrl(type.uri(WeChatServer.CHINA)).build().expand(id).toUri(); + return Get(uri); + }).consumer(wechatResponseEntity::convert).request(); return wechatResponseEntity; } @@ -159,11 +143,19 @@ public class ApplymentApi extends AbstractApi { if (idCardInfo != null) { idCardInfo.setIdCardName(signatureProvider.encryptRequestMessage(idCardInfo.getIdCardName(), x509Certificate)); idCardInfo.setIdCardNumber(signatureProvider.encryptRequestMessage(idCardInfo.getIdCardNumber(), x509Certificate)); + String idCardAddress = idCardInfo.getIdCardAddress(); + if (StringUtils.hasText(idCardAddress)) { + idCardInfo.setIdCardAddress(signatureProvider.encryptRequestMessage(idCardAddress, x509Certificate)); + } } EcommerceIdDocInfo idDocInfo = applymentParams.getIdDocInfo(); if (idDocInfo != null) { idDocInfo.setIdDocName(signatureProvider.encryptRequestMessage(idDocInfo.getIdDocName(), x509Certificate)); idDocInfo.setIdDocNumber(signatureProvider.encryptRequestMessage(idDocInfo.getIdDocNumber(), x509Certificate)); + String idDocAddress = idDocInfo.getIdDocAddress(); + if (StringUtils.hasText(idDocAddress)) { + idDocInfo.setIdDocAddress(signatureProvider.encryptRequestMessage(idDocAddress, x509Certificate)); + } } UboInfo uboInfo = applymentParams.getUboInfo(); if (uboInfo != null) { diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/ecommerce/EcommerceIdCardInfo.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/ecommerce/EcommerceIdCardInfo.java index daa0af8..9cd922b 100644 --- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/ecommerce/EcommerceIdCardInfo.java +++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/ecommerce/EcommerceIdCardInfo.java @@ -31,5 +31,7 @@ public class EcommerceIdCardInfo { private String idCardNational; private String idCardName; private String idCardNumber; - private LocalDate idCardValidTime; + private String idCardAddress; + private LocalDate idCardValidTimeBegin; + private String idCardValidTime; } diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/ecommerce/EcommerceIdDocInfo.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/ecommerce/EcommerceIdDocInfo.java index d7315f7..e925c47 100644 --- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/ecommerce/EcommerceIdDocInfo.java +++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/ecommerce/EcommerceIdDocInfo.java @@ -27,8 +27,11 @@ import java.time.LocalDate; */ @Data public class EcommerceIdDocInfo { + private String idDocCopy; + private String idDocCopyBack; private String idDocName; private String idDocNumber; - private String idDocCopy; + private String idDocAddress; + private LocalDate docPeriodBegin; private String docPeriodEnd; }