From 8f6ba40b11c35c553d31331a9cda50fd5dc3fe30 Mon Sep 17 00:00:00 2001 From: Fang Date: Sun, 12 Jun 2022 15:39:46 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=95=86=E6=88=B7?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E8=8E=B7=E5=8F=96=E6=94=AF=E4=BB=98=E5=88=86?= =?UTF-8?q?=E5=AF=B9=E8=B4=A6=E5=8D=95API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wechat/enumeration/WechatPayV3Type.java | 6 +++ .../payment/wechat/v3/WechatPayScoreApi.java | 35 +++++++++++++++ .../wechat/v3/WechatProfitsharingApi.java | 6 +++ .../v3/model/payscore/PayScoreBillParams.java | 44 +++++++++++++++++++ .../ProfitsharingBillParams.java | 2 +- 5 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/payscore/PayScoreBillParams.java diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/WechatPayV3Type.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/WechatPayV3Type.java index ea44d28..106c6c5 100644 --- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/WechatPayV3Type.java +++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/WechatPayV3Type.java @@ -242,6 +242,12 @@ public enum WechatPayV3Type { * @since 1.0.2.RELEASE */ PAY_SCORE_SYNC_USER_SERVICE_ORDER(HttpMethod.POST, "%s/v3/payscore/serviceorder/{out_order_no}/sync"), + /** + * 商户申请获取对账单API + * + * @since 1.0.13.RELEASE + */ + PAY_SCORE_MERCHANT_BILL(HttpMethod.GET, "%s/v3/payscore/merchant-bill"), //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatPayScoreApi.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatPayScoreApi.java index 30ad2af..84a36d4 100644 --- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatPayScoreApi.java +++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatPayScoreApi.java @@ -19,6 +19,7 @@ package cn.felord.payment.wechat.v3; import cn.felord.payment.wechat.WechatPayProperties; +import cn.felord.payment.wechat.enumeration.TarType; import cn.felord.payment.wechat.enumeration.WeChatServer; import cn.felord.payment.wechat.enumeration.WechatPayV3Type; import cn.felord.payment.wechat.v3.model.payscore.*; @@ -29,6 +30,8 @@ import org.springframework.util.StringUtils; import org.springframework.web.util.UriComponentsBuilder; import java.net.URI; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.HashMap; import java.util.Map; @@ -466,4 +469,36 @@ public class WechatPayScoreApi extends AbstractApi { .request(); return wechatResponseEntity; } + + /** + * 商户申请获取对账单API + *

+ * 商户可以调用此接口获取对账单文件的下载链接,并在有效期内请求下载链接可以下载对账单文件。详细参考文档 商户申请获取对账单API + *

+ * 返回的下载链接可调用{@link #downloadBillResponse(String, String)}下载文件,文件需要解密。 + * + * @param billParams the bill params + * @return the wechat response entity + * @since 1.0.13.RELEASE + */ + public WechatResponseEntity downloadMerchantBills(PayScoreBillParams billParams) { + WechatResponseEntity wechatResponseEntity = new WechatResponseEntity<>(); + this.client().withType(WechatPayV3Type.PAY_SCORE_MERCHANT_BILL, billParams) + .function(((wechatPayV3Type, params) -> { + MultiValueMap queryParams = new LinkedMultiValueMap<>(); + LocalDate billDate = params.getBillDate(); + queryParams.add("bill_date", billDate.format(DateTimeFormatter.ISO_DATE)); + queryParams.add("tar_type", TarType.GZIP.name()); + queryParams.add("encryption_algorithm", "AEAD_AES_256_GCM"); + queryParams.add("service_id",billParams.getServiceId()); + + URI uri = UriComponentsBuilder.fromHttpUrl(wechatPayV3Type.uri(WeChatServer.CHINA)) + .queryParams(queryParams) + .build() + .toUri(); + return Get(uri); + })).consumer(wechatResponseEntity::convert) + .request(); + return wechatResponseEntity; + } } diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatProfitsharingApi.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatProfitsharingApi.java index bfb5890..2224ad0 100644 --- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatProfitsharingApi.java +++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatProfitsharingApi.java @@ -17,18 +17,24 @@ package cn.felord.payment.wechat.v3; import cn.felord.payment.wechat.WechatPayProperties; +import cn.felord.payment.wechat.enumeration.TarType; import cn.felord.payment.wechat.enumeration.WeChatServer; import cn.felord.payment.wechat.enumeration.WechatPayV3Type; import cn.felord.payment.wechat.v3.model.profitsharing.*; import com.fasterxml.jackson.databind.node.ObjectNode; import org.springframework.http.HttpHeaders; import org.springframework.util.CollectionUtils; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; import org.springframework.util.StringUtils; import org.springframework.web.util.UriComponentsBuilder; import java.net.URI; import java.security.cert.X509Certificate; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; /** diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/payscore/PayScoreBillParams.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/payscore/PayScoreBillParams.java new file mode 100644 index 0000000..b7ca997 --- /dev/null +++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/payscore/PayScoreBillParams.java @@ -0,0 +1,44 @@ +/* + * Copyright 2019-2021 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.payscore; + +import lombok.Data; + +import java.time.LocalDate; + +/** + * 直连商户-商户申请获取对账单API参数 + * + * @author felord.cn + * @since 1.0.13.RELEASE + */ +@Data +public class PayScoreBillParams { + + /** + * 账单日期,必传。 + *

+ * 格式yyyy-MM-DD,仅支持三个月内的账单下载申请。 + */ + private LocalDate billDate; + /** + * 支付分服务ID,必传。 + */ + private String serviceId; + +} diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/ProfitsharingBillParams.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/ProfitsharingBillParams.java index 44a4d18..ebb66ff 100644 --- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/ProfitsharingBillParams.java +++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/ProfitsharingBillParams.java @@ -26,7 +26,7 @@ import java.time.LocalDate; * 直连商户-申请分账账单API参数 * * @author felord.cn - * @since 1.0.12.RELEASE + * @since 1.0.13.RELEASE */ @Data public class ProfitsharingBillParams {