From 4fbffd154425edb1a2765f90e395f94bae446f7c Mon Sep 17 00:00:00 2001 From: cabbage <281119120@qq.com> Date: Fri, 23 May 2025 09:20:22 +0800 Subject: [PATCH] =?UTF-8?q?##=20=E5=8E=BB=E6=8E=89=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E3=80=81=E6=94=AF=E4=BB=98=E5=AE=9D=E5=AE=98=E6=96=B9=E6=94=AF?= =?UTF-8?q?=E4=BB=98=EF=BC=9B=E5=8E=BB=E6=8E=89=E4=BA=AC=E4=B8=9C=E6=94=AF?= =?UTF-8?q?=E4=BB=98=EF=BC=9B=E5=8E=BB=E6=8E=89=E5=9B=BE=E7=89=87=E3=80=81?= =?UTF-8?q?=E8=A7=86=E9=A2=91=E5=8E=8B=E7=BC=A9=E4=BE=9D=E8=B5=96=E5=8C=85?= =?UTF-8?q?=E5=BC=95=E5=85=A5=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bd-api/pom.xml | 1 - bd-business/bd-business-bonus/pom.xml | 7 - bd-business/bd-business-sale/pom.xml | 7 - bd-business/bd-business-system/pom.xml | 7 - bd-common/bd-common-core/pom.xml | 20 - .../hzs/common/core/enums/EPayChannel.java | 15 - .../hzs/common/core/utils/UploadFileUtil.java | 120 +----- bd-third/pom.xml | 38 +- .../mqcall/listener/RefundOrderListener.java | 4 - .../hzs/third/pay/config/AliPayConfig.java | 45 -- .../com/hzs/third/pay/config/JdPayConfig.java | 50 --- .../hzs/third/pay/config/WeChatConfig.java | 21 - .../third/pay/constants/AliPayConstants.java | 23 -- .../pay/constants/HuiFuPayConstants.java | 6 +- .../third/pay/constants/JdPayConstants.java | 154 ------- .../pay/constants/PayConfigConstants.java | 16 +- .../pay/constants/PayRedisConstants.java | 11 +- .../controller/api/AdaPayCodeController.java | 6 +- .../controller/api/AdaPayFastController.java | 6 +- .../controller/api/AdaRefundController.java | 6 +- .../api/AllInPayCodeController.java | 6 +- .../api/AllInPayFastController.java | 6 +- .../controller/api/AllInRefundController.java | 6 +- .../api/BaoFuPayCodeController.java | 6 +- .../controller/api/BaoFuRefundController.java | 6 +- .../controller/api/HuiFuPayController.java | 6 +- .../controller/api/JdPayFastController.java | 391 ------------------ .../controller/api/JdRefundController.java | 91 ---- .../pay/controller/api/PayController.java | 94 +---- .../pay/controller/base/JdBaseController.java | 64 --- .../controller/base/PayBaseController.java | 6 +- .../manage/OnlinePayConfigController.java | 33 +- .../manage/OnlinePaymentController.java | 6 +- .../manage/OnlineRefundController.java | 6 +- .../notify/AdaPayNotifyController.java | 6 +- .../notify/AdaRefundNotifyController.java | 6 +- .../notify/AliPayNotifyController.java | 88 ---- .../notify/BaoFuPayNotifyController.java | 6 +- .../notify/BaoFuRefundNotifyController.java | 6 +- .../notify/HuiFuNotifyController.java | 6 +- .../notify/JdPayNotifyController.java | 210 ---------- .../notify/JdRefundNotifyController.java | 148 ------- .../notify/SandPayNotifyController.java | 121 +++--- .../notify/WeChatPayNotifyController.java | 91 ---- .../hzs/third/pay/dto/WechatPublicDTO.java | 6 +- .../com/hzs/third/pay/dto/WechatStateDTO.java | 6 +- .../third/pay/dto/jd/JdAgentBalanceDTO.java | 22 - .../pay/dto/jd/JdAgentBalanceResult.java | 31 -- .../com/hzs/third/pay/dto/jd/JdAgentDTO.java | 82 ---- .../hzs/third/pay/dto/jd/JdAgentQueryDTO.java | 41 -- .../third/pay/dto/jd/JdAgentQueryData.java | 35 -- .../third/pay/dto/jd/JdAgentQueryError.java | 21 - .../third/pay/dto/jd/JdAgentQueryResult.java | 24 -- .../hzs/third/pay/dto/jd/JdAgentResult.java | 38 -- .../pay/dto/jd/JdFastBindConfirmDTO.java | 32 -- .../pay/dto/jd/JdFastBindConfirmResult.java | 49 --- .../hzs/third/pay/dto/jd/JdFastBindDTO.java | 70 ---- .../third/pay/dto/jd/JdFastBindResult.java | 31 -- .../third/pay/dto/jd/JdFastConfirmDTO.java | 32 -- .../third/pay/dto/jd/JdFastConfirmResult.java | 56 --- .../com/hzs/third/pay/dto/jd/JdFastDTO.java | 118 ------ .../hzs/third/pay/dto/jd/JdFastResult.java | 46 --- .../hzs/third/pay/dto/jd/JdFastUnBindDTO.java | 37 -- .../third/pay/dto/jd/JdFastUnBindResult.java | 26 -- .../hzs/third/pay/dto/jd/JdPayNotifyBody.java | 68 --- .../com/hzs/third/pay/dto/jd/JdScanDTO.java | 52 --- .../hzs/third/pay/dto/jd/JdScanResult.java | 29 -- .../third/pay/dto/jd/JdScanResultData.java | 16 - .../com/hzs/third/pay/enums/EJdAppType.java | 28 -- .../hzs/third/pay/enums/EJdTerminalType.java | 27 -- .../jdpay/config/JdPayAutoConfiguration.java | 54 --- .../dto/JdPayAggregateCreateOrderRequest.java | 129 ------ .../JdPayAggregateCreateOrderResponse.java | 56 --- .../pay/jdpay/dto/JdPayRefundRequest.java | 58 --- .../pay/jdpay/dto/JdPayRefundResponse.java | 62 --- .../jdpay/dto/JdPayRefundSuccessNotify.java | 66 --- .../jdpay/dto/JdPayTradeSuccessNotify.java | 98 ----- .../com/hzs/third/pay/jdpay/sdk/JdPay.java | 175 -------- .../third/pay/jdpay/sdk/JdPayConstant.java | 96 ----- .../pay/jdpay/sdk/JdPayDefaultNewConfig.java | 73 ---- .../third/pay/jdpay/sdk/JdPayHttpClient.java | 173 -------- .../pay/jdpay/sdk/JdPayHttpClientProxy.java | 58 --- .../jdpay/sdk/JdPayHttpConnectionMonitor.java | 55 --- .../third/pay/jdpay/sdk/JdPayNewConfig.java | 154 ------- .../third/pay/jdpay/sdk/JdPaySecurity.java | 19 - .../hzs/third/pay/jdpay/sdk/JdPaySign.java | 200 --------- .../hzs/third/pay/jdpay/util/CertUtil.java | 110 ----- .../hzs/third/pay/jdpay/util/FileUtil.java | 43 -- .../hzs/third/pay/jdpay/util/GsonUtil.java | 171 -------- .../third/pay/jdpay/util/JdPayApiUtil.java | 81 ---- .../hzs/third/pay/jdpay/util/SignUtil.java | 147 ------- .../pay/listener/AdaPayLoadListener.java | 6 +- .../third/pay/listener/HuiFuLoadListener.java | 6 +- .../hzs/third/pay/service/IAliPayService.java | 27 -- .../hzs/third/pay/service/IJdPayService.java | 38 -- .../hzs/third/pay/service/IRefundService.java | 18 - .../third/pay/service/ISandPayService.java | 46 +-- .../third/pay/service/IWeChatPayService.java | 44 -- .../pay/service/impl/AliPayServiceImpl.java | 150 ------- .../pay/service/impl/JdPayServiceImpl.java | 264 ------------ .../pay/service/impl/RefundServiceImpl.java | 140 ------- .../pay/service/impl/SandPayServiceImpl.java | 389 +++++++++-------- .../service/impl/WeChatPayServiceImpl.java | 248 ----------- .../com/hzs/third/pay/util/AliPayUtil.java | 36 -- .../com/hzs/third/pay/util/JdPayUtil.java | 151 ------- .../com/hzs/third/pay/util/WeChatUtil.java | 45 +- .../hzs/third/wechat/dto/WeChatCodeDTO.java | 6 +- bd-third/src/main/resources/bootstrap.yml | 58 --- .../online/20240312.3300000479182349.pfx | Bin 3039 -> 0 bytes .../resources/fastmoney/online/99bill.RSA.cer | 29 -- .../resources/fastmoney/test/10012140356.pfx | Bin 2769 -> 0 bytes .../test/20190805.3300000002975573.pfx | Bin 2839 -> 0 bytes .../resources/fastmoney/test/CFCA_sandbox.cer | 25 -- .../resources/fastmoney/test/sandbox.ssl.pfx | Bin 4880 -> 0 bytes bd-third/src/main/resources/jd/bak.txt | 6 - .../src/main/resources/jd/merchantCert.pfx | Bin 3039 -> 0 bytes .../src/main/resources/jd/npp_11_API2_pro.cer | Bin 1018 -> 0 bytes pom.xml | 57 --- 文档/三方对接/胜天半子供应链.txt | 16 - 119 files changed, 337 insertions(+), 6547 deletions(-) delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/config/AliPayConfig.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/config/JdPayConfig.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/constants/AliPayConstants.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/constants/JdPayConstants.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/controller/api/JdPayFastController.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/controller/api/JdRefundController.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/controller/base/JdBaseController.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/controller/notify/AliPayNotifyController.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/controller/notify/JdPayNotifyController.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/controller/notify/JdRefundNotifyController.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/controller/notify/WeChatPayNotifyController.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentBalanceDTO.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentBalanceResult.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentDTO.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentQueryDTO.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentQueryData.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentQueryError.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentQueryResult.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentResult.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastBindConfirmDTO.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastBindConfirmResult.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastBindDTO.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastBindResult.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastConfirmDTO.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastConfirmResult.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastDTO.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastResult.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastUnBindDTO.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastUnBindResult.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdPayNotifyBody.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdScanDTO.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdScanResult.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdScanResultData.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/enums/EJdAppType.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/enums/EJdTerminalType.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/jdpay/config/JdPayAutoConfiguration.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayAggregateCreateOrderRequest.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayAggregateCreateOrderResponse.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayRefundRequest.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayRefundResponse.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayRefundSuccessNotify.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayTradeSuccessNotify.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPay.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayConstant.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayDefaultNewConfig.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayHttpClient.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayHttpClientProxy.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayHttpConnectionMonitor.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayNewConfig.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPaySecurity.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPaySign.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/jdpay/util/CertUtil.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/jdpay/util/FileUtil.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/jdpay/util/GsonUtil.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/jdpay/util/JdPayApiUtil.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/jdpay/util/SignUtil.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/service/IAliPayService.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/service/IJdPayService.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/service/IWeChatPayService.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/service/impl/AliPayServiceImpl.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/service/impl/JdPayServiceImpl.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/service/impl/WeChatPayServiceImpl.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/util/AliPayUtil.java delete mode 100644 bd-third/src/main/java/com/hzs/third/pay/util/JdPayUtil.java delete mode 100644 bd-third/src/main/resources/fastmoney/online/20240312.3300000479182349.pfx delete mode 100644 bd-third/src/main/resources/fastmoney/online/99bill.RSA.cer delete mode 100644 bd-third/src/main/resources/fastmoney/test/10012140356.pfx delete mode 100644 bd-third/src/main/resources/fastmoney/test/20190805.3300000002975573.pfx delete mode 100644 bd-third/src/main/resources/fastmoney/test/CFCA_sandbox.cer delete mode 100644 bd-third/src/main/resources/fastmoney/test/sandbox.ssl.pfx delete mode 100644 bd-third/src/main/resources/jd/bak.txt delete mode 100644 bd-third/src/main/resources/jd/merchantCert.pfx delete mode 100644 bd-third/src/main/resources/jd/npp_11_API2_pro.cer delete mode 100644 文档/三方对接/胜天半子供应链.txt diff --git a/bd-api/pom.xml b/bd-api/pom.xml index 1695348c..f0b48004 100644 --- a/bd-api/pom.xml +++ b/bd-api/pom.xml @@ -28,7 +28,6 @@ - bd-api-bonus bd-api-member bd-api-report diff --git a/bd-business/bd-business-bonus/pom.xml b/bd-business/bd-business-bonus/pom.xml index 6b8a105f..8248a107 100644 --- a/bd-business/bd-business-bonus/pom.xml +++ b/bd-business/bd-business-bonus/pom.xml @@ -35,13 +35,6 @@ bd-api-third - - com.bd bd-common-aop diff --git a/bd-business/bd-business-sale/pom.xml b/bd-business/bd-business-sale/pom.xml index beb1dd8d..e590e284 100644 --- a/bd-business/bd-business-sale/pom.xml +++ b/bd-business/bd-business-sale/pom.xml @@ -42,13 +42,6 @@ spring-rabbit - - com.bd bd-api-bonus diff --git a/bd-business/bd-business-system/pom.xml b/bd-business/bd-business-system/pom.xml index 4ae3e106..c4cdd72c 100644 --- a/bd-business/bd-business-system/pom.xml +++ b/bd-business/bd-business-system/pom.xml @@ -42,13 +42,6 @@ bd-api-third - - com.bd diff --git a/bd-common/bd-common-core/pom.xml b/bd-common/bd-common-core/pom.xml index 2d3a5353..c74a055d 100644 --- a/bd-common/bd-common-core/pom.xml +++ b/bd-common/bd-common-core/pom.xml @@ -187,26 +187,6 @@ javase - - - net.coobird - thumbnailator - - - - - ws.schild - jave-core - - - ws.schild - jave-nativebin-win64 - - - ws.schild - jave-nativebin-linux64 - - diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EPayChannel.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EPayChannel.java index 82040c4d..0992ef7d 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EPayChannel.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/enums/EPayChannel.java @@ -16,26 +16,11 @@ public enum EPayChannel { */ SAND(0, "杉德", 0, EnumsPrefixConstants.PAY_CHANNEL + "0"), - /** - * 支付宝 - */ - ALI(1, "支付宝", 0, EnumsPrefixConstants.PAY_CHANNEL + "1"), - - /** - * 微信 - */ - WECHAT(2, "微信", 0, EnumsPrefixConstants.PAY_CHANNEL + "2"), - /** * 通联 */ ALLIN(3, "通联", 0, EnumsPrefixConstants.PAY_CHANNEL + "3"), - /** - * 京东 - */ - JD(4, "京东", 0, EnumsPrefixConstants.PAY_CHANNEL + "4"), - /** * 宝付 */ diff --git a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/utils/UploadFileUtil.java b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/utils/UploadFileUtil.java index 234d12d6..1388c7f3 100644 --- a/bd-common/bd-common-core/src/main/java/com/hzs/common/core/utils/UploadFileUtil.java +++ b/bd-common/bd-common-core/src/main/java/com/hzs/common/core/utils/UploadFileUtil.java @@ -3,18 +3,12 @@ package com.hzs.common.core.utils; import com.hzs.common.core.config.OssConfig; import com.hzs.common.core.domain.FileResult; import lombok.extern.slf4j.Slf4j; -import net.coobird.thumbnailator.Thumbnails; import org.springframework.web.multipart.MultipartFile; -import ws.schild.jave.*; import java.io.*; /** - * @Description: 文件上传工具 - * @Author: jiang chao - * @Time: 2023/1/13 11:24 - * @Classname: UploadUtil - * @PackageName: com.hzs.member.tool + * 文件上传工具 */ @Slf4j public class UploadFileUtil { @@ -89,116 +83,4 @@ public class UploadFileUtil { return null; } - /** - * 图片压缩上传 - * - * @param inputStream 图片流 - * @param ext 扩展名 - * @param path 文件上传路径(不传入默认按年月日创建) - * @return - */ - public static FileResult imageZipUpload(InputStream inputStream, String ext, String path) { - try { - ByteArrayOutputStream thumbnailOutputStream = new ByteArrayOutputStream(); - Thumbnails.of(inputStream) - .scale(0.5f) // 值在0到1之间,1f就是原图大小,0.5就是原图的一半大小 - .outputQuality(0.5f) // 值也是在0到1,越接近于1质量越好,越接近于0质量越差 - .toOutputStream(thumbnailOutputStream); - ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(thumbnailOutputStream.toByteArray()); - return UploadFileUtil.upload(byteArrayInputStream, ext, path); - } catch (Exception e) { - log.error("上传文件失败", e); - } - return null; - - } - - /** - * @Param source: 原文件 - */ - public static FileResult videoZipUpload(String url, String filePath) throws IOException { - File source = new File(url); - File target = File.createTempFile(CommonUtil.createSerialNumber(), ".mp4"); - try { - MultimediaObject multimediaObject = new MultimediaObject(source); - AudioInfo audioInfo = multimediaObject.getInfo().getAudio(); - //根据视频大小来判断是否需要压缩 - int maxSize = 5; - double mb = Math.ceil(source.length() / 1024 / 1024); -// int second = (int) multimediaObject.getInfo().getDuration(); -// BigDecimal bigDecimal = new BigDecimal(String.format("%.4f", mb / second)); - // 当视频大于5M或每秒>0.5M时进行压缩 -// boolean temp = mb > maxSize || bigDecimal.compareTo(new BigDecimal(0.5)) > 0; - - // 当视频大于5M - boolean temp = mb > maxSize; - if (temp) { - // TODO视频属性 - int maxBitRate = 160000; - int maxSamplingRate = 24000; - - AudioAttributes audioAttributes = new AudioAttributes(); - - // 设置通用编码格式10 - // 设置最大值:比特率越高,清晰度/音质越好 - // 设置音频比特率,单位:b (比特率越高,清晰度/音质越好,当然文件也就越大 128000 = 182kb) - if (audioInfo.getBitRate() > maxBitRate) { - audioAttributes.setBitRate(maxBitRate); - } - // 设置重新编码的音频流中使用的声道数(1 =单声道,2 = 双声道(立体声))。如果未设置任何声道值,则编码器将选择默认值 0。 - audioAttributes.setChannels(audioInfo.getChannels()); - // 采样率越高声音的还原度越好,文件越大 - // 设置音频采样率,单位:赫兹 hz - // 设置编码时候的音量值,未设置为0,如果256,则音量值不会改变 - audioAttributes.setVolume(256); - if (audioInfo.getSamplingRate() > maxSamplingRate) { - audioAttributes.setSamplingRate(maxSamplingRate); - } - - int bitRate = 1200000; - int maxFrameRate = 20; - - //TODO视频编码属性配置 - VideoInfo videoInfo = multimediaObject.getInfo().getVideo(); - VideoAttributes video = new VideoAttributes(); - video.setCodec("h264"); - //设置视频比特率,单位:b (比特率越高,清晰度/音质越好,当然文件也就越大 800000 = 800kb) - if (videoInfo.getBitRate() > bitRate) { - video.setBitRate(bitRate); - } - - // 视频帧率:15 f / s 帧率越低,效果越差 - // 设置视频帧率(帧率越低,视频会出现断层,越高让人感觉越连续),视频帧率(Frame rate)是用于测量显示帧数的量度。所谓的测量单位为每秒显示帧数(Frames per Second,简:FPS)或“赫兹”(Hz)。 - if (videoInfo.getFrameRate() > maxFrameRate) { - video.setFrameRate(maxFrameRate); - } - - //限制视频的宽高 - EncodingAttributes attrs = new EncodingAttributes(); - attrs.setFormat("mp4"); - attrs.setAudioAttributes(audioAttributes); - attrs.setVideoAttributes(video); - //使用多线程进行压缩 - attrs.setEncodingThreads(Runtime.getRuntime().availableProcessors() / 2); - - Encoder encoder = new Encoder(); - long time = System.currentTimeMillis(); - encoder.encode(multimediaObject, target, attrs); - System.out.println("压缩时间:" + (System.currentTimeMillis() - time) / 1000); - System.out.println(target.getAbsolutePath()); - - return UploadFileUtil.upload(target, filePath); - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - // 压缩后删除原文件 - if (target.length() > 0) { - source.deleteOnExit(); - } - } - return null; - } - - } diff --git a/bd-third/pom.xml b/bd-third/pom.xml index de6c9943..981d8bec 100644 --- a/bd-third/pom.xml +++ b/bd-third/pom.xml @@ -94,24 +94,6 @@ spring-rabbit - - - com.github.javen205 - IJPay-WxPay - - - - - com.github.javen205 - IJPay-AliPay - - - - - org.springframework.boot - spring-boot-starter-mail - - commons-validator @@ -124,16 +106,6 @@ xxl-job-core - - - com.huifu.adapay - adapay-java-sdk - - - com.huifu.adapay.core - adapay-core-sdk - - com.bd @@ -170,6 +142,16 @@ bd-api-scm + + + com.huifu.adapay + adapay-java-sdk + + + com.huifu.adapay.core + adapay-core-sdk + + com.huifu.bspay.sdk diff --git a/bd-third/src/main/java/com/hzs/third/mqcall/listener/RefundOrderListener.java b/bd-third/src/main/java/com/hzs/third/mqcall/listener/RefundOrderListener.java index f8cbdb7a..7f2f4bcf 100644 --- a/bd-third/src/main/java/com/hzs/third/mqcall/listener/RefundOrderListener.java +++ b/bd-third/src/main/java/com/hzs/third/mqcall/listener/RefundOrderListener.java @@ -188,10 +188,6 @@ public class RefundOrderListener { // 汇付 str = iRefundService.adaRefundHandle(refundDTO, tOnlinePayment); break; - case JD: - // 京东 - str = iRefundService.jdRefundHandle(refundDTO, tOnlinePayment); - break; case ALLIN: // 通联 str = iRefundService.allInRefundHandle(refundDTO, tOnlinePayment); diff --git a/bd-third/src/main/java/com/hzs/third/pay/config/AliPayConfig.java b/bd-third/src/main/java/com/hzs/third/pay/config/AliPayConfig.java deleted file mode 100644 index 4e4e9543..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/config/AliPayConfig.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.hzs.third.pay.config; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -/** - * 阿里支付相关配置 - */ -@Data -@Component -@ConfigurationProperties(prefix = "alipay") -public class AliPayConfig { - - /** - * 支付appId - */ - private String appId; - /** - * 开发者私钥 - */ - private String privateKey; - /** - * 支付宝公钥 - */ - private String publicKey; - /** - * 支付网关 - */ - private String serverUrl; - /** - * 支付回调地址 - */ - private String notifyUrl; - - /** - * 请求格式 - */ - private String format = "json"; - /** - * 请求加密方式 - */ - private String signType = "RSA2"; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/config/JdPayConfig.java b/bd-third/src/main/java/com/hzs/third/pay/config/JdPayConfig.java deleted file mode 100644 index 995a9f80..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/config/JdPayConfig.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.hzs.third.pay.config; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.stereotype.Component; - -/** - * 京东支付配置 - */ -@Data -@Component -@ConfigurationProperties(prefix = "jdpay") -public class JdPayConfig { - - /** - * 商户编号 - */ - private String customerNum; - - /** - * 店铺编号 - */ - private String shopNum; - - /** - * 公钥 - */ - private String accessKey; - - /** - * 私钥 - */ - private String secretKey; - - /** - * 回调地址 - */ - private String callbackUrl; - - /** - * 代付回调地址 - */ - private String agentCallbackUrl; - - /** - * 退款回调地址 - */ - private String refundCallbackUrl; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/config/WeChatConfig.java b/bd-third/src/main/java/com/hzs/third/pay/config/WeChatConfig.java index d7e25b8c..6fca7437 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/config/WeChatConfig.java +++ b/bd-third/src/main/java/com/hzs/third/pay/config/WeChatConfig.java @@ -12,20 +12,6 @@ import org.springframework.stereotype.Component; @ConfigurationProperties(prefix = "wechat") public class WeChatConfig { - //////////////////// 基础支付相关 //////////////////// - /** - * 商户号 - */ - private String mchId; - /** - * v2密钥 - */ - private String v2Key; - /** - * 微信支付回调地址 - */ - private String notifyUrl; - //////////////////// 公众号相关 //////////////////// /** * 公众号appId @@ -36,11 +22,4 @@ public class WeChatConfig { */ private String publicAppSecret; - //////////////////// 全球一体化APP //////////////////// - - /** - * 移动应用appId - */ - private String appId; - } diff --git a/bd-third/src/main/java/com/hzs/third/pay/constants/AliPayConstants.java b/bd-third/src/main/java/com/hzs/third/pay/constants/AliPayConstants.java deleted file mode 100644 index 2f5a2b14..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/constants/AliPayConstants.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.hzs.third.pay.constants; - -/** - * 阿里支付常量类 - */ -public class AliPayConstants { - - /** - * 业务成功码 - */ - public static final String SUCCESS = "TRADE_SUCCESS"; - - /** - * 返回成功 - */ - public static final String RETURN_SUCCESS = "success"; - - /** - * 返回失败 - */ - public static final String RETURN_FAIL = "failure"; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/constants/HuiFuPayConstants.java b/bd-third/src/main/java/com/hzs/third/pay/constants/HuiFuPayConstants.java index c4b104f3..d333727b 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/constants/HuiFuPayConstants.java +++ b/bd-third/src/main/java/com/hzs/third/pay/constants/HuiFuPayConstants.java @@ -1,11 +1,7 @@ package com.hzs.third.pay.constants; /** - * @Description: 汇付新支付常量 - * @Author: jiang chao - * @Time: 2024/12/5 15:51 - * @Classname: HuiFuPayConstants - * @PackageName: com.hzs.third.pay.constants + * 汇付新支付常量 */ public class HuiFuPayConstants { diff --git a/bd-third/src/main/java/com/hzs/third/pay/constants/JdPayConstants.java b/bd-third/src/main/java/com/hzs/third/pay/constants/JdPayConstants.java deleted file mode 100644 index e2223623..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/constants/JdPayConstants.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.hzs.third.pay.constants; - -/** - * 京东支付常量类 - */ -public class JdPayConstants { - - /** - * 终端标记(暂用京东注册手机号) - */ - public static final String TERMINAL_ID = "18246334501"; - /** - * 用户注册账号(暂用京东注册手机号) - */ - public static final String USER_ACCOUNT = "18246334501"; - /** - * 应用名称 - */ - public static final String APP_NAME = "盛美源"; - - // TODO 上面3项考试动态化配置 - - /** - * 订单状态 - 交易处理中 - */ - public static final String ORDER_INT = "INT"; - /** - * 订单状态 - 成功 - */ - public static final String ORDER_SUCCESS = "SUCCESS"; - - /** - * 查询状态 - 交易处理中 - */ - public static final String QUERY_INIT = "INIT"; - /** - * 查询状态 - 成功 - */ - public static final String QUERY_SUCCESS = "SUCCESS"; - /** - * 查询状态 - 失败 - */ - public static final String QUERY_FAIL = "FAIL"; - - /** - * 处理成功 - */ - public static final String RESULT_SUCCESS = "success"; - - /** - * 处理成功业务响应码 - */ - public static final String RESULT_SUCCESS_CODE = "C000000"; - - /** - * 银行卡交易不支持错误编码 - */ - public static final String RESULT_FAIL_CODE_6 = "C000006"; - - /** - * 请求成功 - */ - public static final String SUCCESS = "true"; - - /** - * 返回成功 - */ - public static final String RETURN_SUCCESS = "200"; - /** - * 返回失败 - */ - public static final String RETURN_FAIL = "500"; - - /** - * 支付接口版本 - */ - public static final String PAY_VERSION = "V4.0"; - - /** - * 绑卡类型: 身份证 - */ - public static final String ID_CARD_TYPE = "IDCARD"; - - /** - * 快捷支付标准业务场景 - */ - public static final String FAST_TRADESCENE_QUICKPAY = "QUICKPAY"; - - /** - * 代付业务类型 - */ - public static final String AGENT_BUSINESS_TYPE = "DEFY"; - - /** - * 代付支付方式 - */ - public static final String AGENT_BANK_TYPE = "DEFY"; - - /** - * 支付地址 - */ - public static final String PAY_URL = "https://openapi.duolabao.com"; - - /** - * 扫码支付调用方法 - */ - public static final String METHOD_SCAN = "/v3/order/payurl/create"; - - /** - * 快捷支付绑卡方法 - */ - public static final String METHOD_BIND_CARD = "/api/applyBindCard"; - - /** - * 快捷支付绑卡确认方法 - */ - public static final String METHOD_CONFIRM_BIND = "/api/confirmBindCard"; - - /** - * 快捷支付解绑方法 - */ - public static final String METHOD_UNBIND = "/api/unBindCard"; - - /** - * 快捷支付预下单 - */ - public static final String METHOD_PRE_ORDER = "/api/applyQuickPayWithCheck"; - - /** - * 快捷支付确认订单 - */ - public static final String METHOD_CONFIRM_ORDER = "/api/confirmQuickPay"; - - /** - * 京东代付余额查询方法 - */ - public static final String METHOD_QUERY_BALANCE = "/api/queryBalance"; - - /** - * 京东代付调用方法 - */ - public static final String METHOD_AGENT = "/api/payWithCheck"; - - /** - * 京东查询订单路径 - */ - public static final String QUERY_ORDER = "/v3/order/query"; - - /** - * 京东退款路径 - */ - public static final String REFUND_ORDER = "/v3/order/refund/part"; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/constants/PayConfigConstants.java b/bd-third/src/main/java/com/hzs/third/pay/constants/PayConfigConstants.java index 505e1186..9a2145a6 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/constants/PayConfigConstants.java +++ b/bd-third/src/main/java/com/hzs/third/pay/constants/PayConfigConstants.java @@ -1,21 +1,10 @@ package com.hzs.third.pay.constants; /** - * @Description: 支付配置常量 - * @Author: jiang chao - * @Time: 2022/11/17 9:59 - * @Classname: PayConfigConstants - * @PackageName: com.hzs.common.constant + * 支付配置常量 */ public class PayConfigConstants { -// // 京东银行卡 -// public static final String PAY_CONFIG_4 = "PAY:CONFIG:%s:4"; - // 京东收银台(H5) - public static final String PAY_CONFIG_5 = "PAY:CONFIG:%s:5"; - // 京东收银台(PC) - public static final String PAY_CONFIG_6 = "PAY:CONFIG:%s:6"; - // 宝付微信 public static final String PAY_CONFIG_11 = "PAY:CONFIG:%s:11"; // 宝付微信扫码 @@ -26,9 +15,6 @@ public class PayConfigConstants { // 汇付银行卡 public static final String PAY_CONFIG_15 = "PAY:CONFIG:%s:15"; -// // 微信APP -// public static final String PAY_CONFIG_20 = "PAY:CONFIG:%s:20"; - // 通联微信 public static final String PAY_CONFIG_32 = "PAY:CONFIG:%s:32"; // 通联银行卡 diff --git a/bd-third/src/main/java/com/hzs/third/pay/constants/PayRedisConstants.java b/bd-third/src/main/java/com/hzs/third/pay/constants/PayRedisConstants.java index c67df1df..1f75433d 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/constants/PayRedisConstants.java +++ b/bd-third/src/main/java/com/hzs/third/pay/constants/PayRedisConstants.java @@ -3,11 +3,7 @@ package com.hzs.third.pay.constants; import com.hzs.common.core.constant.CacheConstants; /** - * @Description: 支付redis常量 - * @Author: jiang chao - * @Time: 2022/12/23 15:02 - * @Classname: PayRedisConstants - * @PackageName: com.hzs.third.pay.constants + * 支付redis常量 */ public class PayRedisConstants { @@ -16,11 +12,6 @@ public class PayRedisConstants { */ public static final String SAND_SCAN_KEY = CacheConstants.CACHE_PREFIX + "SANDPAY:SCAN:%s:%s:%s"; - /** - * jd扫码KEY - */ - public static final String JD_SCAN_KEY = CacheConstants.CACHE_PREFIX + "JDPAY:SCAN:%s:%s"; - /** * 通联扫码KEY */ diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/api/AdaPayCodeController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/api/AdaPayCodeController.java index 0df8ecc1..c1a1cac0 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/api/AdaPayCodeController.java +++ b/bd-third/src/main/java/com/hzs/third/pay/controller/api/AdaPayCodeController.java @@ -36,11 +36,7 @@ import java.util.HashMap; import java.util.Map; /** - * @Description: 汇付二维码支付控制器 - * @Author: jiang chao - * @Time: 2023/3/21 11:26 - * @Classname: AdaPayCodeController - * @PackageName: com.hzs.third.pay.controller.api + * 汇付二维码支付控制器 */ @Slf4j @RestController diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/api/AdaPayFastController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/api/AdaPayFastController.java index f780beb4..a80950fb 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/api/AdaPayFastController.java +++ b/bd-third/src/main/java/com/hzs/third/pay/controller/api/AdaPayFastController.java @@ -36,11 +36,7 @@ import org.springframework.web.bind.annotation.*; import java.util.*; /** - * @Description: 汇付快捷支付控制器 - * @Author: jiang chao - * @Time: 2023/3/17 15:40 - * @Classname: AdaPayFastController - * @PackageName: com.hzs.third.pay.controller.api + * 汇付快捷支付控制器 */ @Slf4j @RestController diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/api/AdaRefundController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/api/AdaRefundController.java index fce61fb2..c3fe2efb 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/api/AdaRefundController.java +++ b/bd-third/src/main/java/com/hzs/third/pay/controller/api/AdaRefundController.java @@ -19,11 +19,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** - * @Description: 汇付退款控制器 - * @Author: jiang chao - * @Time: 2023/8/17 11:09 - * @Classname: AdaRefundController - * @PackageName: com.hzs.third.pay.controller.api + * 汇付退款控制器 */ @Slf4j @RestController diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/api/AllInPayCodeController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/api/AllInPayCodeController.java index 57464f86..2fc3815e 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/api/AllInPayCodeController.java +++ b/bd-third/src/main/java/com/hzs/third/pay/controller/api/AllInPayCodeController.java @@ -32,11 +32,7 @@ import java.util.Map; import java.util.TreeMap; /** - * @Description: 通联二维码支付控制器 - * @Author: jiang chao - * @Time: 2023/11/28 17:27 - * @Classname: AllInPayCodeController - * @PackageName: com.hzs.third.pay.controller.api + * 通联二维码支付控制器 */ @Slf4j @RestController diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/api/AllInPayFastController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/api/AllInPayFastController.java index 24120e39..1d383cf6 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/api/AllInPayFastController.java +++ b/bd-third/src/main/java/com/hzs/third/pay/controller/api/AllInPayFastController.java @@ -31,11 +31,7 @@ import java.net.InetAddress; import java.util.*; /** - * @Description: 通联快捷支付控制器 - * @Author: jiang chao - * @Time: 2022/12/27 14:56 - * @Classname: AllInPayFastController - * @PackageName: com.hzs.third.pay.controller + * 通联快捷支付控制器 */ @Slf4j @RestController diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/api/AllInRefundController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/api/AllInRefundController.java index 6723543f..191348ee 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/api/AllInRefundController.java +++ b/bd-third/src/main/java/com/hzs/third/pay/controller/api/AllInRefundController.java @@ -19,11 +19,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** - * @Description: 通联退款控制器 - * @Author: jiang chao - * @Time: 2023/11/9 14:04 - * @Classname: AllInRefundController - * @PackageName: com.hzs.third.pay.controller.api + * 通联退款控制器 */ @Slf4j @RestController diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/api/BaoFuPayCodeController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/api/BaoFuPayCodeController.java index ff61f295..a2c1c5c7 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/api/BaoFuPayCodeController.java +++ b/bd-third/src/main/java/com/hzs/third/pay/controller/api/BaoFuPayCodeController.java @@ -37,11 +37,7 @@ import java.util.HashMap; import java.util.Map; /** - * @Description: 宝付二维码支付控制器 - * @Author: jiang chao - * @Time: 2023/3/21 11:26 - * @Classname: AdaPayCodeController - * @PackageName: com.hzs.third.pay.controller.api + * 宝付二维码支付控制器 */ @Slf4j @RestController diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/api/BaoFuRefundController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/api/BaoFuRefundController.java index 6a6fc29f..5c80df59 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/api/BaoFuRefundController.java +++ b/bd-third/src/main/java/com/hzs/third/pay/controller/api/BaoFuRefundController.java @@ -16,11 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; /** - * @Description: 宝付退款控制器 - * @Author: jiang chao - * @Time: 2023/8/16 14:04 - * @Classname: BaoFuRefundController - * @PackageName: com.hzs.third.pay.controller.api + * 宝付退款控制器 */ @Slf4j @RestController diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/api/HuiFuPayController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/api/HuiFuPayController.java index d5a3712b..2ae4194d 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/api/HuiFuPayController.java +++ b/bd-third/src/main/java/com/hzs/third/pay/controller/api/HuiFuPayController.java @@ -36,11 +36,7 @@ import java.util.HashMap; import java.util.Map; /** - * @Description: 汇付新支付控制器 - * @Author: jiang chao - * @Time: 2024/12/5 15:28 - * @Classname: HuiFuPayController - * @PackageName: com.hzs.third.pay.controller.api + * 汇付新支付控制器 */ @Slf4j @RestController diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/api/JdPayFastController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/api/JdPayFastController.java deleted file mode 100644 index 00f048da..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/api/JdPayFastController.java +++ /dev/null @@ -1,391 +0,0 @@ -package com.hzs.third.pay.controller.api; - -import cn.hutool.json.JSONUtil; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.hzs.common.core.annotation.RepeatSubmitSimple; -import com.hzs.common.core.constant.msg.CommonMsgConstants; -import com.hzs.common.core.enums.*; -import com.hzs.common.core.utils.CommonUtil; -import com.hzs.common.core.utils.StringUtils; -import com.hzs.common.core.web.domain.AjaxResult; -import com.hzs.common.domain.third.pay.TOnlineCard; -import com.hzs.common.domain.third.pay.TOnlinePayment; -import com.hzs.common.security.utils.SecurityUtils; -import com.hzs.common.util.TransactionUtils; -import com.hzs.third.pay.config.JdPayConfig; -import com.hzs.third.pay.constants.JdPayConstants; -import com.hzs.third.pay.controller.base.PayBaseController; -import com.hzs.third.pay.dto.jd.*; -import com.hzs.third.pay.enums.EJdFastBankCode; -import com.hzs.third.pay.param.FastBindConfirmParam; -import com.hzs.third.pay.param.FastBindParam; -import com.hzs.third.pay.param.FastPayOrderParam; -import com.hzs.third.pay.param.FastUnBindParam; -import com.hzs.third.pay.service.ITOnlineCardService; -import com.hzs.third.pay.service.ITOnlinePaymentService; -import com.hzs.third.pay.util.JdPayUtil; -import com.hzs.third.pay.vo.BindCardVO; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -/** - * @Description: 京东快捷支付控制器 - * @Author: jiang chao - * @Time: 2022/12/27 9:24 - * @Classname: JdPayFastController - * @PackageName: com.hzs.third.pay.controller - */ -@Slf4j -@RestController -@RequestMapping("/jd-fast") -public class JdPayFastController extends PayBaseController { - - @Autowired - private JdPayConfig jdPayConfig; - @Autowired - private ITOnlineCardService itOnlineCardService; - @Autowired - private ITOnlinePaymentService itOnlinePaymentService; - - /** - * 绑卡列表 - * - * @return - */ - @GetMapping("/list") - public AjaxResult list() { - List resultList = new ArrayList<>(); - - List tOnlineCardList = itOnlineCardService.queryBankList(SecurityUtils.getUserId(), jdPayConfig.getCustomerNum(), SecurityUtils.getPkCountry()); - for (TOnlineCard tOnlineCard : tOnlineCardList) { - String bankName = tOnlineCard.getBankName(); - if (StringUtils.isEmpty(bankName)) { - EJdFastBankCode jdFastBankCode = EJdFastBankCode.getEnumByValue(tOnlineCard.getBankCode()); - bankName = (null == jdFastBankCode ? tOnlineCard.getBankCode() : jdFastBankCode.getLabel()); - } - - resultList.add(BindCardVO.builder() - .bindCode(tOnlineCard.getCode()) - // 银行卡只显示后4位 - .bankNo(tOnlineCard.getBankNo().substring(tOnlineCard.getBankNo().length() - 4)) - .bankName(bankName) - .build()); - } - return AjaxResult.success(resultList); - } - - /** - * 快捷绑卡 - * - * @param param - * @return - */ - @RepeatSubmitSimple - @PostMapping("/bind") - public AjaxResult bind(@RequestBody FastBindParam param) { - if (StringUtils.isAnyEmpty(param.getName(), param.getIdCard(), param.getBankNo(), param.getPhone())) { - return AjaxResult.error("缺少参数"); - } - // 银行卡号去空格 - String bankNo = StringUtils.deleteWhitespace(param.getBankNo()); - - EBankCardType eBankCardType = EBankCardType.DEBIT; - String year = ""; - String month = ""; - if (StringUtils.isNotEmpty(param.getValiddate()) && StringUtils.isNotEmpty(param.getCvv2())) { - // 有效期和安全码都不为空,则当作信用卡处理 - eBankCardType = EBankCardType.CREDIT; - - if (param.getValiddate().length() != 4) { - return AjaxResult.error("有效期格式不正确"); - } else { - year = param.getValiddate().substring(0, 2); - month = param.getValiddate().substring(2, 4); - } - if (param.getCvv2().length() != 3 && param.getCvv2().length() != 4) { - return AjaxResult.error("安全码格式不正确"); - } - } - - // 当前用户 - Long userId = SecurityUtils.getUserId(); - // 所属国家 - Integer pkCountry = SecurityUtils.getPkCountry(); - - TOnlineCard checkCard = itOnlineCardService.checkUserBankExist(userId, bankNo, jdPayConfig.getCustomerNum(), pkCountry); - if (checkCard != null) { - return AjaxResult.error("已经绑定过该卡,不能重复绑定"); - } - - // 绑卡编号 - String bindCode = CommonUtil.createSerialNumber(EOrderPrefix.THIRD_CODE); - - try { - JdFastBindDTO jdFastBindDTO = JdFastBindDTO.builder() - // 商户编号 - .customerNum(jdPayConfig.getCustomerNum()) - .userId(userId.toString()) - .requestNum(bindCode) - .payerName(param.getName()) - .idCardType(JdPayConstants.ID_CARD_TYPE) - // 证件号码 - .idCardNo(JdPayUtil.encrypt(param.getIdCard(), JdPayUtil.getAesKey(jdPayConfig.getSecretKey()))) - // 银行卡号 - .cardNo(JdPayUtil.encrypt(bankNo, JdPayUtil.getAesKey(jdPayConfig.getSecretKey()))) - // 预留手机号 - .phone(JdPayUtil.encrypt(param.getPhone(), JdPayUtil.getAesKey(jdPayConfig.getSecretKey()))) - .year(year) - .month(month) - .cvv2(param.getCvv2()) - .build(); - String body = JSONUtil.toJsonStr(jdFastBindDTO); - - log.info("京东快捷绑卡请求参数: {}", body); - - String postResult = JdPayUtil.requestOrder(JdPayConstants.METHOD_BIND_CARD, body, jdPayConfig.getSecretKey(), jdPayConfig.getAccessKey()); - - log.info("京东快捷绑卡返回数据: {}", postResult); - - // 返回结果 - JdFastBindResult fastBindResult = JSONUtil.toBean(postResult, JdFastBindResult.class); - - if (fastBindResult.isSuccess() && JdPayConstants.RESULT_SUCCESS.equals(fastBindResult.getCode())) { - // 返回成功 - // 插入银行卡明细表 - TOnlineCard tOnlineCard = new TOnlineCard(); - tOnlineCard.setCode(bindCode); - tOnlineCard.setBindType(eBankCardType.getValue()); - tOnlineCard.setName(param.getName()); - tOnlineCard.setIdCard(param.getIdCard()); - tOnlineCard.setBankNo(bankNo); - tOnlineCard.setPhone(param.getPhone()); - tOnlineCard.setCustomerNum(jdPayConfig.getCustomerNum()); - tOnlineCard.setValiddate(param.getValiddate()); - tOnlineCard.setCvv2(param.getCvv2()); - tOnlineCard.setPkCreator(userId); - tOnlineCard.setPkCountry(pkCountry); - if (itOnlineCardService.save(tOnlineCard)) { - return AjaxResult.success("", bindCode); - } else { - log.error("京东快捷绑卡入库失败"); - } - } else { - log.error("京东快捷绑卡返回失败! msg: {}", fastBindResult.getMsg()); - return AjaxResult.error(fastBindResult.getMsg()); - } - } catch (Exception e) { - log.error("京东快捷绑卡处理异常!", e); - } - return AjaxResult.error(TransactionUtils.getContent(CommonMsgConstants.OPERATION_FAILED_FLUSH)); - } - - /** - * 绑卡确认 - * - * @param param - * @return - */ - @RepeatSubmitSimple - @PostMapping("/bind-confirm") - public AjaxResult bindConfirm(@RequestBody FastBindConfirmParam param) { - if (StringUtils.isAnyEmpty(param.getBindCode(), param.getSmsCode())) { - return AjaxResult.error("缺少参数"); - } - - // 当前用户 - Long userId = SecurityUtils.getUserId(); - - TOnlineCard tOnlineCard = itOnlineCardService.queryCardByCode(param.getBindCode(), userId, jdPayConfig.getCustomerNum(), SecurityUtils.getPkCountry()); - if (null == tOnlineCard) { - return AjaxResult.error("用户未绑定该银行卡"); - } - - if (EBindStatus.BIND.getValue() == tOnlineCard.getBindStatus()) { - // 如果已经绑定成功,则直接返回 - return AjaxResult.success(); - } - - try { - JdFastBindConfirmDTO jdFastBindConfirmDTO = JdFastBindConfirmDTO.builder() - // 商户编号 - .customerNum(jdPayConfig.getCustomerNum()) - .requestNum(param.getBindCode()) - .validateCode(param.getSmsCode()) - .build(); - String body = JSONUtil.toJsonStr(jdFastBindConfirmDTO); - - log.info("京东绑卡确认请求参数: {}", body); - - String postResult = JdPayUtil.requestOrder(JdPayConstants.METHOD_CONFIRM_BIND, body, jdPayConfig.getSecretKey(), jdPayConfig.getAccessKey()); - - log.info("京东绑卡确认返回数据: {}", postResult); - - // 返回结果 - JdFastBindConfirmResult fastBindConfirmResult = JSONUtil.toBean(postResult, JdFastBindConfirmResult.class); - - if (fastBindConfirmResult.isSuccess() && JdPayConstants.RESULT_SUCCESS.equals(fastBindConfirmResult.getCode())) { - // 返回成功 - - EJdFastBankCode eJdFastBankCode = EJdFastBankCode.getEnumByValue(fastBindConfirmResult.getBankCode()); - // 校验银行卡是否支持支付 - if (null == eJdFastBankCode) { - // 更新银行卡明细表 - tOnlineCard.setBindId(fastBindConfirmResult.getBindId()); - tOnlineCard.setBindStatus(EBindStatus.UN_BIND.getValue()); - tOnlineCard.setPkModified(userId); - tOnlineCard.setModifiedTime(new Date()); - itOnlineCardService.updateBankInfo(tOnlineCard); - return AjaxResult.error("暂不支持该银行服务"); - } - - // 更新银行卡明细表 - tOnlineCard.setBindId(fastBindConfirmResult.getBindId()); - tOnlineCard.setBindStatus(EBindStatus.BIND.getValue()); - tOnlineCard.setBankCode(fastBindConfirmResult.getBankCode()); - tOnlineCard.setBankName(eJdFastBankCode.getLabel()); - tOnlineCard.setPkModified(userId); - tOnlineCard.setModifiedTime(new Date()); - if (itOnlineCardService.updateBankInfo(tOnlineCard) > 0) { - return AjaxResult.success(); - } else { - log.error("京东绑卡确认入库失败"); - } - } else { - log.error("京东绑卡确认返回失败! msg: {}", fastBindConfirmResult.getMsg()); - return AjaxResult.error(fastBindConfirmResult.getMsg()); - } - } catch (Exception e) { - log.error("京东绑卡确认处理异常!", e); - } - return AjaxResult.error("绑卡失败,请刷新后重试"); - } - - /** - * 确认支付 - * - * @param param - * @return - */ - @RepeatSubmitSimple - @PostMapping("/pay-confirm") - public AjaxResult payConfirm(@RequestBody FastPayOrderParam param) { - if (StringUtils.isAnyEmpty(param.getBindCode(), param.getOrderCode(), param.getSmsCode())) { - return AjaxResult.error("缺少参数"); - } - - try { - // 查询用户绑卡信息 - TOnlineCard tOnlineCard = itOnlineCardService.queryCardByCode(param.getBindCode(), SecurityUtils.getUserId(), jdPayConfig.getCustomerNum(), SecurityUtils.getPkCountry()); - if (null == tOnlineCard) { - return AjaxResult.error("用户未绑定该银行卡"); - } - - // 查询需要流水号 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("BUSINESS_CODE", param.getOrderCode()); - queryWrapper.eq("PAY_CHANNEL", EPayChannel.JD.getValue()); - queryWrapper.eq("PAY_TYPE", EPayType.BANK_CARD.getValue()); - queryWrapper.eq("PK_CREATOR", SecurityUtils.getUserId()); - TOnlinePayment tOnlinePayment = itOnlinePaymentService.getOne(queryWrapper); - if (EPayStatus.PAID.getValue() == tOnlinePayment.getPayStatus()) { - return AjaxResult.error("该订单已支付"); - } - - JdFastConfirmDTO jdFastDTO = JdFastConfirmDTO.builder() - // 商户编号 - .customerNum(jdPayConfig.getCustomerNum()) - // 商户订单号 - .requestNum(tOnlinePayment.getOriginalOrder()) - // 短信验证码 - .validateCode(param.getSmsCode()) - .build(); - String body = JSONUtil.toJsonStr(jdFastDTO); - - log.info("京东银行卡确认支付请求参数: {}", body); - - String postResult = JdPayUtil.requestOrder(JdPayConstants.METHOD_CONFIRM_ORDER, body, jdPayConfig.getSecretKey(), jdPayConfig.getAccessKey()); - - log.info("京东银行卡确认支付返回数据: {}", postResult); - - // 返回结果 - JdFastConfirmResult fastConfirmResult = JSONUtil.toBean(postResult, JdFastConfirmResult.class); - - if (fastConfirmResult.isSuccess() && JdPayConstants.RESULT_SUCCESS_CODE.equals(fastConfirmResult.getCode())) { - // 返回成功 - if (JdPayConstants.ORDER_SUCCESS.equals(fastConfirmResult.getOrderStatus()) - || JdPayConstants.ORDER_INT.equals(fastConfirmResult.getOrderStatus())) { - // 返回订单状态为 交易处理 或 成功, 则返回请求成功 - return AjaxResult.success(); - } - } - log.error("京东银行卡确认支付失败: {}", fastConfirmResult.getMsg()); - - if (JdPayConstants.RESULT_FAIL_CODE_6.equals(fastConfirmResult.getCode())) { - return AjaxResult.error("支付失败," + fastConfirmResult.getMsg()); - } - } catch (Exception e) { - log.error("京东银行卡确认支付处理异常!", e); - } - return AjaxResult.error("支付失败,请刷新后重试"); - } - - /** - * 银行卡解绑 - * - * @param param - * @return - */ - @PostMapping("/unbind") - public AjaxResult unbind(@RequestBody FastUnBindParam param) { - if (StringUtils.isEmpty(param.getBindCode())) { - return AjaxResult.error("缺少参数"); - } - - // 当前用户 - Long userId = SecurityUtils.getUserId(); - - TOnlineCard tOnlineCard = itOnlineCardService.queryCardByCode(param.getBindCode(), userId, jdPayConfig.getCustomerNum(), SecurityUtils.getPkCountry()); - if (null == tOnlineCard) { - return AjaxResult.error("用户未绑定该银行卡"); - } - - try { - JdFastUnBindDTO jdFastUnBindDTO = JdFastUnBindDTO.builder() - // 商户编号 - .customerNum(jdPayConfig.getCustomerNum()) - .userId(userId.toString()) - .requestNum(tOnlineCard.getCode()) - .bindId(tOnlineCard.getBindId()) - .build(); - String body = JSONUtil.toJsonStr(jdFastUnBindDTO); - - log.info("京东解绑请求参数: {}", body); - - String postResult = JdPayUtil.requestOrder(JdPayConstants.METHOD_UNBIND, body, jdPayConfig.getSecretKey(), jdPayConfig.getAccessKey()); - - log.info("京东解绑返回数据: {}", postResult); - - // 返回结果 - JdFastUnBindResult fastUnBindResult = JSONUtil.toBean(postResult, JdFastUnBindResult.class); - - if (fastUnBindResult.isSuccess() && JdPayConstants.RESULT_SUCCESS.equals(fastUnBindResult.getCode())) { - // 返回成功 - - // 解绑银行卡 - itOnlineCardService.unBindBank(tOnlineCard.getCode(), userId, jdPayConfig.getCustomerNum()); - return AjaxResult.success(); - } else { - log.error("京东解绑失败"); - } - } catch (Exception e) { - log.error("京东解绑处理异常!", e); - } - return AjaxResult.error("解绑失败,请刷新后重试"); - } - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/api/JdRefundController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/api/JdRefundController.java deleted file mode 100644 index 7bb9788f..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/api/JdRefundController.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.hzs.third.pay.controller.api; - -import com.hzs.common.core.enums.EPayChannel; -import com.hzs.common.core.enums.EPayStatus; -import com.hzs.common.core.utils.StringUtils; -import com.hzs.common.core.web.domain.AjaxResult; -import com.hzs.common.domain.third.pay.TOnlinePayment; -import com.hzs.common.security.utils.SecurityUtils; -import com.hzs.third.pay.controller.base.PayBaseController; -import com.hzs.third.pay.dto.RefundDTO; -import com.hzs.third.pay.param.PayParam; -import com.hzs.third.pay.service.IRefundService; -import com.hzs.third.pay.service.ITOnlinePaymentService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * @Description: 京东退款控制器 - * @Author: jiang chao - * @Time: 2023/8/17 15:11 - * @Classname: JdRefundController - * @PackageName: com.hzs.third.pay.controller.api - */ -@Slf4j -@RestController -@RequestMapping("/jd-refund") -public class JdRefundController extends PayBaseController { - - @Autowired - private IRefundService iRefundService; - @Autowired - private ITOnlinePaymentService itOnlinePaymentService; - - /** - * 京东退款接口 - * - * @param param - * @return - */ - @PostMapping("/refund") - public AjaxResult refund(@RequestBody PayParam param) { - if (null == param.getBusinessType() || StringUtils.isEmpty(param.getBusinessCode())) { - // 缺少参数 - return AjaxResult.error("缺少参数"); - } - // 查询在线支付明细 - TOnlinePayment tOnlinePayment = itOnlinePaymentService.queryByBusiness(param.getBusinessType(), param.getBusinessCode(), SecurityUtils.getPkCountry()); - if (null == tOnlinePayment || EPayStatus.UNPAID.getValue() == tOnlinePayment.getPayStatus()) { - // 在线支付明细为空 或者 未支付成功,则不能进行退款 - return AjaxResult.error("订单不存在或未支付成功,不能进行退款"); - } - // 获取支付渠道 - EPayChannel ePayChannel = EPayChannel.getEnumByValue(tOnlinePayment.getPayChannel()); - if (null == ePayChannel) { - return AjaxResult.error("订单支付信息有误,不能进行退款"); - } - - try { - // 京东收银台退款处理 - String str = iRefundService.jdCashRefundHandle(RefundDTO.builder() - .businessType(param.getBusinessType()) - .businessCode(param.getBusinessCode()) - .refundAmount(tOnlinePayment.getPayMoney()) - .userId(SecurityUtils.getUserId()) - .pkCountry(SecurityUtils.getPkCountry()) - .build(), - tOnlinePayment); - // 京东银行卡退款处理 -- 旧 -// String str = iRefundService.jdRefundHandle(RefundDTO.builder() -// .businessType(param.getBusinessType()) -// .businessCode(param.getBusinessCode()) -// .refundAmount(tOnlinePayment.getPayMoney()) -// .userId(SecurityUtils.getUserId()) -// .pkCountry(SecurityUtils.getPkCountry()) -// .build(), -// tOnlinePayment); - if (null == str) { - return AjaxResult.success(); - } - return AjaxResult.error("退款失败:" + str); - } catch (Exception e) { - log.error("调用京东退款处理返回异常!", e); - return AjaxResult.error("退款异常,请刷新后重试"); - } - } - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/api/PayController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/api/PayController.java index 2c03f416..e07553dc 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/api/PayController.java +++ b/bd-third/src/main/java/com/hzs/third/pay/controller/api/PayController.java @@ -28,11 +28,7 @@ import java.math.BigDecimal; import java.util.Date; /** - * @Description: 统一支付控制器 - * @Author: jiang chao - * @Time: 2022/12/27 17:35 - * @Classname: PayController - * @PackageName: com.hzs.third.pay.controller + * 统一支付控制器 */ @Slf4j @RestController @@ -44,12 +40,6 @@ public class PayController { @Autowired private ISandPayService iSandPayService; @Autowired - private IJdPayService iJdPayService; - @Autowired - private IWeChatPayService iWeChatPayService; - @Autowired - private IAliPayService iAliPayService; - @Autowired private IAllInPayService iAllInPayService; @Autowired private IAdaPayService iAdaPayService; @@ -217,65 +207,6 @@ public class PayController { // break; // } // break; -// } - break; - case JD: - // 京东 - switch (payType) { -// case WECHAT: -// case ALIPAY: -// // 微信、支付宝 扫码支付 -// payResult = iJdPayService.scanPay(onlinePayment); -// break; -// case BANK_CARD: -// // 银行卡支付 -// if (StringUtils.isEmpty(payParam.getBindCode())) { -// return AjaxResult.error("银行绑卡编号不能为空"); -// } -// payResult = iJdPayService.bankPay(onlinePayment, payParam.getBindCode()); -// break; - case BANK_ONLINE: - // 网上银行(收银台) - payResult = iJdPayService.cashRegister(onlinePayment, dataSource); - break; - default: - } - break; - case WECHAT: - // 微信 - switch (dataSource) { -// case PC: -// // PC端扫码支付 -// payResult = iWeChatPayService.prePayScan(onlinePayment); -// break; -// case H5: -// // H5端调起微信应用 -// payResult = iWeChatPayService.prePayH5(onlinePayment); -// break; - case APP: - // APP调起微信支付 - payResult = iWeChatPayService.prePayAPP(onlinePayment); -// case WECHAT_APPLET_PROGRAM: -// // 微信小程序 -// if (StringUtils.isEmpty(openId)) { -// return AjaxResult.error("用户openId不能为空"); -// } -// resultR = iWeChatPayService.prePayApplet(onlinePayment, openId); -// break; - default: - } - break; - case ALI: - // 阿里 -// switch (dataSource) { -// case PC: -// // PC端扫码支付 -// payResult = iAliPayService.prePayScan(onlinePayment); -// break; -// case H5: -// // H5端调起支付宝应用 -// payResult = iAliPayService.prePayH5(onlinePayment); -// break; // } break; case ALLIN: @@ -429,23 +360,6 @@ public class PayController { // 各支付方式: true=显示,false=隐藏 -// // 京东银行卡 -// String pay4 = String.format(PayConfigConstants.PAY_CONFIG_4, pkCountry); -// if (redisTemplate.hasKey(pay4)) { -// payConfigVO.setPay4((Boolean) redisTemplate.opsForValue().get(pay4)); -// } - - // 京东收银台(H5) - String pay5 = String.format(PayConfigConstants.PAY_CONFIG_5, pkCountry); - if (redisTemplate.hasKey(pay5)) { - payConfigVO.setPay5((Boolean) redisTemplate.opsForValue().get(pay5)); - } - // 京东收银台(PC) - String pay6 = String.format(PayConfigConstants.PAY_CONFIG_6, pkCountry); - if (redisTemplate.hasKey(pay6)) { - payConfigVO.setPay6((Boolean) redisTemplate.opsForValue().get(pay6)); - } - // 宝付微信 String pay11 = String.format(PayConfigConstants.PAY_CONFIG_11, pkCountry); if (redisTemplate.hasKey(pay11)) { @@ -468,12 +382,6 @@ public class PayController { payConfigVO.setPay15((Boolean) redisTemplate.opsForValue().get(pay15)); } -// // 微信APP -// String pay20 = String.format(PayConfigConstants.PAY_CONFIG_20, pkCountry); -// if (redisTemplate.hasKey(pay20)) { -// payConfigVO.setPay20((Boolean) redisTemplate.opsForValue().get(pay20)); -// } - // 通联微信 String pay32 = String.format(PayConfigConstants.PAY_CONFIG_32, pkCountry); if (redisTemplate.hasKey(pay32)) { diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/base/JdBaseController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/base/JdBaseController.java deleted file mode 100644 index a339dbe4..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/base/JdBaseController.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.hzs.third.pay.controller.base; - -import cn.hutool.crypto.SecureUtil; - -import javax.servlet.http.HttpServletRequest; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStreamReader; - -/** - * @Description: 京东基础控制器 - * @Author: jiang chao - * @Time: 2022/12/27 17:47 - * @Classname: JdBaseController - * @PackageName: com.hzs.third.pay.controller.base - */ -public class JdBaseController { - - /** - * 获取请求体 - * - * @param request - * @return - * @throws Exception - */ - protected String getRequestBody(HttpServletRequest request) throws IOException { - BufferedReader br = null; - try { - br = new BufferedReader(new InputStreamReader(request.getInputStream())); - String line; - StringBuilder sb = new StringBuilder(); - while ((line = br.readLine()) != null) { - sb.append(line); - } - return sb.toString(); - } finally { - if (null != br) { - try { - br.close(); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - } - - /** - * 校验token - * - * @param request - * @param reqBody - * @param secretKey - * @return - */ - protected boolean checkToken(HttpServletRequest request, String reqBody, String secretKey) { - // SHA1 加密串 - String shaStr = "secretKey=" + secretKey + - "×tamp=" + request.getHeader("timestamp") + - "&body=" + reqBody; - String tokenCheck = SecureUtil.sha1(shaStr).toUpperCase(); - return tokenCheck.equals(request.getHeader("token")); - } - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/base/PayBaseController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/base/PayBaseController.java index 0c87832d..42040adc 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/base/PayBaseController.java +++ b/bd-third/src/main/java/com/hzs/third/pay/controller/base/PayBaseController.java @@ -10,11 +10,7 @@ import lombok.extern.slf4j.Slf4j; import java.util.TreeMap; /** - * @Description: 支付基础控制器 - * @Author: jiang chao - * @Time: 2023/2/16 14:01 - * @Classname: FastPayController - * @PackageName: com.hzs.third.pay.controller.base + * 支付基础控制器 */ @Slf4j public class PayBaseController extends BaseController { diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/manage/OnlinePayConfigController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/manage/OnlinePayConfigController.java index c0395ee9..3dee74d0 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/manage/OnlinePayConfigController.java +++ b/bd-third/src/main/java/com/hzs/third/pay/controller/manage/OnlinePayConfigController.java @@ -14,11 +14,7 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.*; /** - * @Description: 在线支付配置 - * @Author: jiang chao - * @Time: 2023/3/23 16:15 - * @Classname: OnlinePayConfigController - * @PackageName: com.hzs.third.pay.controller.manage + * 在线支付配置 */ @RestController @RequestMapping("/manage/online-config") @@ -40,21 +36,6 @@ public class OnlinePayConfigController { OnlinePayConfigVO payConfigVO = new OnlinePayConfigVO(); // 各支付方式: true=显示,false=隐藏 -// // 京东银行卡 -// String pay4 = String.format(PayConfigConstants.PAY_CONFIG_4, pkCountry); -// if (redisTemplate.hasKey(pay4)) { -// payConfigVO.setPay4((Boolean) redisTemplate.opsForValue().get(pay4)); -// } - // 京东收银台(H5) - String pay5 = String.format(PayConfigConstants.PAY_CONFIG_5, pkCountry); - if (redisTemplate.hasKey(pay5)) { - payConfigVO.setPay5((Boolean) redisTemplate.opsForValue().get(pay5)); - } - // 京东收银台(PC) - String pay6 = String.format(PayConfigConstants.PAY_CONFIG_6, pkCountry); - if (redisTemplate.hasKey(pay6)) { - payConfigVO.setPay6((Boolean) redisTemplate.opsForValue().get(pay6)); - } // 宝付微信 String pay11 = String.format(PayConfigConstants.PAY_CONFIG_11, pkCountry); @@ -78,12 +59,6 @@ public class OnlinePayConfigController { payConfigVO.setPay15((Boolean) redisTemplate.opsForValue().get(pay15)); } -// // 微信APP -// String pay20 = String.format(PayConfigConstants.PAY_CONFIG_20, pkCountry); -// if (redisTemplate.hasKey(pay20)) { -// payConfigVO.setPay20((Boolean) redisTemplate.opsForValue().get(pay20)); -// } - // 通联微信 String pay32 = String.format(PayConfigConstants.PAY_CONFIG_32, pkCountry); if (redisTemplate.hasKey(pay32)) { @@ -121,18 +96,12 @@ public class OnlinePayConfigController { public AjaxResult saveConfig(@RequestBody OnlinePayConfigParam param) { Integer pkCountry = SecurityUtils.getPkCountry(); -// redisTemplate.opsForValue().set(String.format(PayConfigConstants.PAY_CONFIG_4, pkCountry), param.getPay4()); - redisTemplate.opsForValue().set(String.format(PayConfigConstants.PAY_CONFIG_5, pkCountry), param.getPay5()); - redisTemplate.opsForValue().set(String.format(PayConfigConstants.PAY_CONFIG_6, pkCountry), param.getPay6()); - redisTemplate.opsForValue().set(String.format(PayConfigConstants.PAY_CONFIG_11, pkCountry), param.getPay11()); redisTemplate.opsForValue().set(String.format(PayConfigConstants.PAY_CONFIG_12, pkCountry), param.getPay12()); redisTemplate.opsForValue().set(String.format(PayConfigConstants.PAY_CONFIG_13, pkCountry), param.getPay13()); redisTemplate.opsForValue().set(String.format(PayConfigConstants.PAY_CONFIG_15, pkCountry), param.getPay15()); -// redisTemplate.opsForValue().set(String.format(PayConfigConstants.PAY_CONFIG_20, pkCountry), param.getPay20()); - redisTemplate.opsForValue().set(String.format(PayConfigConstants.PAY_CONFIG_32, pkCountry), param.getPay32()); redisTemplate.opsForValue().set(String.format(PayConfigConstants.PAY_CONFIG_33, pkCountry), param.getPay33()); diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/manage/OnlinePaymentController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/manage/OnlinePaymentController.java index 29b2e336..038fb446 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/manage/OnlinePaymentController.java +++ b/bd-third/src/main/java/com/hzs/third/pay/controller/manage/OnlinePaymentController.java @@ -33,11 +33,7 @@ import java.util.List; import java.util.Map; /** - * @Description: 在线支付明细 - * @Author: jiang chao - * @Time: 2023/3/23 11:44 - * @Classname: TOnlinePaymentController - * @PackageName: com.hzs.third.pay.controller.manage + * 在线支付明细 */ @RestController @RequestMapping("/manage/online-payment") diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/manage/OnlineRefundController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/manage/OnlineRefundController.java index 4c024902..0e7b33af 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/manage/OnlineRefundController.java +++ b/bd-third/src/main/java/com/hzs/third/pay/controller/manage/OnlineRefundController.java @@ -27,11 +27,7 @@ import java.util.List; import java.util.Map; /** - * @Description: 退款明细 - * @Author: jiang chao - * @Time: 2023/8/16 18:50 - * @Classname: OnlineRefundController - * @PackageName: com.hzs.third.pay.controller.manage + * 退款明细 */ @RestController @RequestMapping("/manage/online-refund") diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/notify/AdaPayNotifyController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/notify/AdaPayNotifyController.java index bb73cdd4..64a91536 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/notify/AdaPayNotifyController.java +++ b/bd-third/src/main/java/com/hzs/third/pay/controller/notify/AdaPayNotifyController.java @@ -27,11 +27,7 @@ import java.util.HashMap; import java.util.List; /** - * @Description: 汇付支付回调 - * @Author: jiang chao - * @Time: 2023/3/22 16:58 - * @Classname: AdaPayNotifyController - * @PackageName: com.hzs.third.pay.controller.notify + * 汇付支付回调 */ @Slf4j @RestController diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/notify/AdaRefundNotifyController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/notify/AdaRefundNotifyController.java index c4065684..b288a390 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/notify/AdaRefundNotifyController.java +++ b/bd-third/src/main/java/com/hzs/third/pay/controller/notify/AdaRefundNotifyController.java @@ -20,11 +20,7 @@ import java.util.Date; import java.util.HashMap; /** - * @Description: 汇付退款回调控制器 - * @Author: jiang chao - * @Time: 2023/8/17 13:58 - * @Classname: AdaRefundNotifyController - * @PackageName: com.hzs.third.pay.controller.notify + * 汇付退款回调控制器 */ @Slf4j @RestController diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/notify/AliPayNotifyController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/notify/AliPayNotifyController.java deleted file mode 100644 index a90f3d89..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/notify/AliPayNotifyController.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.hzs.third.pay.controller.notify; - -import com.alipay.api.internal.util.AlipaySignature; -import com.hzs.common.core.constant.Constants; -import com.hzs.common.core.enums.EPayChannel; -import com.hzs.common.core.utils.DateUtils; -import com.hzs.third.pay.config.AliPayConfig; -import com.hzs.third.pay.constants.AliPayConstants; -import com.hzs.third.pay.service.IPayService; -import com.ijpay.alipay.AliPayApi; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.servlet.http.HttpServletRequest; -import java.math.BigDecimal; -import java.util.Date; -import java.util.Map; - -/** - * 阿里支付 - */ -@Slf4j -@RestController -@RequestMapping("/ali") -public class AliPayNotifyController { - - @Autowired - private AliPayConfig aliPayConfig; - @Autowired - private IPayService iPayService; - - /** - * 阿里支付回调 - * - * @param request - */ - @PostMapping("/notify") - public String notify(HttpServletRequest request) { - try { - Map body = AliPayApi.toMap(request); - - log.info("阿里支付回调! body: {}", body); - - if (AlipaySignature.rsaCheckV1(body, aliPayConfig.getPublicKey(), Constants.UTF8, aliPayConfig.getSignType())) { - // 签名校验通过 - if (AliPayConstants.SUCCESS.equals(body.get("trade_status"))) { - // 交易成功 - - // 支付流水号 - String payNumber = body.get("trade_no"); - // 支付完成时间 - Date payTime = DateUtils.parseDate(body.get("gmt_payment"), DateUtils.YAMMERERS); - // 支付金额(由分转元) - BigDecimal payMoney = new BigDecimal(Integer.parseInt(body.get("total_amount"))).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_UP); - - // 支付扩展类型 - String type = body.get("passback_params"); - - // 回调订单编号 - String thirdOrderCode = body.get("out_trade_no"); - // 支付信息编号 - String orderCode = thirdOrderCode; - // 处理订单号以及扩展类型 - if (orderCode.indexOf("-") > 0) { - // 带有分隔,需要处理 - orderCode = orderCode.split("-")[0]; - } - - // 支付后续业务处理 - if (iPayService.notifyHandle(type, orderCode, thirdOrderCode, payNumber, payTime, payMoney, EPayChannel.ALI, "")) { - return AliPayConstants.RETURN_SUCCESS; - } - } else { - log.error("阿里支付回调交易失败"); - } - } else { - log.error("阿里支付回调签名验证失败!"); - } - } catch (Exception e) { - log.error("阿里支付回调处理异常", e); - } - return AliPayConstants.RETURN_FAIL; - } - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/notify/BaoFuPayNotifyController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/notify/BaoFuPayNotifyController.java index fabf92ff..b09c617a 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/notify/BaoFuPayNotifyController.java +++ b/bd-third/src/main/java/com/hzs/third/pay/controller/notify/BaoFuPayNotifyController.java @@ -24,11 +24,7 @@ import java.util.Map; import java.util.TreeMap; /** - * @Description: 宝付支付回调控制器 - * @Author: jiang chao - * @Time: 2023/2/10 10:31 - * @Classname: BaoFuNotifyController - * @PackageName: com.hzs.web.baofu.controller + * 宝付支付回调控制器 */ @Slf4j @RestController diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/notify/BaoFuRefundNotifyController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/notify/BaoFuRefundNotifyController.java index 29709f06..b560dc71 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/notify/BaoFuRefundNotifyController.java +++ b/bd-third/src/main/java/com/hzs/third/pay/controller/notify/BaoFuRefundNotifyController.java @@ -24,11 +24,7 @@ import java.util.Map; import java.util.TreeMap; /** - * @Description: 宝付退款回调控制器 - * @Author: jiang chao - * @Time: 2023/8/16 16:09 - * @Classname: BaoFuRefundNotifyController - * @PackageName: com.hzs.third.pay.controller.notify + * 宝付退款回调控制器 */ @Slf4j @RestController diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/notify/HuiFuNotifyController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/notify/HuiFuNotifyController.java index f5735163..948d62ed 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/notify/HuiFuNotifyController.java +++ b/bd-third/src/main/java/com/hzs/third/pay/controller/notify/HuiFuNotifyController.java @@ -20,11 +20,7 @@ import java.math.BigDecimal; import java.util.Date; /** - * @Description: 汇付新支付回调控制器 - * @Author: jiang chao - * @Time: 2024/12/5 10:34 - * @Classname: HuiFuNotifyController - * @PackageName: com.hzs.third.pay.controller.notify + * 汇付新支付回调控制器 */ @Slf4j @RestController diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/notify/JdPayNotifyController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/notify/JdPayNotifyController.java deleted file mode 100644 index c8222d48..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/notify/JdPayNotifyController.java +++ /dev/null @@ -1,210 +0,0 @@ -package com.hzs.third.pay.controller.notify; - -import cn.hutool.json.JSONUtil; -import com.hzs.common.core.enums.EPayChannel; -import com.hzs.common.core.utils.DateUtils; -import com.hzs.third.pay.config.JdPayConfig; -import com.hzs.third.pay.constants.JdPayConstants; -import com.hzs.third.pay.controller.base.JdBaseController; -import com.hzs.third.pay.dto.jd.JdPayNotifyBody; -import com.hzs.third.pay.jdpay.dto.JdPayTradeSuccessNotify; -import com.hzs.third.pay.jdpay.sdk.JdPay; -import com.hzs.third.pay.jdpay.util.GsonUtil; -import com.hzs.third.pay.service.IPayService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import java.math.BigDecimal; -import java.util.Date; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Map; - -/** - * 京东支付回调控制器 - */ -@Slf4j -@RestController -@RequestMapping("/jd") -public class JdPayNotifyController extends JdBaseController { - - @Autowired - private JdPayConfig jdPayConfig; - @Autowired - private IPayService iPayService; - - /** - * 京东支付回调 - * - * @param request - */ - @PostMapping("/notify") - public String notify(HttpServletRequest request) { - try { - String reqBody = this.getRequestBody(request); - log.info("京东支付回调! body: {}", reqBody); - - if (this.checkToken(request, reqBody, jdPayConfig.getSecretKey())) { - // 签名校验通过 - JdPayNotifyBody notifyBody = JSONUtil.toBean(reqBody, JdPayNotifyBody.class); - - // 支付流水号 - String payNumber = notifyBody.getOrderNum(); - // 支付时间 - Date payTime = DateUtils.parseDate(notifyBody.getCompleteTime(), DateUtils.YYYY_MM_DD_HH_MM_SS); - // 支付金额 - BigDecimal payMoney = new BigDecimal(notifyBody.getOrderAmount()); - - // 支付扩展类型 - String type = notifyBody.getExtraInfo(); - - // 回调订单编号 - String thirdOrderCode = notifyBody.getRequestNum(); - // 支付信息编号 - String orderCode = thirdOrderCode; - // 处理订单号以及扩展类型 - if (orderCode.indexOf("-") > 0) { - // 带有分隔,需要处理 - orderCode = orderCode.split("-")[0]; - } - - // 支付后续业务处理 - if (iPayService.notifyHandle(type, orderCode, thirdOrderCode, payNumber, payTime, payMoney, EPayChannel.JD, "")) { - return JdPayConstants.RETURN_SUCCESS; - } - } else { - log.error("京东支付回调签名校验失败!"); - } - } catch (Exception e) { - log.error("京东支付回调处理异常", e); - } - return JdPayConstants.RETURN_FAIL; - } - - - @Resource - private JdPay jdPay; - - /** - * 京东收银台处理成功返回 - */ - private static final String SUCCESS = "SUCCESS"; - /** - * 京东收银台处理失败返回 - */ - private static final String ERROR = "ERROR"; - - /** - * 京东收银台异步支付回调 - * - * @param reqText - * @return 成功返回"SUCCESS", 失败返回"ERROR",京东支付会再次发起通知,通知频次见接口文档。 - */ - @PostMapping("/trade-notify") - public String tradeNotify(@RequestBody String reqText) { - log.info("京东收银台支付异步回调! reqText: {}", reqText); - try { - // 验证签名与解密 - String interData = jdPay.verifyResponse(reqText); - JdPayTradeSuccessNotify successNotify = GsonUtil.fromJson(interData, JdPayTradeSuccessNotify.class); - if (null != successNotify) { - if ("FINI".equals(successNotify.getTradeStatus())) { - // 支付成功处理 - - // 商户订单号 - String payNumber = successNotify.getTradeNo(); - // 渠道流水号 - String channelNumber = ""; - // 支付完成时间 - Date payTime = DateUtils.parseDateOne(successNotify.getFinishDate(), DateUtils.YAMMERERS); - // 支付扩展类型 - String type = successNotify.getReturnParams(); - - // 回调订单编号 - String thirdOrderCode = successNotify.getOutTradeNo(); - // 订单编号 - String orderCode = thirdOrderCode; - - // 订单金额 - int tradeAmount = Integer.parseInt(successNotify.getTradeAmount()); - BigDecimal payMoney = new BigDecimal(tradeAmount).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_UP); - - // 支付后续业务处理 - if (iPayService.notifyHandle(type, orderCode, thirdOrderCode, payNumber, payTime, payMoney, EPayChannel.JD, channelNumber)) { - return SUCCESS; - } - } else { - log.error("京东收银台支付异步回调失败,resultDesc: {}", successNotify.getResultDesc()); - } - } else { - log.error("京东收银台支付异步回调解密为空"); - } - } catch (Exception e) { - log.error("京东收银台支付异步回调异常", e); - } - return ERROR; - } - - - /** - * 京东收银台页面回调 - * - * @param request - * @return - */ - @PostMapping("/sync-notify") - public String syncNotify(HttpServletRequest request) { - // 签名验证逻辑,需要支持添加通知字段不影响结果 - Map respMap = getAllRequestParam(request); - log.info("京东收银台支付页面回调! request: {}", respMap); - - try { - if (jdPay.verifyPageCallBack(respMap)) { - if ("FINI".equals(respMap.get("status"))) { - // todo 支付成功 - - return SUCCESS; - } else if ("WPAR".equals(respMap.get("status"))) { - // todo 支付处理中 - log.error("京东支付页面回调,支付处理中"); - } else { - // todo 支付失败 - log.error("京东支付页面回调,支付失败"); - } - } else { - // 签名异常,报错 - log.error("京东收银台支付页面回调!签名异常!"); - } - } catch (Exception e) { - log.error("京东支付页面回调参数", e); - } - return ERROR; - } - - /** - * 获取客户端请求参数中所有的信息 - */ - private Map getAllRequestParam(final HttpServletRequest request) { - Map respMap = new HashMap<>(); - Enumeration temp = request.getParameterNames(); - if (null != temp) { - while (temp.hasMoreElements()) { - String en = (String) temp.nextElement(); - String value = request.getParameter(en); - respMap.put(en, value); - //如果字段的值为空,判断若值为空,则删除这个字段> - if (null == respMap.get(en) || "".equals(respMap.get(en))) { - respMap.remove(en); - } - } - } - return respMap; - } - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/notify/JdRefundNotifyController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/notify/JdRefundNotifyController.java deleted file mode 100644 index f6ff3ea0..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/notify/JdRefundNotifyController.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.hzs.third.pay.controller.notify; - -import cn.hutool.json.JSONUtil; -import com.hzs.common.core.enums.EPayChannel; -import com.hzs.common.core.utils.DateUtils; -import com.hzs.third.pay.config.JdPayConfig; -import com.hzs.third.pay.constants.JdPayConstants; -import com.hzs.third.pay.controller.base.JdBaseController; -import com.hzs.third.pay.jdpay.dto.JdPayRefundSuccessNotify; -import com.hzs.third.pay.jdpay.sdk.JdPay; -import com.hzs.third.pay.jdpay.util.GsonUtil; -import com.hzs.third.pay.service.IRefundService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.annotation.Resource; -import javax.servlet.http.HttpServletRequest; -import java.math.BigDecimal; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -/** - * @Description: 京东退填回调控制器 - * @Author: jiang chao - * @Time: 2023/8/17 15:50 - * @Classname: JdRefundNotifyController - * @PackageName: com.hzs.third.pay.controller.notify - */ -@Slf4j -@RestController -@RequestMapping("/jd-refund") -public class JdRefundNotifyController extends JdBaseController { - - @Autowired - private JdPayConfig jdPayConfig; - @Autowired - private IRefundService iRefundService; - - /** - * 京东退款回调 - * - * @param request - * @return - * @throws Exception - */ - @PostMapping("/notify") - public String refundNotify(HttpServletRequest request) { - try { - String reqBody = this.getRequestBody(request); - log.info("京东退款回调! body: {}", reqBody); - - if (this.checkToken(request, reqBody, jdPayConfig.getSecretKey())) { - // 签名校验通过 - Map dataMap = JSONUtil.toBean(reqBody, HashMap.class); - - // 退款编号 - String refundCode = dataMap.get("refundRequestNum"); - // 京东交易流水号 - String refundNumber = dataMap.get("orderNum"); - // 退款完成时间 - Date finishTime = DateUtils.parseDate(dataMap.get("refundSuccessTime"), DateUtils.YYYY_MM_DD_HH_MM_SS); - // 退款金额 - BigDecimal finishMoney = new BigDecimal(dataMap.get("refundAmount")); - - if (JdPayConstants.ORDER_SUCCESS.equals(dataMap.get("refundStatus"))) { - // 退款成功 - // 退款后续业务处理 - if (iRefundService.notifyHandle(EPayChannel.JD, refundCode, refundNumber, finishTime, finishMoney)) { - return JdPayConstants.RETURN_SUCCESS; - } - } else { - // 退款失败 - log.error("京东退款失败: {}", dataMap.get("failReason")); - - if (iRefundService.notifyErrorHandle(EPayChannel.JD, refundCode, refundNumber, dataMap.get("failReason"))) { - return JdPayConstants.RETURN_SUCCESS; - } - } - } else { - log.error("京东支付回调签名校验失败!"); - } - } catch (Exception e) { - log.error("京东支付回调处理异常", e); - } - return JdPayConstants.RETURN_FAIL; - } - - - @Resource - private JdPay jdPay; - - /** - * 京东收银台处理成功返回 - */ - private static final String SUCCESS = "SUCCESS"; - /** - * 京东收银台处理失败返回 - */ - private static final String ERROR = "ERROR"; - - /** - * 京东收银台退款异步支付回调 - * - * @param reqText - * @return 成功返回"SUCCESS", 失败返回"ERROR",退款通知会再次发起通知,通知频次见接口文档。 - */ - @PostMapping("/trade-notify") - public String tradeNotify(@RequestBody String reqText) { - log.info("京东收银台退款异步回调! reqText: {}", reqText); - try { - // 验证签名与解密 - String interData = jdPay.verifyResponse(reqText); - JdPayRefundSuccessNotify successNotify = GsonUtil.fromJson(interData, JdPayRefundSuccessNotify.class); - if (null != successNotify) { - if ("FINI".equals(successNotify.getTradeStatus())) { - - // 退款编号 - String refundCode = successNotify.getOutTradeNo(); - // 京东交易流水号 - String refundNumber = successNotify.getTradeNo(); - // 退款完成时间 - Date finishTime = DateUtils.parseDate(successNotify.getFinishDate(), DateUtils.YAMMERERS); - // 退款金额 - int tradeAmount = Integer.parseInt(successNotify.getTradeAmount()); - BigDecimal finishMoney = new BigDecimal(tradeAmount).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_UP); - - // 退款后续业务处理 - if (iRefundService.notifyHandle(EPayChannel.JD, refundCode, refundNumber, finishTime, finishMoney)) { - return SUCCESS; - } - } else { - log.error("京东收银台退款异步回调失败,resultDesc: {}", successNotify.getResultDesc()); - } - } else { - log.error("京东收银台退款异步回调解密为空"); - } - } catch (Exception e) { - log.error("京东收银台退款异步回调异常", e); - } - return ERROR; - } - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/notify/SandPayNotifyController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/notify/SandPayNotifyController.java index bc7529c9..7975cb0a 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/notify/SandPayNotifyController.java +++ b/bd-third/src/main/java/com/hzs/third/pay/controller/notify/SandPayNotifyController.java @@ -1,6 +1,5 @@ package com.hzs.third.pay.controller.notify; -import com.alipay.api.internal.util.AlipaySignature; import com.hzs.common.core.constant.Constants; import com.hzs.common.core.enums.EPayChannel; import com.hzs.common.core.utils.DateUtils; @@ -33,65 +32,65 @@ public class SandPayNotifyController { @Autowired private IPayService iPayService; - /** - * 杉德支付回调 - * - * @param request - * @return - */ - @GetMapping("/notify") - public String notify(HttpServletRequest request) { - try { - // 通知传输的编码为UTF-8 - request.setCharacterEncoding(Constants.UTF8); - // 动态遍历获取所有收到的参数,此步非常关键,因为收银宝以后可能会加字段,动态获取可以兼容 - TreeMap body = PayUtil.getParams(request); - - log.info("杉德支付回调! body: {}", body); - - if (AlipaySignature.rsaCheckV2(body, sandPayConfig.getPublicKey(), Constants.UTF8, SandPayConstants.SIGN_TYPE)) { - // 签名校验通过 - if (SandPayConstants.SUCCESS.equals(body.get("trade_status"))) { - // 交易成功 - - // 交易流水号 - String payNumber = body.get("plat_trx_no"); - // 支付完成时间 - Date payTime = DateUtils.parseDateOne(body.get("pay_success_time"), DateUtils.YAMMERERS); - // 支付金额 - BigDecimal payMoney = new BigDecimal(body.get("pay_amount")); - - // 支付扩展类型 - String type = body.get("req_reserved"); - - // 回调订单编号 - String thirdOrderCode = body.get("out_order_no"); - // 订单编号 - String orderCode = thirdOrderCode; - // 处理订单号以及扩展类型 - if (orderCode.indexOf("-") > 0) { - // 带有分隔,需要处理 - orderCode = orderCode.split("-")[0]; - if (StringUtils.isEmpty(type)) { - // H5调起微信、支付宝没有支付扩展参数 - type = orderCode.split("-")[1].substring(0, 1); - } - } - - // 支付后续业务处理 - if (iPayService.notifyHandle(type, orderCode, thirdOrderCode, payNumber, payTime, payMoney, EPayChannel.SAND, "")) { - return SandPayConstants.SUCCESS; - } - } else { - log.error("杉德支付回调交易失败"); - } - } else { - log.error("杉德支付回调签名验证失败!"); - } - } catch (Exception e) { - log.error("杉德支付回调处理异常", e); - } - return SandPayConstants.ERROR; - } +// /** +// * 杉德支付回调 +// * +// * @param request +// * @return +// */ +// @GetMapping("/notify") +// public String notify(HttpServletRequest request) { +// try { +// // 通知传输的编码为UTF-8 +// request.setCharacterEncoding(Constants.UTF8); +// // 动态遍历获取所有收到的参数,此步非常关键,因为收银宝以后可能会加字段,动态获取可以兼容 +// TreeMap body = PayUtil.getParams(request); +// +// log.info("杉德支付回调! body: {}", body); +// +// if (AlipaySignature.rsaCheckV2(body, sandPayConfig.getPublicKey(), Constants.UTF8, SandPayConstants.SIGN_TYPE)) { +// // 签名校验通过 +// if (SandPayConstants.SUCCESS.equals(body.get("trade_status"))) { +// // 交易成功 +// +// // 交易流水号 +// String payNumber = body.get("plat_trx_no"); +// // 支付完成时间 +// Date payTime = DateUtils.parseDateOne(body.get("pay_success_time"), DateUtils.YAMMERERS); +// // 支付金额 +// BigDecimal payMoney = new BigDecimal(body.get("pay_amount")); +// +// // 支付扩展类型 +// String type = body.get("req_reserved"); +// +// // 回调订单编号 +// String thirdOrderCode = body.get("out_order_no"); +// // 订单编号 +// String orderCode = thirdOrderCode; +// // 处理订单号以及扩展类型 +// if (orderCode.indexOf("-") > 0) { +// // 带有分隔,需要处理 +// orderCode = orderCode.split("-")[0]; +// if (StringUtils.isEmpty(type)) { +// // H5调起微信、支付宝没有支付扩展参数 +// type = orderCode.split("-")[1].substring(0, 1); +// } +// } +// +// // 支付后续业务处理 +// if (iPayService.notifyHandle(type, orderCode, thirdOrderCode, payNumber, payTime, payMoney, EPayChannel.SAND, "")) { +// return SandPayConstants.SUCCESS; +// } +// } else { +// log.error("杉德支付回调交易失败"); +// } +// } else { +// log.error("杉德支付回调签名验证失败!"); +// } +// } catch (Exception e) { +// log.error("杉德支付回调处理异常", e); +// } +// return SandPayConstants.ERROR; +// } } diff --git a/bd-third/src/main/java/com/hzs/third/pay/controller/notify/WeChatPayNotifyController.java b/bd-third/src/main/java/com/hzs/third/pay/controller/notify/WeChatPayNotifyController.java deleted file mode 100644 index 7a6536d9..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/controller/notify/WeChatPayNotifyController.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.hzs.third.pay.controller.notify; - -import com.hzs.common.core.enums.EPayChannel; -import com.hzs.common.core.utils.DateUtils; -import com.hzs.third.pay.config.WeChatConfig; -import com.hzs.third.pay.service.IPayService; -import com.ijpay.core.enums.SignType; -import com.ijpay.core.kit.HttpKit; -import com.ijpay.core.kit.WxPayKit; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.servlet.http.HttpServletRequest; -import java.math.BigDecimal; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -/** - * 微信支付 - */ -@Slf4j -@RestController -@RequestMapping("/weChat") -public class WeChatPayNotifyController { - - @Autowired - private WeChatConfig weChatConfig; - @Autowired - private IPayService iPayService; - - /** - * 微信支付回调 - * - * @param request - */ - @PostMapping("/notify") - public String notify(HttpServletRequest request) { - try { - Map body = WxPayKit.xmlToMap(HttpKit.readData(request)); - - log.info("微信支付回调! body : {}", body); - - if (WxPayKit.verifyNotify(body, weChatConfig.getV2Key(), SignType.HMACSHA256)) { - // 签名校验通过 - if (WxPayKit.codeIsOk(body.get("result_code"))) { - // 交易成功 - - // 支付流水号 - String payNumber = body.get("transaction_id"); - // 支付完成时间 - Date payTime = DateUtils.parseDate(body.get("time_end"), DateUtils.YAMMERERS); - // 支付金额(由分转元) - BigDecimal payMoney = new BigDecimal(Integer.parseInt(body.get("total_fee"))).divide(new BigDecimal("100"), 2, BigDecimal.ROUND_HALF_UP); - - // 支付扩展类型 - String type = body.get("attach"); - - // 回调订单编号 - String thirdOrderCode = body.get("out_trade_no"); - // 支付信息编号 - String orderCode = thirdOrderCode; - // 处理订单号以及扩展类型 - if (orderCode.indexOf("-") > 0) { - // 带有分隔,需要处理 - orderCode = orderCode.split("-")[0]; - } - - // 支付后续业务处理 - if (iPayService.notifyHandle(type, orderCode, thirdOrderCode, payNumber, payTime, payMoney, EPayChannel.WECHAT, "")) { - Map xml = new HashMap<>(2); - xml.put("return_code", "SUCCESS"); - xml.put("return_msg", "OK"); - return WxPayKit.toXml(xml); - } - } else { - log.error("微信支付回调交易失败"); - } - } else { - log.error("微信支付回调签名校验失败!"); - } - } catch (Exception e) { - log.error("微信支付回调处理异常", e); - } - return null; - } - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/WechatPublicDTO.java b/bd-third/src/main/java/com/hzs/third/pay/dto/WechatPublicDTO.java index 6a0f4d42..ef7a0c3a 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/WechatPublicDTO.java +++ b/bd-third/src/main/java/com/hzs/third/pay/dto/WechatPublicDTO.java @@ -3,11 +3,7 @@ package com.hzs.third.pay.dto; import lombok.Data; /** - * @Description: 微信公众号授权返回DTO - * @Author: jiang chao - * @Time: 2023/2/11 14:21 - * @Classname: WechatPublicDTO - * @PackageName: com.hzs.web.baofu.dto + * 微信公众号授权返回DTO */ @Data public class WechatPublicDTO { diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/WechatStateDTO.java b/bd-third/src/main/java/com/hzs/third/pay/dto/WechatStateDTO.java index 6309884f..61f6321d 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/WechatStateDTO.java +++ b/bd-third/src/main/java/com/hzs/third/pay/dto/WechatStateDTO.java @@ -3,11 +3,7 @@ package com.hzs.third.pay.dto; import lombok.Data; /** - * @Description: 微信公众号中转传参DTO(宝付、汇付目前使用) - * @Author: jiang chao - * @Time: 2023/2/11 10:01 - * @Classname: BaoFuDTO - * @PackageName: com.hzs.web.sand.dto + * 微信公众号中转传参DTO(宝付、汇付目前使用) */ @Data public class WechatStateDTO { diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentBalanceDTO.java b/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentBalanceDTO.java deleted file mode 100644 index e35aa3d8..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentBalanceDTO.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.hzs.third.pay.dto.jd; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 京东查询代付金额DTO - */ -@NoArgsConstructor -@AllArgsConstructor -@Builder -@Data -public class JdAgentBalanceDTO { - - /** - * 商户编号 - */ - private String customerNum; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentBalanceResult.java b/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentBalanceResult.java deleted file mode 100644 index a3b3930c..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentBalanceResult.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.hzs.third.pay.dto.jd; - -import lombok.Data; - -/** - * 京东查询代付金额返回 - */ -@Data -public class JdAgentBalanceResult { - - /** - * 请求状态(true成功) - */ - private boolean success; - - /** - * 业务响应码 - */ - private String code; - - /** - * 业务响应描述 - */ - private String msg; - - /** - * 可代付余额 - */ - private String remitBalAmount; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentDTO.java b/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentDTO.java deleted file mode 100644 index d7378564..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentDTO.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.hzs.third.pay.dto.jd; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 京东代付DTO - */ -@NoArgsConstructor -@AllArgsConstructor -@Builder -@Data -public class JdAgentDTO { - - /** - * 版本号(仅支持:V4.0) - */ - private String version; - - /** - * 商户编号 - */ - private String customerNum; - - /** - * 店铺编号 - */ - private String shopNum; - - /** - * 商户订单号 - */ - private String requestNum; - - /** - * 业务类型(传入:DEFY) - */ - private String businessType; - - /** - * 支付方式(传入:DEFY) - */ - private String bankType; - - /** - * 金额 - */ - private String amount; - - /** - * 银行编码 - */ - private String bankCode; - - /** - * 收款账号 - */ - private String bankAccountNo; - - /** - * 收款名称 - */ - private String bankAccountName; - - /** - * 账户类型(B2B:对公 B2C:对私) - */ - private String biz; - - /** - * 通知地址 - */ - private String callbackUrl; - - /** - * 备注 - */ - private String remark; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentQueryDTO.java b/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentQueryDTO.java deleted file mode 100644 index e4678d5f..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentQueryDTO.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.hzs.third.pay.dto.jd; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * Created with IntelliJ IDEA. - * Author: yuhui - * Description: - */ -@NoArgsConstructor -@AllArgsConstructor -@Builder -@Data -public class JdAgentQueryDTO { - /** - * 版本号(仅支持:V4.0) - */ - private String version; - /** - * 商户编号 - */ - private String customerNum; - - /** - * 店铺编号 - */ - private String shopNum; - /** - * 系统订单号 - */ - private String orderNum; - /** - * 用户请求流水号流(用户系统内唯一) - */ - private String requestNum; - - private String agentNum; -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentQueryData.java b/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentQueryData.java deleted file mode 100644 index 2af3a021..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentQueryData.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.hzs.third.pay.dto.jd; - -import lombok.Data; - -/** - * 京东查询订单返回Data - */ -@Data -public class JdAgentQueryData { - - /** - * 订单完成时间 - */ - private String completeTime; - - /** - * 订单状态(INIT:交易处理中,SUCCESS:成功,FAIL:失败) - */ - private String status; - - /** - * 失败编码 - */ - private String failCode; - /** - * 失败原因 - */ - private String failReason; - - /** - * 订单编号 - */ - private String orderNum; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentQueryError.java b/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentQueryError.java deleted file mode 100644 index dd23c47f..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentQueryError.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.hzs.third.pay.dto.jd; - -import lombok.Data; - -/** - * 京东查询订单错误返回 - */ -@Data -public class JdAgentQueryError { - - /** - * 错误编码 - */ - private String errorCode; - /** - * 错误内容 - */ - private String errorMsg; - - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentQueryResult.java b/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentQueryResult.java deleted file mode 100644 index 93ae7934..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentQueryResult.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.hzs.third.pay.dto.jd; - -import lombok.Data; - -/** - * 京东查询订单返回 - */ -@Data -public class JdAgentQueryResult { - - /** - * 响应状态(success表示成功,fail表示失败,error表示异常) - */ - private String result; - /** - * 返回实际内容 - */ - private JdAgentQueryData data; - /** - * 返回异常内容 - */ - private JdAgentQueryError error; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentResult.java b/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentResult.java deleted file mode 100644 index 71854aea..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdAgentResult.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.hzs.third.pay.dto.jd; - -import lombok.Data; - -/** - * 京东代付返回 - */ -@Data -public class JdAgentResult { - - /** - * 请求状态(true请求成功) - */ - private boolean success; - /** - * 业务响应码(success表示成功) - */ - private String code; - /** - * 业务响应描述 - */ - private String msg; - - /** - * 订单编号 - */ - private String orderNum; - /** - * 银行流水号 - */ - private String bankRequestNum; - /** - * 完成时间 - */ - private String payFinishTime; - - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastBindConfirmDTO.java b/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastBindConfirmDTO.java deleted file mode 100644 index 46fa888d..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastBindConfirmDTO.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.hzs.third.pay.dto.jd; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 京东绑卡确认DTO - */ -@AllArgsConstructor -@NoArgsConstructor -@Builder -@Data -public class JdFastBindConfirmDTO { - - /** - * 商户编号 - */ - private String customerNum; - - /** - * 商户订单号 - */ - private String requestNum; - - /** - * 验证短信 - */ - private String validateCode; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastBindConfirmResult.java b/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastBindConfirmResult.java deleted file mode 100644 index e9beec79..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastBindConfirmResult.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.hzs.third.pay.dto.jd; - -import lombok.Data; - -/** - * 京东绑卡确认返回结果 - */ -@Data -public class JdFastBindConfirmResult { - - /** - * 请求状态 - */ - private boolean success; - - /** - * 业务响应码 - */ - private String code; - - /** - * 业务响应描述 - */ - private String msg; - - /** - * 商户订单号 - */ - private String requestNum; - - /** - * 绑卡状态 - */ - private String bindStatus; - /** - * 绑卡ID - */ - private String bindId; - - /** - * 银行编号 - */ - private String bankCode; - /** - * 银行卡后4位 - */ - private String cardAfterFour; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastBindDTO.java b/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastBindDTO.java deleted file mode 100644 index 33451997..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastBindDTO.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.hzs.third.pay.dto.jd; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 京东快捷绑卡DTO - */ -@AllArgsConstructor -@NoArgsConstructor -@Builder -@Data -public class JdFastBindDTO { - - - /** - * 商户编号 - */ - private String customerNum; - - /** - * 用户编号 - */ - private String userId; - - /** - * 商户订单号 - */ - private String requestNum; - - /** - * 姓名 - */ - private String payerName; - - /** - * 证件类型(身份证:IDCARD) - */ - private String idCardType; - - /** - * 证件号码 - */ - private String idCardNo; - - /** - * 银行卡号 - */ - private String cardNo; - - /** - * 银行预留手机号 - */ - private String phone; - - /** - * 信用卡有效期年份 - */ - private String year; - /** - * 信用卡有效期月份 - */ - private String month; - /** - * 信用卡安全码 - */ - private String cvv2; -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastBindResult.java b/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastBindResult.java deleted file mode 100644 index b442b50d..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastBindResult.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.hzs.third.pay.dto.jd; - -import lombok.Data; - -/** - * 京东快捷绑卡返回结果 - */ -@Data -public class JdFastBindResult { - - /** - * 请求状态 - */ - private boolean success; - - /** - * 业务响应码 - */ - private String code; - - /** - * 业务响应描述 - */ - private String msg; - - /** - * 商户订单号 - */ - private String requestNum; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastConfirmDTO.java b/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastConfirmDTO.java deleted file mode 100644 index 24e6014d..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastConfirmDTO.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.hzs.third.pay.dto.jd; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 京东快捷支付确认DTO - */ -@AllArgsConstructor -@NoArgsConstructor -@Builder -@Data -public class JdFastConfirmDTO { - - /** - * 商户编号 - */ - private String customerNum; - - /** - * 商户订单号 - */ - private String requestNum; - - /** - * 短信验证码 - */ - private String validateCode; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastConfirmResult.java b/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastConfirmResult.java deleted file mode 100644 index a2aaf28b..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastConfirmResult.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.hzs.third.pay.dto.jd; - -import lombok.Data; - -/** - * 京东快捷支付确认返回结果 - */ -@Data -public class JdFastConfirmResult { - - /** - * 请求状态 - */ - private boolean success; - - /** - * 业务响应码 - */ - private String code; - - /** - * 业务响应描述 - */ - private String msg; - - /** - * 商户编号 - */ - private String customerNum; - - /** - * 商户订单号 - */ - private String requestNum; - - /** - * 订单编号 - */ - private String orderNum; - - /** - * 银行流水号 - */ - private String bankRequestNum; - - /** - * 订单状态 - */ - private String orderStatus; - - /** - * 完成时间 - */ - private String completeDate; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastDTO.java b/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastDTO.java deleted file mode 100644 index ee653518..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastDTO.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.hzs.third.pay.dto.jd; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 京东快捷预下单DTO - */ -@AllArgsConstructor -@NoArgsConstructor -@Builder -@Data -public class JdFastDTO { - - /** - * 版本号(仅支持:V4.0) - */ - private String version; - - /** - * 商户编号 - */ - private String customerNum; - - /** - * 店铺编号 - */ - private String shopNum; - - /** - * 商户订单号 - */ - private String requestNum; - - /** - * 交易金额 - */ - private String orderAmount; - - /** - * 客户端IP - */ - private String clientIp; - - /** - * 通知地址 - */ - private String callbackUrl; - - /** - * 用户编号 - */ - private String userId; - - /** - * 绑卡ID - */ - private String bindId; - - /** - * 商品名称 - */ - private String goodsName; - /** - * 商品数量 - */ - private String goodsQuantity; - - /** - * 终端类型(OTHER) - */ - private String terminalType; - /** - * 终端标识 - */ - private String terminalId; - - /** - * 用户注册账号 - */ - private String userAccount; - - /** - * 应用类型(H5 网页) - */ - private String appType; - /** - * 应用名称 - */ - private String appName; - - /** - * 业务场景(QUICKPAY 标准场景) - */ - private String tradeScene; - - /** - * 来源(API) - */ - private String source; - - /** - * 订单有效时间 - */ - private String period; - /** - * 订单有效单位(Day:天,Hour:时,Minute:分) - */ - private String periodUnit; - - /** - * 扩展字段(长度:32) - */ - private String extraInfo; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastResult.java b/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastResult.java deleted file mode 100644 index 771bcaad..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastResult.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.hzs.third.pay.dto.jd; - -import lombok.Data; - -/** - * 京东快捷返回结果 - */ -@Data -public class JdFastResult { - - /** - * 请求状态 - */ - private boolean success; - - /** - * 业务响应码 - */ - private String code; - - /** - * 业务响应描述 - */ - private String msg; - - /** - * 商户编号 - */ - private String customerNum; - - /** - * 商户订单号 - */ - private String requestNum; - - /** - * 订单编号 - */ - private String orderNum; - - /** - * 银行流水号 - */ - private String bankRequestNum; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastUnBindDTO.java b/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastUnBindDTO.java deleted file mode 100644 index 773e8cb8..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastUnBindDTO.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.hzs.third.pay.dto.jd; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 京东快捷解绑DTO - */ -@AllArgsConstructor -@NoArgsConstructor -@Builder -@Data -public class JdFastUnBindDTO { - - /** - * 商户编号 - */ - private String customerNum; - - /** - * 商户订单号 - */ - private String requestNum; - - /** - * 用户编号 - */ - private String userId; - - /** - * 绑卡ID - */ - private String bindId; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastUnBindResult.java b/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastUnBindResult.java deleted file mode 100644 index cf23b9e5..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdFastUnBindResult.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.hzs.third.pay.dto.jd; - -import lombok.Data; - -/** - * 京东快捷解绑返回结果 - */ -@Data -public class JdFastUnBindResult { - - /** - * 请求状态(true成功) - */ - private boolean success; - - /** - * 业务响应码 - */ - private String code; - - /** - * 业务响应描述 - */ - private String msg; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdPayNotifyBody.java b/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdPayNotifyBody.java deleted file mode 100644 index cbbc5bc7..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdPayNotifyBody.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.hzs.third.pay.dto.jd; - -import lombok.Data; - -/** - * 京东支付回调body体 - */ -@Data -public class JdPayNotifyBody { - - /** - * 处理状态 - */ - private String status; - - /** - * 商户订单编号 - */ - private String requestNum; - /** - * 订单金额(元) - */ - private String orderAmount; - /** - * 订单完成时间 - */ - private String completeTime; - /** - * 支付类型(支付宝、微信等) - */ - private String payWay; - /** - * 扩展内容 - */ - private String extraInfo; - - /** - * 订单编号(京东系统订单号) - */ - private String orderNum; - - /** - * 银行订单号(银行流水号) - */ - private String bankOutTradeNum; - /** - * 银行流水号(渠道订单流水号) - */ - private String bankRequestNum; - - /** - * 订单类型 - */ - private String orderType; - /** - * 订单子类型 - */ - private String subOrderType; - /** - * 订单失败原因 - */ - private String failReason; - /** - * 订单失败编码 - */ - private String faiCode; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdScanDTO.java b/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdScanDTO.java deleted file mode 100644 index 9c776cd6..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdScanDTO.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.hzs.third.pay.dto.jd; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 京东扫码DTO - */ -@NoArgsConstructor -@AllArgsConstructor -@Builder -@Data -public class JdScanDTO { - - /** - * 商户编号 - */ - private String customerNum; - - /** - * 店铺编号 - */ - private String shopNum; - - /** - * 商户订单号 - */ - private String requestNum; - - /** - * 金额(单元:元) - */ - private String amount; - - /** - * 回调地址 - */ - private String callbackUrl; - - /** - * 来源(固定值:API) - */ - private String source; - - /** - * 扩展字段(长度:32) - */ - private String extraInfo; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdScanResult.java b/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdScanResult.java deleted file mode 100644 index d3ab41b7..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdScanResult.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.hzs.third.pay.dto.jd; - -import lombok.Data; - -/** - * 京东扫码返回 - */ -@Data -public class JdScanResult { - - /** - * 响应状态(success表示成功,fail表示失败,error表示异常) - */ - private String result; - /** - * 返回实际内容 - */ - private JdScanResultData data; - - /** - * 错误代码(https://mer.jd.com/open/?agg_recpt&APIDocument&30&153) - */ - private String errorCode; - /** - * 错误描述 - */ - private String errorMsg; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdScanResultData.java b/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdScanResultData.java deleted file mode 100644 index d39a3b9d..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/dto/jd/JdScanResultData.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.hzs.third.pay.dto.jd; - -import lombok.Data; - -/** - * 京东扫码返回Data - */ -@Data -public class JdScanResultData { - - /** - * 扫码URL - */ - private String url; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/enums/EJdAppType.java b/bd-third/src/main/java/com/hzs/third/pay/enums/EJdAppType.java deleted file mode 100644 index 7006e175..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/enums/EJdAppType.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.hzs.third.pay.enums; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 京东应用类型 - */ -@AllArgsConstructor -@Getter -public enum EJdAppType { - - IOS("IOS", "IOS"), - - AND("AND", "AND"), - - H5("H5", "H5"), - - WX("WX", "WX"), - - OTHER("OTHER", "OTHER"), - - ; - - private final String value; - private final String label; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/enums/EJdTerminalType.java b/bd-third/src/main/java/com/hzs/third/pay/enums/EJdTerminalType.java deleted file mode 100644 index 6e5bb6ca..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/enums/EJdTerminalType.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.hzs.third.pay.enums; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 京东终端类型 - */ -@AllArgsConstructor -@Getter -public enum EJdTerminalType { - - IMEI("IMEI", "IMEI"), - - MAC("MAC", "MAC"), - - // 针对IOS系统 - UUID("UUID", "UUID"), - - OTHER("OTHER", "OTHER"), - - ; - - private final String value; - private final String label; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/jdpay/config/JdPayAutoConfiguration.java b/bd-third/src/main/java/com/hzs/third/pay/jdpay/config/JdPayAutoConfiguration.java deleted file mode 100644 index c548db24..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/jdpay/config/JdPayAutoConfiguration.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.hzs.third.pay.jdpay.config; - -import com.hzs.third.pay.jdpay.sdk.JdPay; -import com.hzs.third.pay.jdpay.sdk.JdPayNewConfig; -import com.hzs.third.pay.jdpay.sdk.JdPayDefaultNewConfig; -import com.hzs.third.pay.jdpay.util.FileUtil; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/************************************************* - * - * 京东支付sdk初始化 - * - *************************************************/ -@Configuration -public class JdPayAutoConfiguration { - - @Value("${jd.pay.merchantNo}") - private String merchantNo; - @Value("${jd.pay.signKey}") - private String signKey; - @Value("${jd.pay.priCertPwd}") - private String priCertPwd; - @Value("${jd.pay.priCert}") - private String priCert; - @Value("${jd.pay.pubCert}") - private String pubCert; - @Value("${jd.pay.apiDomain}") - private String apiDomain; - - @Bean(name = "jdPay") - public JdPay initJddPay() { - // 加载商户私钥证书 - byte[] privateCert = FileUtil.readFile(priCert); - // 加载商户公钥证书 - byte[] publicCert = FileUtil.readFile(pubCert); - // 检查商户证书 - checkCert(privateCert, publicCert); - // 初始化京东支付配置对象 - JdPayNewConfig myConfig = new JdPayDefaultNewConfig(merchantNo, signKey, privateCert, priCertPwd, publicCert, apiDomain); - return new JdPay(myConfig); - } - - private void checkCert(byte[] privateCert, byte[] publicCert) { - if (privateCert == null) { - throw new RuntimeException("读取京东支付商户私钥证书为空"); - } - if (publicCert == null) { - throw new RuntimeException("读取京东支付商户公钥证书为空"); - } - } - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayAggregateCreateOrderRequest.java b/bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayAggregateCreateOrderRequest.java deleted file mode 100644 index 428ad07a..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayAggregateCreateOrderRequest.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.hzs.third.pay.jdpay.dto; - -import lombok.*; - -import java.io.Serializable; - -/** - * @Description: 京东聚合下单请求 - * @Author: jiang chao - * @Time: 2025/3/19 14:32 - * @Classname: JdPayAggregateCreateOrderRequest - * @PackageName: com.hzs.third.pay.jdpay.dto - */ -@Builder -@AllArgsConstructor -@NoArgsConstructor -@Data -public class JdPayAggregateCreateOrderRequest implements Serializable { - /** - * 商户订单号 - */ - private String outTradeNo; - /** - * 订单总金额 - */ - private String tradeAmount; - /** - * 订单创建时间 - */ - private String createDate; - /** - * 订单时效时间 分钟 - */ - private String tradeExpiryTime; - /** - * 交易名称 - */ - private String tradeSubject; - /** - * 交易类型 - */ - private String tradeType; - /** - * 交易描述 - */ - private String tradeRemark; - /** - * 币种 - */ - private String currency; - /** - * 用户ip - */ - private String userIp; - /** - * 回传字段 - */ - private String returnParams; - /** - * 商品信息list-- json串 - */ - private String goodsInfo; - /** - * 商户用户标识 - */ - private String userId; - - /** - * 交易异步通知url - */ - private String notifyUrl; - /** - * 同步通知页面url - */ - private String pageBackUrl; - /** - * 风控信息map-- json串 - */ - private String riskInfo; - /** - * 行业分类码 - */ - private String categoryCode; - /** - * 业务类型 - */ - private String bizTp; - /** - * 订单类型 - */ - private String orderType; - /** - * 报文格式 - */ - private String messageFormat; - /** - * 收货信息 - */ - private String receiverInfo; - /** - * 交易场景 - */ - private String sceneType; - /** - * 指定支付信息 - */ - private String identity; - /** - * 接入方式 - */ - private String accessType; - /** - * openId - */ - private String subOpenId; - /** - * appId - */ - private String subAppId; - /** - * 分帐信息 - */ - private String divisionAccount; - /** - * 门店号 - */ - private String storeNum; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayAggregateCreateOrderResponse.java b/bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayAggregateCreateOrderResponse.java deleted file mode 100644 index a84f3d4d..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayAggregateCreateOrderResponse.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.hzs.third.pay.jdpay.dto; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * @Description: 京东聚合下单响应 - * @Author: jiang chao - * @Time: 2025/3/19 14:40 - * @Classname: JdPayAggregateCreateOrderResponse - * @PackageName: com.hzs.third.pay.jdpay.dto - */ -@Builder -@AllArgsConstructor -@NoArgsConstructor -@Data -public class JdPayAggregateCreateOrderResponse implements Serializable { - - /** - * 业务结果 - */ - private String resultCode; - /** - * 响应描述 - */ - private String resultDesc; - /** - * 商户号 - */ - private String merchantNo; - /** - * 京东交易订单号 - */ - private String tradeNo; - /** - * 商户订单号 - */ - private String outTradeNo; - /** - * 跳转收银台链接 - */ - private String webUrl; - /** - * PC扫码支付 - */ - private String qrCode; - /** - * 唤起通道参数 - */ - private String payInfo; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayRefundRequest.java b/bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayRefundRequest.java deleted file mode 100644 index 8005b4b1..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayRefundRequest.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.hzs.third.pay.jdpay.dto; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * @Description: 京东退款响应 - * @Author: jiang chao - * @Time: 2025/3/21 9:26 - * @Classname: JdPayRefundRequest - * @PackageName: com.hzs.third.pay.jdpay.dto - */ -@Builder -@AllArgsConstructor -@NoArgsConstructor -@Data -public class JdPayRefundRequest implements Serializable { - - /** - * 商户原交易号 - */ - private String originalOutTradeNo; - /** - * 商户退款单号 - */ - private String outTradeNo; - /** - * 退款金额 - */ - private String tradeAmount; - /** - * 异步通知URL - */ - private String notifyUrl; - /** - * 回传字段 - */ - private String returnParams; - /** - * 币种 - */ - private String currency; - /** - * 交易时间 - */ - private String tradeDate; - /** - * 退款分账信息 - * - * @see - */ - private String divisionAccountRefund; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayRefundResponse.java b/bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayRefundResponse.java deleted file mode 100644 index f1a43ffa..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayRefundResponse.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.hzs.third.pay.jdpay.dto; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * @Description: 京东退款请求 - * @Author: jiang chao - * @Time: 2025/3/21 9:32 - * @Classname: JdPayRefundResponse - * @PackageName: com.hzs.third.pay.jdpay.dto - */ -@Builder -@AllArgsConstructor -@NoArgsConstructor -@Data -public class JdPayRefundResponse implements Serializable { - - /** - * 业务结果 - */ - private String resultCode; - /** - * 响应描述 - */ - private String resultDesc; - - /** - * 京东退款订单号 - */ - private String tradeNo; - /** - * 商户退款订单号 - */ - private String outTradeNo; - /** - * 商户原正单订单号 - */ - private String originalOutTradeNo; - /** - * 订单总金额 - */ - private String tradeAmount; - - /** - * 交易状态 - */ - private String tradeStatus; - /** - * 币种 - */ - private String currency; - /** - * 退款完成时间 - */ - private String finishDate; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayRefundSuccessNotify.java b/bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayRefundSuccessNotify.java deleted file mode 100644 index e3b25444..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayRefundSuccessNotify.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.hzs.third.pay.jdpay.dto; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * @Description: 退款成功通知 - * @Author: jiang chao - * @Time: 2025/3/21 10:24 - * @Classname: JdPayRefundSuccessNotify - * @PackageName: com.hzs.third.pay.jdpay.dto - */ -@Builder -@AllArgsConstructor -@NoArgsConstructor -@Data -public class JdPayRefundSuccessNotify implements Serializable { - - /** - * 业务结果 - */ - private String resultCode; - /** - * 响应描述 - */ - private String resultDesc; - - /** - * 京东退款订单号 - */ - private String tradeNo; - - /** - * 商户退款订单号 - */ - private String outTradeNo; - /** - * 商户原正单订单号 - */ - private String originalOutTradeNo; - /** - * 订单总金额 - */ - private String tradeAmount; - /** - * 退款完成时间 - */ - private String finishDate; - /** - * 交易状态 - */ - private String tradeStatus; - /** - * 回传字段 - */ - private String returnParams; - /** - * 币种 - */ - private String currency; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayTradeSuccessNotify.java b/bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayTradeSuccessNotify.java deleted file mode 100644 index a42ba4fb..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/jdpay/dto/JdPayTradeSuccessNotify.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.hzs.third.pay.jdpay.dto; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * @Description: 交易成功通知 - * @Author: jiang chao - * @Time: 2025/3/21 10:24 - * @Classname: JdPayRefundSuccessNotify - * @PackageName: com.hzs.third.pay.jdpay.dto - */ -@Builder -@AllArgsConstructor -@NoArgsConstructor -@Data -public class JdPayTradeSuccessNotify implements Serializable { - - /** - * 业务结果 - */ - private String resultCode; - /** - * 响应描述 - */ - private String resultDesc; - - /** - * 京东交易订单号 - */ - private String tradeNo; - - /** - * 商户订单号 - */ - private String outTradeNo; - /** - * 订单总金额 - */ - private String tradeAmount; - /** - * 币种 - */ - private String currency; - /** - * 支付完成时间 - */ - private String finishDate; - /** - * 交易类型 - */ - private String tradeType; - /** - * 交易状态 - */ - private String tradeStatus; - /** - * 回传字段 - */ - private String returnParams; - /** - * 请求的端 - */ - private String clientType; - /** - * 商户用户标识 - */ - private String userId; - /** - * 优惠金额 - */ - private String discountAmount; - /** - * 支付工具 - */ - private String payTool; - /** - * 掩码卡号 - */ - private String maskCardNo; - /** - * 卡类型 - */ - private String cardType; - /** - * 银行编码 - */ - private String bankCode; - /** - * 白条分期数 - */ - private String installmentNum; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPay.java b/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPay.java deleted file mode 100644 index 7da33e06..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPay.java +++ /dev/null @@ -1,175 +0,0 @@ -package com.hzs.third.pay.jdpay.sdk; - -import com.hzs.third.pay.jdpay.dto.JdPayAggregateCreateOrderRequest; -import com.hzs.third.pay.jdpay.dto.JdPayAggregateCreateOrderResponse; -import com.hzs.third.pay.jdpay.dto.JdPayRefundRequest; -import com.hzs.third.pay.jdpay.dto.JdPayRefundResponse; -import com.hzs.third.pay.jdpay.util.GsonUtil; -import com.hzs.third.pay.jdpay.util.JdPayApiUtil; -import com.hzs.third.pay.jdpay.util.SignUtil; -import lombok.extern.slf4j.Slf4j; - -import java.util.Map; - -/************************************************* - * - * 京东支付api实现类 - * - *************************************************/ -@Slf4j -public class JdPay { - - private JdPayNewConfig jdPayNewConfig; - - private JdPayHttpClientProxy jdPayHttpClientProxy; - - public JdPay(JdPayNewConfig jdPayNewConfig) { - this.jdPayNewConfig = jdPayNewConfig; - this.jdPayHttpClientProxy = new JdPayHttpClientProxy(jdPayNewConfig, new JdPayHttpClient()); - } - -// /** -// * 作用:统一下单 -// * 场景:京东支付 -// * -// * @param request 向jdPay post的请求数据 -// * @return JdPayCreateOrderResponse 返回数据 -// * @throws Exception -// */ -// public JdPayCreateOrderResponse createOrder(JdPayCreateOrderRequest request) throws Exception { -// return this.baseExecute(JdPayConstant.CREATE_ORDER_URL, request, JdPayCreateOrderResponse.class); -// } - - /** - * 作用:三方聚合统一下单 - * 场景:三方聚合 - * - * @param request 向jdPay post的请求数据 - * @return JdPayAggregateCreateOrderResponse 返回数据 - * @throws Exception - */ - public JdPayAggregateCreateOrderResponse aggregateCreateOrder(JdPayAggregateCreateOrderRequest request) throws Exception { - return this.baseExecute(JdPayConstant.AGGREGATE_CREATE_ORDER_URL, request, JdPayAggregateCreateOrderResponse.class); - } -// /** -// * 作用:订单查询 -// * 场景:查询订单信息 - 包括首次支付订单与代扣订单 -// * -// * @param request 向jdPay post的请求数据 -// * @return JdPayQueryOrderResponse 返回数据 -// * @throws Exception -// */ -// public JdPayQueryOrderResponse queryOrder(JdPayQueryOrderRequest request) throws Exception { -// return this.baseExecute(JdPayConstant.TRADE_QUERY_URL, request, JdPayQueryOrderResponse.class); -// } -// -// /** -// * 作用:代扣 -// * 场景:代扣交易场景 -// * -// * @param request 向jdPay post的请求数据 -// * @return JdPayAgreementPayResponse 返回数据 -// * @throws Exception -// */ -// public JdPayAgreementPayResponse agreementPay(JdPayAgreementPayRequest request) throws Exception { -// return this.baseExecute(JdPayConstant.AGREEMENT_PAY_URL, request, JdPayAgreementPayResponse.class); -// } - - /** - * 作用:申请退款 - * 场景:退款 - * - * @param request 向jdPay post的请求数据 - * @return JdPayRefundResponse 返回数据 - * @throws Exception - */ - public JdPayRefundResponse refund(JdPayRefundRequest request) throws Exception { - return this.baseExecute(JdPayConstant.REFUND_URL, request, JdPayRefundResponse.class); - } - -// /** -// * 作用:退款查询 -// * 场景:查询退款信息 -// * -// * @param request 向jdPay post的请求数据 -// * @return JdPayQueryOrderResponse 返回数据 -// * @throws Exception -// */ -// public JdPayRefundQueryResponse refundQuery(JdPayRefundQueryRequest request) throws Exception { -// return this.baseExecute(JdPayConstant.REFUND_QUERY_URL, request, JdPayRefundQueryResponse.class); -// } -// -// /** -// * 作用:解约 -// * 场景:接触签约关系 -// * -// * @param request 向jdPay post的请求数据 -// * @return JdPayAgreementCancelRequest 返回数据 -// * @throws Exception -// */ -// public JdPayAgreementCancelResponse agreementCancel(JdPayAgreementCancelRequest request) throws Exception { -// return this.baseExecute(JdPayConstant.AGREEMENT_CANCEL_URL, request, JdPayAgreementCancelResponse.class); -// } -// -// -// /** -// * 作用:解约查询 -// * 场景:查询签约关系 -// * -// * @param request 向jdPay post的请求数据 -// * @return JdPayAgreementCancelRequest 返回数据 -// * @throws Exception -// */ -// public JdPayAgreementQueryResponse agreementQuery(JdPayAgreementQueryRequest request) throws Exception { -// return this.baseExecute(JdPayConstant.AGREEMENT_QUERY_URL, request, JdPayAgreementQueryResponse.class); -// } -// -// public JdPayAgreementSignResponse agreementNewSign(JdPayAgreementSignRequest request) throws Exception{ -// return this.baseExecute(JdPayConstant.AGREEMENT_NEW_SIGN_URL, request, JdPayAgreementSignResponse.class); -// } - - /** - * 验证接口参数签名 - * 场景:api接口返回参数,异步回调请求参数 - */ - public String verifyResponse(String respText) throws Exception { - String interData = JdPayApiUtil.decryptAndVerifySign(jdPayNewConfig, respText); - log.info("京东支付异步通知-解析数据:{}", interData); - return interData; - } - - /** - * 验证页面回调参数 - * - * @param respMap 页面回调参数 - * @return 验证结果 - * @throws Exception 异常 - */ - public boolean verifyPageCallBack(Map respMap) throws Exception { - return SignUtil.verifyPageCallBackSign(respMap, jdPayNewConfig.getSignKey()); - } - - /** - * 执行接口调用 - * - * @param request 请求对象 - * @param clazz 返回对象类型 - * @return 返回对象 - * @throws Exception 异常 - */ - public RES baseExecute(String urlSuffix, REQ request, Class clazz) throws Exception { - String reqJson = GsonUtil.toJson(request); - String respJson = jdPayHttpClientProxy.execute(urlSuffix, reqJson); - return GsonUtil.fromJson(respJson, clazz); - } - -// /** -// * 账户签约 -// * @param request -// * @return -// * @throws Exception -// */ -// public JdPayAgreementSignApplyResponse agreementSignApply(JdPayAgreementSignApplyRequest request) throws Exception{ -// return this.baseExecute(JdPayConstant.AGREEMENT_SIGN_APPLY_URL, request, JdPayAgreementSignApplyResponse.class); -// } -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayConstant.java b/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayConstant.java deleted file mode 100644 index b92e78dd..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayConstant.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.hzs.third.pay.jdpay.sdk; - -import org.apache.http.client.HttpClient; - -public class JdPayConstant { - - /** - * 京东支付统一收单 url - **/ - public static final String CREATE_ORDER_URL = "/api/createOrder"; - /** - * 三方聚合统一收单 url - **/ - public static final String AGGREGATE_CREATE_ORDER_URL = "/api/createAggregateOrder"; - /** - * 交易查询 url - **/ - public static final String TRADE_QUERY_URL = "/api/queryOrder"; - /** - * 退款申请 url - **/ - public static final String REFUND_URL = "/api/refund"; - /** - * 退款查询 url - **/ - public static final String REFUND_QUERY_URL = "/api/refundQuery"; - /** - * 代扣 url - **/ - public static final String AGREEMENT_PAY_URL = "/api/agreementPay"; - /** - * 签约关系查询 url - **/ - public static final String AGREEMENT_QUERY_URL = "/api/agreementQuery"; - /** - * 解约申请 url - **/ - public static final String AGREEMENT_CANCEL_URL = "/api/agreementCancel"; - - /** - * 无卡号签约 - */ - public static final String AGREEMENT_NEW_SIGN_URL = "/api/agreementNewSign"; - - /** - * 账户签约 - */ - public static final String AGREEMENT_SIGN_APPLY_URL = "/api/agreementSignApply"; - - /** - * 随机字符常量 - */ - public static final String SYMBOLS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; - - /** - * 公共字段常量 start - **/ - public static final String CCM = "CCM"; - public static final String MERCHANT_NO = "merchantNo"; - public static final String REQ_NO = "reqNo"; - public static final String CHARSET = "charset"; - public static final String FORMAT_TYPE = "formatType"; - public static final String SIGN_TYPE = "signType"; - public static final String ENC_TYPE = "encType"; - public static final String UTF8 = "UTF-8"; - public static final String JSON = "JSON"; - public static final String SHA256 = "SHA-256"; - public static final String AP7 = "AP7"; - public static final String YYYYMMDDHHMMSS = "yyyyMMddHHmmss"; - public static final String SIGN_DATA = "signData"; - public static final String ENC_DATA = "encData"; - public static final String RESP_DATA = "respData"; - public static final String CODE = "code"; - public static final String DESC = "desc"; - public static final String SUCCESS_CODE = "00000"; - /* 公共字段常量 end */ - - - /** - * http请求常量 start - **/ - public static final String HTTP = "http"; - public static final String HTTPS = "https"; - public static final String CONTENT_TYPE = "Content-Type"; - public static final String UA = "User-Agent"; - public static final String PKCS12 = "PKCS12"; - public static final String TLS = "TLS"; - public static final String APPLICATION_JSON = "application/json"; - public static final String USER_AGENT = "jdPay" + - " (" + System.getProperty("os.arch") + " " + System.getProperty("os.name") + " " + System.getProperty("os.version") + - ") Java/" + System.getProperty("java.version") + " HttpClient/" + HttpClient.class.getPackage().getImplementationVersion(); - /* http请求常量 end */ - - public static final String URL_PATH = "/api/"; - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayDefaultNewConfig.java b/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayDefaultNewConfig.java deleted file mode 100644 index 960aab09..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayDefaultNewConfig.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.hzs.third.pay.jdpay.sdk; - -import com.hzs.third.pay.jdpay.util.FileUtil; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; - -/************************************************* - * - * 商户默认配置类 - * 商户也可以自行实现JdPayConfig,调整配置属性 - * - *************************************************/ -public class JdPayDefaultNewConfig extends JdPayNewConfig { - - private String merchantNo; - private String signKey; - private byte[] priCert; - private String priCertPwd; - private byte[] pubCert; - private String apiDomain; - - public JdPayDefaultNewConfig(String merchantNo, String signKey, byte[] priCert, String priCertPwd, byte[] pubCert, String apiDomain) { - this.merchantNo = merchantNo; - this.signKey = signKey; - this.priCert = priCert; - this.priCertPwd = priCertPwd; - this.pubCert = pubCert; - this.apiDomain = apiDomain; - } - - public JdPayDefaultNewConfig(String merchantNo, String signKey, String priCertPwd, String apiDomain, String priCertPath, String pubCertPath) { - this.merchantNo = merchantNo; - this.signKey = signKey; - this.priCertPwd = priCertPwd; - this.apiDomain = apiDomain; - - //加载商户私钥证书 - this.priCert = FileUtil.readFile(priCertPath); - //加载商户公钥证书 - this.pubCert = FileUtil.readFile(pubCertPath); - } - - @Override - public String getMerchantNo() { - return this.merchantNo; - } - - @Override - public String getSignKey() { - return this.signKey; - } - - @Override - public InputStream getPriCert() { - return new ByteArrayInputStream(this.priCert); - } - - @Override - public String getPriCertPwd() { - return this.priCertPwd; - } - - @Override - public InputStream getPubCert() { - return new ByteArrayInputStream(this.pubCert); - } - - @Override - public String getApiDomain() { - return this.apiDomain; - } -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayHttpClient.java b/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayHttpClient.java deleted file mode 100644 index 7128c51f..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayHttpClient.java +++ /dev/null @@ -1,173 +0,0 @@ -package com.hzs.third.pay.jdpay.sdk; - -import com.hzs.common.core.exception.ServiceException; -import lombok.extern.slf4j.Slf4j; -import org.apache.http.*; -import org.apache.http.client.HttpClient; -import org.apache.http.client.config.RequestConfig; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.config.RegistryBuilder; -import org.apache.http.conn.ConnectionKeepAliveStrategy; -import org.apache.http.conn.HttpClientConnectionManager; -import org.apache.http.conn.socket.ConnectionSocketFactory; -import org.apache.http.conn.socket.PlainConnectionSocketFactory; -import org.apache.http.conn.ssl.SSLConnectionSocketFactory; -import org.apache.http.entity.StringEntity; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.DefaultHttpRequestRetryHandler; -import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.http.impl.client.HttpClients; -import org.apache.http.impl.conn.BasicHttpClientConnectionManager; -import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; -import org.apache.http.message.BasicHeaderElementIterator; -import org.apache.http.protocol.HTTP; -import org.apache.http.protocol.HttpContext; -import org.apache.http.util.EntityUtils; - -import java.io.IOException; - -@Slf4j -public class JdPayHttpClient { - - private CloseableHttpClient httpClient = null; - - public JdPayHttpClient() { - } - - /** - * 远程调用 - * - * @param jdPayNewConfig 京东支付配置 - * @param urlSuffix 接口url后缀 - * @param request 请求参数 - * @return 返回参数看 - * @throws Exception 远程调用异常信息 - */ - public String execute(JdPayNewConfig jdPayNewConfig, String urlSuffix, String request) { - HttpClient httpClient = buildHttpClient(jdPayNewConfig); - String url = jdPayNewConfig.getApiDomain() + urlSuffix; - int connectTimeoutMs = jdPayNewConfig.getHttpConnectTimeoutMs(); - int readTimeoutMs = jdPayNewConfig.getHttpReadTimeoutMs(urlSuffix); - try { - return this.sendRequest(httpClient, url, request, connectTimeoutMs, readTimeoutMs); - } catch (IOException e) { - throw new ServiceException("HTTP read timeout"); - } - } - - /** - * 获取httpClient - * - * @param jdPayNewConfig 京东支付配置 - * @return httpClient - */ - private HttpClient buildHttpClient(JdPayNewConfig jdPayNewConfig) { - if (jdPayNewConfig.useHttpConnectPool()) { - return getHttpClientByPoolingConnectionManager(jdPayNewConfig); - } else { - return getHttpClientByBasicConnectionManager(); - } - } - - /** - * 发送请求 - * - * @param httpClient httpClient - * @param url 请求地址 - * @param data 请求数据 - * @param connectTimeoutMs 连接超时时间,单位是毫秒 - * @param readTimeoutMs 读超时时间,单位是毫秒 - * @return api接口返回参数 - */ - private String sendRequest(HttpClient httpClient, String url, String data, int connectTimeoutMs, int readTimeoutMs) throws IOException { - HttpPost httpPost = new HttpPost(url); - RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(readTimeoutMs).setConnectTimeout(connectTimeoutMs).build(); - httpPost.setConfig(requestConfig); - - StringEntity postEntity = new StringEntity(data, JdPayConstant.UTF8); - httpPost.addHeader(JdPayConstant.CONTENT_TYPE, JdPayConstant.APPLICATION_JSON); - httpPost.addHeader(JdPayConstant.UA, JdPayConstant.USER_AGENT); - httpPost.setEntity(postEntity); - HttpResponse httpResponse = httpClient.execute(httpPost); - int statusCode = httpResponse.getStatusLine().getStatusCode(); - if (HttpStatus.SC_OK != statusCode) { - throw new ServiceException(String.format("httpStatusCode: %s", statusCode)); - } - HttpEntity httpEntity = httpResponse.getEntity(); - return EntityUtils.toString(httpEntity, JdPayConstant.UTF8); - } - - private HttpClient getHttpClientByBasicConnectionManager() { - HttpClientConnectionManager connManager = new BasicHttpClientConnectionManager( - RegistryBuilder.create() - .register(JdPayConstant.HTTP, PlainConnectionSocketFactory.getSocketFactory()) - .register(JdPayConstant.HTTPS, SSLConnectionSocketFactory.getSocketFactory()) - .build(), - null, - null, - null - ); - return HttpClientBuilder.create() - // 连接池 - .setConnectionManager(connManager) - // 重试策略 - .setRetryHandler(new DefaultHttpRequestRetryHandler(0, false)).build(); - } - - private HttpClient getHttpClientByPoolingConnectionManager(JdPayNewConfig jdPayNewConfig) { - if (httpClient != null) { - return httpClient; - } - synchronized (this) { - if (httpClient == null) { - long start = System.currentTimeMillis(); - PoolingHttpClientConnectionManager httpClientConnectionManager = new PoolingHttpClientConnectionManager( - RegistryBuilder.create() - .register(JdPayConstant.HTTP, PlainConnectionSocketFactory.getSocketFactory()) - .register(JdPayConstant.HTTPS, SSLConnectionSocketFactory.getSocketFactory()) - .build() - ); - // 设置最大连接数 - httpClientConnectionManager.setMaxTotal(jdPayNewConfig.getHttpConnectMaxTotal()); - // 将每个路由默认最大连接数 - httpClientConnectionManager.setDefaultMaxPerRoute(jdPayNewConfig.getHttpConnectDefaultTotal()); - httpClient = HttpClients.custom() - // 设置连接池 - .setConnectionManager(httpClientConnectionManager) - // 连接存活策略 - .setKeepAliveStrategy(getConnectionKeepAliveStrategy()) - // 重试策略 - .setRetryHandler(new DefaultHttpRequestRetryHandler(0, false)).build(); - // 连接回收策略 - JdPayHttpConnectionMonitor idleConnectionMonitor = new JdPayHttpConnectionMonitor(httpClientConnectionManager, jdPayNewConfig.getHttpConnectIdleAliveMs()); - idleConnectionMonitor.start(); - log.info("初始化http连接池耗时:{}", System.currentTimeMillis() - start); - } - } - return httpClient; - } - - private ConnectionKeepAliveStrategy getConnectionKeepAliveStrategy() { - return new ConnectionKeepAliveStrategy() { - @Override - public long getKeepAliveDuration(HttpResponse response, HttpContext context) { - // Honor 'keep-alive' header - HeaderElementIterator it = new BasicHeaderElementIterator(response.headerIterator(HTTP.CONN_KEEP_ALIVE)); - while (it.hasNext()) { - HeaderElement he = it.nextElement(); - String param = he.getName(); - String value = he.getValue(); - if (value != null && "timeout".equalsIgnoreCase(param)) { - try { - log.info("Keep-Alive指定时长:{}", value); - return Long.parseLong(value) * 1000; - } catch (NumberFormatException ignore) { - } - } - } - // Keep alive for 300 seconds only - return 300 * 1000; - } - }; - } -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayHttpClientProxy.java b/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayHttpClientProxy.java deleted file mode 100644 index 23863944..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayHttpClientProxy.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.hzs.third.pay.jdpay.sdk; - -import com.hzs.third.pay.jdpay.util.JdPayApiUtil; -import lombok.extern.slf4j.Slf4j; - -import java.security.SecureRandom; -import java.util.Random; - -@Slf4j -public class JdPayHttpClientProxy { - - private static final Random RANDOM = new SecureRandom(); - - private final JdPayNewConfig jdPayNewConfig; - - private final JdPayHttpClient jdPayHttpClient; - - public JdPayHttpClientProxy(JdPayNewConfig jdPayNewConfig, JdPayHttpClient jdPayHttpClient) { - this.jdPayNewConfig = jdPayNewConfig; - this.jdPayHttpClient = jdPayHttpClient; - } - - /** - * 获取随机字符串,含数字和大小写英文字母 - */ - private static String genNonceStr() { - char[] nonceChars = new char[32]; - for (int index = 0; index < nonceChars.length; ++index) { - nonceChars[index] = JdPayConstant.SYMBOLS.charAt(RANDOM.nextInt(JdPayConstant.SYMBOLS.length())); - } - return new String(nonceChars); - } - - public String execute(String urlSuffix, String request) throws Exception { - long startTimestampMs = System.currentTimeMillis(); - String response; - // 接口名称 - String apiName = urlSuffix.replaceFirst(JdPayConstant.URL_PATH, ""); - // 唯一请求号 - String reqNo = genNonceStr(); - try { - log.info("1.{}接口请求参数:{}", apiName, request); - // 请求参数加密和签名 - String httpRequest = JdPayApiUtil.encryptAndSignature(jdPayNewConfig, reqNo, request); - log.info("2.{}远程调用请求参数:{}", apiName, httpRequest); - String httpResponse = jdPayHttpClient.execute(jdPayNewConfig, urlSuffix, httpRequest); - log.info("3.{}远程调用返回参数:{}", apiName, httpResponse); - // 验证和解析返回参数 - response = JdPayApiUtil.decryptAndVerifySign(jdPayNewConfig, httpResponse); - log.info("4.{}耗时:{},接口返回参数:{}", apiName, (System.currentTimeMillis() - startTimestampMs), response); - } catch (Exception e) { - log.error("{}远程调用异常,接口参数:{}", apiName, request, e); - throw e; - } - return response; - } - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayHttpConnectionMonitor.java b/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayHttpConnectionMonitor.java deleted file mode 100644 index 8d5ea29c..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayHttpConnectionMonitor.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.hzs.third.pay.jdpay.sdk; - -import lombok.extern.slf4j.Slf4j; -import org.apache.http.conn.HttpClientConnectionManager; - -import java.util.concurrent.TimeUnit; - -/** - * 用于监控空闲的连接池连接 - */ -@Slf4j -public class JdPayHttpConnectionMonitor extends Thread { - - // 轮询检查时间间隔,单位毫秒 - private static final int MONITOR_INTERVAL_MS = 5000; - // 连接最大空闲时间,单位毫秒 - private static int IDLE_ALIVE_MS = 20000; - - private final HttpClientConnectionManager httpClientConnectionManager; - - private volatile boolean shutdown; - - JdPayHttpConnectionMonitor(HttpClientConnectionManager httpClientConnectionManager, int idleAliveMs) { - super(); - this.httpClientConnectionManager = httpClientConnectionManager; - IDLE_ALIVE_MS = idleAliveMs; - this.shutdown = false; - } - - @Override - public void run() { - try { - while (!shutdown) { - synchronized (this) { - wait(MONITOR_INTERVAL_MS); - // 关闭无效的连接 - httpClientConnectionManager.closeExpiredConnections(); - // 关闭空闲时间超过IDLE_ALIVE_MS的连接 - httpClientConnectionManager.closeIdleConnections(IDLE_ALIVE_MS, TimeUnit.MILLISECONDS); - } - } - } catch (InterruptedException e) { - log.error("连接池管理任务异常:", e); - } - } - - // 关闭后台连接 - public void shutdown() { - shutdown = true; - synchronized (this) { - notifyAll(); - } - } - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayNewConfig.java b/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayNewConfig.java deleted file mode 100644 index b97f01fa..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPayNewConfig.java +++ /dev/null @@ -1,154 +0,0 @@ -package com.hzs.third.pay.jdpay.sdk; - -import java.io.InputStream; -import java.util.HashMap; - -/** - * 京东支付配置类 - */ -public abstract class JdPayNewConfig { - - /** - * 接口超时时间全局配置 - */ - private static final HashMap HTTP_READ_TIMEOUT_CONFIG = new HashMap() {{ - put(JdPayConstant.CREATE_ORDER_URL, 15000); - put(JdPayConstant.TRADE_QUERY_URL, 5000); - put(JdPayConstant.REFUND_URL, 5000); - put(JdPayConstant.REFUND_QUERY_URL, 5000); - put(JdPayConstant.AGREEMENT_PAY_URL, 10000); - put(JdPayConstant.AGREEMENT_QUERY_URL, 5000); - put(JdPayConstant.AGREEMENT_CANCEL_URL, 5000); - }}; - - /** - * 获取merchantNo - * - * @return merchantNo - */ - public abstract String getMerchantNo(); - - /** - * 获取signKey - * - * @return signKey - */ - public abstract String getSignKey(); - - /** - * 获取 私钥证书 - * - * @return 私钥证书 - */ - public abstract InputStream getPriCert(); - - /** - * 获取 私钥证书密钥 - * - * @return 私钥证书密钥 - */ - public abstract String getPriCertPwd(); - - /** - * 获取 公钥证书 - * - * @return 公钥证书 - */ - public abstract InputStream getPubCert(); - - /** - * 获取域名-新api接口 - * - * @return 域名-新api接口 - */ - public abstract String getApiDomain(); - - /** - * HTTP(S) 连接超时时间,单位毫秒 - * - * @return 连接时间 - */ - public int getHttpConnectTimeoutMs() { - return 6 * 1000; - } - - /** - * 设置HTTP(S) 读数据超时时间,单位毫秒 - * - * @param urlSuffix api地址除去域名后的路径 - * @param httpReadTimeoutMs 读超时时间,单位毫秒 - */ - public void setHttpReadTimeoutMs(String urlSuffix, int httpReadTimeoutMs) { - HTTP_READ_TIMEOUT_CONFIG.put(urlSuffix, httpReadTimeoutMs); - } - - /** - * 查询HTTP(S) 读数据超时时间,单位毫秒 - * - * @return 读超时时间,单位毫秒 - */ - public int getHttpReadTimeoutMs(String requestPath) { - if (!HTTP_READ_TIMEOUT_CONFIG.containsKey(requestPath)) { - return 15000; - } - return HTTP_READ_TIMEOUT_CONFIG.get(requestPath); - } - - /** - * 是否自动上报异常请求。默认为 true - * 若要关闭,子类中实现该函数返回 false 即可。 - */ - public boolean shouldAutoReport() { - return true; - } - - /** - * 进行异常上报的线程的数量 - */ - public int getReportWorkerNum() { - return 1; - } - - /** - * 批量上报,一次报多条异常数据 - */ - public int getReportBatchSize() { - return 5; - } - - /** - * 异常上报缓存消息队列最大数量。 - * 队列满后,不会上报新增的异常信息 - */ - public int getReportQueueMaxSize() { - return 50; - } - - /** - * 是否使用http连接池 - */ - public boolean useHttpConnectPool() { - return false; - } - - /** - * http连接池最大连接数量 - */ - public int getHttpConnectMaxTotal() { - return 800; - } - - /** - * http连接池默认连接数量 - */ - public int getHttpConnectDefaultTotal() { - return 100; - } - - /** - * http连接最大闲置时长,单位毫秒 - */ - public int getHttpConnectIdleAliveMs() { - return 20000; - } -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPaySecurity.java b/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPaySecurity.java deleted file mode 100644 index c2972306..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPaySecurity.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.hzs.third.pay.jdpay.sdk; - -import org.bouncycastle.util.encoders.Base64; - -import java.io.InputStream; - -public class JdPaySecurity { - - public String signEnvelop(InputStream signCert, String password, InputStream envelopCert, byte[] orgData) { - byte[] signData = JdPaySign.getInstance().attachSign(signCert, password, orgData); - byte[] envelop = JdPaySign.getInstance().encryptEnvelop(envelopCert, signData); - return new String(Base64.encode(envelop)); - } - - public byte[] verifyEnvelop(InputStream envelopCert, String password, byte[] envelopData) { - byte[] signData = JdPaySign.getInstance().decryptEnvelop(envelopCert, password, envelopData); - return JdPaySign.getInstance().verifyAttachSign(signData); - } -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPaySign.java b/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPaySign.java deleted file mode 100644 index 488ae041..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/jdpay/sdk/JdPaySign.java +++ /dev/null @@ -1,200 +0,0 @@ -package com.hzs.third.pay.jdpay.sdk; - -import com.hzs.common.core.exception.ServiceException; -import com.hzs.third.pay.jdpay.util.CertUtil; -import lombok.extern.slf4j.Slf4j; -import org.bouncycastle.asn1.DEROutputStream; -import org.bouncycastle.cert.X509CertificateHolder; -import org.bouncycastle.cert.jcajce.JcaCertStore; -import org.bouncycastle.cms.*; -import org.bouncycastle.cms.jcajce.*; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.operator.ContentSigner; -import org.bouncycastle.operator.jcajce.JcaContentSignerBuilder; -import org.bouncycastle.operator.jcajce.JcaDigestCalculatorProviderBuilder; -import org.bouncycastle.util.Store; - -import javax.security.auth.x500.X500PrivateCredential; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.security.PrivateKey; -import java.security.Security; -import java.security.cert.CertificateException; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; - -@Slf4j -public class JdPaySign { - - private static final String SIGN_ALGORITHMS = "SHA1WITHRSA"; - private static final String BC = "BC"; - - private static JdPaySign INSTANCE = null; - - static { - BouncyCastleProvider provider = new BouncyCastleProvider(); - Security.addProvider(provider); - } - - private JdPaySign() { - } - - /** - * 单例,双重校验 - */ - public static JdPaySign getInstance() { - if (INSTANCE == null) { - synchronized (JdPaySign.class) { - if (INSTANCE == null) { - INSTANCE = new JdPaySign(); - } - } - } - return INSTANCE; - } - - - public byte[] attachSign(InputStream priCert, String password, byte[] data) { - return this.sign(priCert, password, data, true); - } - - public byte[] detachSign(InputStream priCert, String password, byte[] data) { - return this.sign(priCert, password, data, false); - } - - private byte[] sign(InputStream priCert, String password, byte[] data, boolean isDetach) { - try { - X500PrivateCredential privateCert = CertUtil.getPrivateCert(priCert, password.toCharArray()); - X509Certificate x509Certificate = privateCert.getCertificate(); - PrivateKey privateKey = privateCert.getPrivateKey(); - - List certList = new ArrayList<>(); - certList.add(x509Certificate); - Store certs = new JcaCertStore(certList); - - CMSSignedDataGenerator generator = new CMSSignedDataGenerator(); - ContentSigner sha1Signer = new JcaContentSignerBuilder(SIGN_ALGORITHMS).setProvider(BC).build(privateKey); - generator.addSignerInfoGenerator(new JcaSignerInfoGeneratorBuilder(new JcaDigestCalculatorProviderBuilder().setProvider(BC).build()).build(sha1Signer, x509Certificate)); - generator.addCertificates(certs); - - CMSTypedData msg = new CMSProcessableByteArray(data); - return generator.generate(msg, isDetach).getEncoded(); - } catch (CertificateException e) { - log.error("=====", e); - log.error(e.getMessage()); - throw new ServiceException(e.getMessage()); - } catch (Exception e) { - log.error("-----", e); - log.error(e.getMessage()); - throw new ServiceException("签名异常"); - } - } - - @SuppressWarnings("rawtypes") - public int verifyDetachSign(byte[] data, byte[] signData) { - try { - CMSProcessable content = new CMSProcessableByteArray(data); - CMSSignedData s = new CMSSignedData(content, signData); - Store certStore = s.getCertificates(); - SignerInformationStore signers = s.getSignerInfos(); - Collection c = signers.getSigners(); - Iterator it = c.iterator(); - int verified = 0, size = 0; - while (it.hasNext()) { - size++; - SignerInformation signer = (SignerInformation) it.next(); - Collection certCollection = certStore.getMatches(signer.getSID()); - Iterator certIt = certCollection.iterator(); - X509CertificateHolder cert = (X509CertificateHolder) certIt.next(); - if (signer.verify(new JcaSimpleSignerInfoVerifierBuilder().setProvider("BC").build(cert))) { - verified++; - } - } - if (size == verified) { - return 1; - } - } catch (Exception e) { - return 0; - } - return 0; - } - - @SuppressWarnings({"rawtypes"}) - public byte[] verifyAttachSign(byte[] signData) { - try { - byte[] data = null; - CMSSignedData s = new CMSSignedData(signData); - Store certStore = s.getCertificates(); - SignerInformationStore signers = s.getSignerInfos(); - Collection c = signers.getSigners(); - Iterator it = c.iterator(); - int verified = 0, size = 0; - - while (it.hasNext()) { - size++; - SignerInformation signer = (SignerInformation) it.next(); - Collection certCollection = certStore.getMatches(signer.getSID()); - Iterator certIt = certCollection.iterator(); - X509CertificateHolder cert = (X509CertificateHolder) certIt.next(); - - if (signer.verify(new JcaSimpleSignerInfoVerifierBuilder().setProvider("BC").build(cert))) { - verified++; - CMSTypedData cmsData = s.getSignedContent(); - data = (byte[]) cmsData.getContent(); - } - } - if (size == verified) { - return data; - } - } catch (Exception e) { - return null; - } - return null; - } - - public byte[] encryptEnvelop(InputStream pubCert, byte[] bOrgData) { - try { - X509Certificate publicCert = CertUtil.getPublicCert(pubCert); - CMSEnvelopedDataGenerator generator = new CMSEnvelopedDataGenerator(); - generator.addRecipientInfoGenerator(new JceKeyTransRecipientInfoGenerator(publicCert).setProvider(BC)); - CMSEnvelopedData enveloped = generator.generate(new CMSProcessableByteArray(bOrgData), new JceCMSContentEncryptorBuilder(CMSAlgorithm.DES_EDE3_CBC).setProvider(BC).build()); - ByteArrayOutputStream out = new ByteArrayOutputStream(); - new DEROutputStream(out).writeObject(enveloped.toASN1Structure()); - byte[] result = out.toByteArray(); - out.close(); - return result; - } catch (CertificateException | CMSException | IOException e) { - log.error("加密异常:{}", e.getMessage()); - throw new ServiceException("加密异常"); - } - } - - public byte[] decryptEnvelop(InputStream priCert, String privateKeyPassword, byte[] bEnvelop) { - try { - CMSEnvelopedData enveloped = new CMSEnvelopedData(bEnvelop); - RecipientInformationStore ris = enveloped.getRecipientInfos(); - if (ris == null) { - log.error("数字信封格式不对:{}", new String(bEnvelop)); - throw new ServiceException("验签异常"); - } - - X500PrivateCredential privateCert = CertUtil.getPrivateCert(priCert, privateKeyPassword.toCharArray()); - PrivateKey privateKey = privateCert.getPrivateKey(); - - byte[] sign = null; - Collection recipients = ris.getRecipients(); - for (Object object : recipients) { - RecipientInformation recipient = (RecipientInformation) object; - sign = recipient.getContent(new JceKeyTransEnvelopedRecipient(privateKey).setProvider(BC)); - } - return sign; - } catch (CMSException | CertificateException e) { - log.error("验签异常:{}", e.getMessage()); - throw new ServiceException("验签异常"); - } - } -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/jdpay/util/CertUtil.java b/bd-third/src/main/java/com/hzs/third/pay/jdpay/util/CertUtil.java deleted file mode 100644 index 36fd0ff5..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/jdpay/util/CertUtil.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.hzs.third.pay.jdpay.util; - -import lombok.extern.slf4j.Slf4j; - -import javax.security.auth.x500.X500PrivateCredential; -import java.io.IOException; -import java.io.InputStream; -import java.security.*; -import java.security.cert.Certificate; -import java.security.cert.CertificateException; -import java.security.cert.CertificateFactory; -import java.security.cert.X509Certificate; -import java.util.Enumeration; - -@Slf4j -public class CertUtil { - - private static final String PKCS12 = "PKCS12"; - - public static X500PrivateCredential getPrivateCert(InputStream pfxCert, char[] privateKeyPassword) throws CertificateException { - KeyStore keyStore; - String keyStoreAlias = null; - - /* Load KeyStore contents from file */ - try { - keyStore = KeyStore.getInstance(CertUtil.PKCS12); - keyStore.load(pfxCert, privateKeyPassword); - - /* Get aliases */ - Enumeration aliases = keyStore.aliases(); - if (aliases != null) { - while (aliases.hasMoreElements()) { - keyStoreAlias = (String) aliases.nextElement(); - Certificate[] certs = keyStore.getCertificateChain(keyStoreAlias); - if (certs == null || certs.length == 0) { - continue; - } - X509Certificate cert = (X509Certificate) certs[0]; - if (matchUsage(cert.getKeyUsage(), 1)) { - try { - cert.checkValidity(); - } catch (CertificateException e) { - continue; - } - break; - } - } - } - } catch (GeneralSecurityException | IOException e) { - log.error("===============", e); - throw new CertificateException("Error initializing keystore"); - } - - if (keyStoreAlias == null) { - throw new CertificateException("None certificate for sign in this keystore"); - } - - /* Get certificate chain and create a certificate path */ - Certificate[] fromKeyStore; - try { - fromKeyStore = keyStore.getCertificateChain(keyStoreAlias); - if (fromKeyStore == null - || fromKeyStore.length == 0 - || !(fromKeyStore[0] instanceof X509Certificate)) { - throw new CertificateException("Unable to find X.509 certificate chain in keystore"); - } - } catch (KeyStoreException e) { - throw new CertificateException("Error using keystore"); - } - - /* Get PrivateKey */ - Key privateKey; - try { - privateKey = keyStore.getKey(keyStoreAlias, privateKeyPassword); - if (!(privateKey instanceof PrivateKey)) { - throw new CertificateException("Unable to recover key from keystore"); - } - } catch (KeyStoreException | NoSuchAlgorithmException e) { - throw new CertificateException("Error using keystore"); - } catch (UnrecoverableKeyException e) { - throw new CertificateException("Unable to recover key from keystore"); - } - - X509Certificate certificate = (X509Certificate) fromKeyStore[0]; - return new X500PrivateCredential(certificate, (PrivateKey) privateKey, keyStoreAlias); - } - - public static X509Certificate getPublicCert(InputStream publicCert) throws CertificateException { - try { - CertificateFactory cf = CertificateFactory.getInstance("X509"); - Certificate certificate = cf.generateCertificate(publicCert); - return (X509Certificate) certificate; - } catch (CertificateException e) { - throw new CertificateException("Error loading public key certificate"); - } - } - - private static boolean matchUsage(boolean[] keyUsage, int usage) { - if (usage == 0 || keyUsage == null) { - return true; - } - for (int i = 0; i < Math.min(keyUsage.length, 32); i++) { - if ((usage & (1 << i)) != 0 && !keyUsage[i]) { - return false; - } - } - return true; - } - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/jdpay/util/FileUtil.java b/bd-third/src/main/java/com/hzs/third/pay/jdpay/util/FileUtil.java deleted file mode 100644 index 76bbd290..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/jdpay/util/FileUtil.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.hzs.third.pay.jdpay.util; - -import org.springframework.core.io.ClassPathResource; - -import java.io.*; - -public class FileUtil { - - public FileUtil() { - } - - public static byte[] readFile(String filename) { - ClassPathResource classPathResource = new ClassPathResource(filename); - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - BufferedInputStream in = null; - try { - in = new BufferedInputStream(classPathResource.getInputStream()); - byte[] buffer = new byte[1024]; - int len; - while (-1 != (len = in.read(buffer, 0, 1024))) { - bos.write(buffer, 0, len); - } - return bos.toByteArray(); - } catch (IOException var21) { - var21.printStackTrace(); - } finally { - try { - if (null != in) { - in.close(); - } - } catch (IOException var20) { - var20.printStackTrace(); - } - try { - bos.close(); - } catch (IOException var19) { - var19.printStackTrace(); - } - } - return null; - } - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/jdpay/util/GsonUtil.java b/bd-third/src/main/java/com/hzs/third/pay/jdpay/util/GsonUtil.java deleted file mode 100644 index e54c13df..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/jdpay/util/GsonUtil.java +++ /dev/null @@ -1,171 +0,0 @@ -package com.hzs.third.pay.jdpay.util; - -import com.google.gson.ExclusionStrategy; -import com.google.gson.FieldAttributes; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.internal.Primitives; -import com.google.gson.reflect.TypeToken; - -import java.lang.reflect.Type; -import java.util.Collection; -import java.util.Enumeration; -import java.util.Iterator; -import java.util.List; - -/************************************************* - * - * Gson工具类,对Google的gson工具进行封装 - * (1)日期格式yyyyMMddHHmmss - * (2)toJson时支持掩码 - * (3)toJson时支持跳过指定属性 - *************************************************/ -public class GsonUtil { - private static final String EMPTY_JSON = "{}"; - private static final String EMPTY_JSON_ARRAY = "[]"; - private static final String DEFAULT_DATE_PATTERN = "yyyyMMddHHmmss"; - private static final Gson DEFAULT_GSON; - - static { - GsonBuilder builder = new GsonBuilder(); - builder.setDateFormat(DEFAULT_DATE_PATTERN); - DEFAULT_GSON = builder.create(); - DEFAULT_GSON.toJson(null); - } - - public static String toJson(Object target) { - return toJson(target, null, null, null); - } - - public static String toJson(Object target, Type targetType) { - return toJson(target, targetType, null, null); - } - - public static String toMaskJson(Object target) { - return toJson(target, null, null, null); - } - - public static String toMaskJson(Object target, List excludeFields) { - return toJson(target, null, null, excludeFields); - } - - /** - * 打印目标对象的json串 - * - * @param target 目标对象 - * @param targetType 对象类型,可为null - * @param datePattern 日期格式,可为null,若为null则按 DEFAULT_DATE_PATTERN格式输出 - * @param excludeFields 不打印的字段,可为null - * @return 目标对象的标准json串 - */ - public static String toJson(Object target, Type targetType, String datePattern, final List excludeFields) { - if (target == null) { - return EMPTY_JSON; - } - - Gson gson = DEFAULT_GSON; - if (null != datePattern && !"".equals(datePattern)) { - gson = getGson(datePattern); - } - if (isNotEmpty(excludeFields)) { - gson = getStrategyGson(excludeFields); - } - - String result = emptyResult(target); - try { - if (targetType == null) { - targetType = target.getClass(); - } - result = gson.toJson(target, targetType); - } catch (Exception ignore) { - } - return result; - } - - public static T fromJson(String json, TypeToken token) { - return fromJson(json, token, null); - } - - public static T fromJson(String json, TypeToken token, String datePattern) { - return fromJson(json, token.getType(), datePattern); - } - - public static T fromJson(String json, Class classOfT) { - Object object = fromJson(json, (Type) classOfT, null); - return Primitives.wrap(classOfT).cast(object); - } - - public static T fromJson(String json, Class classOfT, String datePattern) { - Object object = fromJson(json, (Type) classOfT, datePattern); - return Primitives.wrap(classOfT).cast(object); - } - - /** - * 将json串转化为目标对象 - * - * @param json json串 - * @param type 目标对象类型 - * @param datePattern json串中日期格式,若为null,则按两个标准日期尝试解析:DEFAULT_DATE_PATTERN和DEFAULT_DATE_PATTERN_1 - * @param - * @return 目标对象 - */ - public static T fromJson(String json, Type type, String datePattern) { - if (null == json || "".equals(json)) { - return null; - } - - if (null == datePattern || "".equals(datePattern)) { - try { - return DEFAULT_GSON.fromJson(json, type); - } catch (Exception ignore) { - } - return null; - } - - try { - Gson gson = getGson(datePattern); - return gson.fromJson(json, type); - } catch (Exception ignore) { - } - return null; - } - - private static Gson getGson(String datePattern) { - GsonBuilder builder = new GsonBuilder(); - builder.setDateFormat(datePattern); - return builder.create(); - } - - private static Gson getStrategyGson(final List excludeFields) { - ExclusionStrategy myExclusionStrategy = new ExclusionStrategy() { - @Override - public boolean shouldSkipField(FieldAttributes fa) { - return excludeFields != null && excludeFields.contains(fa.getName()); - } - - @Override - public boolean shouldSkipClass(Class clazz) { - return false; - } - - }; - return new GsonBuilder().setExclusionStrategies(myExclusionStrategy).create(); - } - - private static boolean isNotEmpty(final List fieldNames) { - return fieldNames != null && !fieldNames.isEmpty(); - } - - private static String emptyResult(Object target) { - if (target == null) { - return EMPTY_JSON; - } - if (target instanceof Collection - || target instanceof Iterator - || target instanceof Enumeration - || target.getClass().isArray()) { - return EMPTY_JSON_ARRAY; - } - return EMPTY_JSON; - } -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/jdpay/util/JdPayApiUtil.java b/bd-third/src/main/java/com/hzs/third/pay/jdpay/util/JdPayApiUtil.java deleted file mode 100644 index 133ca9b7..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/jdpay/util/JdPayApiUtil.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.hzs.third.pay.jdpay.util; - -import com.google.gson.reflect.TypeToken; -import com.hzs.third.pay.jdpay.sdk.JdPayNewConfig; -import com.hzs.third.pay.jdpay.sdk.JdPayConstant; -import com.hzs.third.pay.jdpay.sdk.JdPaySecurity; - -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.HashMap; -import java.util.Map; - -/************************************************* - * - * 京东支付接口工具类 - * - *************************************************/ -public class JdPayApiUtil { - - /** - * 加密和签名 - */ - public static String encryptAndSignature(JdPayNewConfig jdPayNewConfig, String reqNo, String jsonParam) throws IOException { - // 组装公共请求参数 - Map commonParam = fillCommonParam(jdPayNewConfig.getMerchantNo(), reqNo); - // 加密 - byte[] dataBytes = jsonParam.getBytes(StandardCharsets.UTF_8); - JdPaySecurity se = new JdPaySecurity(); - String encData = se.signEnvelop(jdPayNewConfig.getPriCert(), jdPayNewConfig.getPriCertPwd(), jdPayNewConfig.getPubCert(), dataBytes); - commonParam.put(JdPayConstant.ENC_DATA, encData); - // 签名 - String sign = SignUtil.sign(commonParam, JdPayConstant.SHA256, jdPayNewConfig.getSignKey(), JdPayConstant.UTF8); - commonParam.put(JdPayConstant.SIGN_DATA, sign); - return GsonUtil.toJson(commonParam); - } - - /** - * 解密和验签 - */ - public static String decryptAndVerifySign(JdPayNewConfig jdPayNewConfig, String respText) throws Exception { - Map respMap = GsonUtil.fromJson(respText, new TypeToken>() { - }); - String code = respMap.get(JdPayConstant.CODE); - if (!JdPayConstant.SUCCESS_CODE.equals(code)) { - return respText; - } - if (!respMap.containsKey(JdPayConstant.SIGN_DATA)) { - throw new Exception(String.format("No sign field in response: %s", respText)); - } - String sign = respMap.remove(JdPayConstant.SIGN_DATA); - String signType = respMap.get(JdPayConstant.SIGN_TYPE); - String charset = respMap.get(JdPayConstant.CHARSET); - boolean isRespSignValid = SignUtil.verify(sign, respMap, signType, jdPayNewConfig.getSignKey(), charset); - if (!isRespSignValid) { - throw new Exception(String.format("Invalid sign value in response: %s", respText)); - } - return SignUtil.decodeBase64(respMap.get(JdPayConstant.RESP_DATA), respMap.get(JdPayConstant.CHARSET), false, false); - } - - /** - * 组装api公共参数赋值 - */ - private static Map fillCommonParam(String merchantNo, String reqNo) { - - Map reqMap = new HashMap<>(); - // 二级商户号 - reqMap.put(JdPayConstant.MERCHANT_NO, merchantNo); - //商户生成的唯一标识,可以与outTradeNo一致 - reqMap.put(JdPayConstant.REQ_NO, reqNo); - //字符集 - reqMap.put(JdPayConstant.CHARSET, JdPayConstant.UTF8); - //固定值 - reqMap.put(JdPayConstant.FORMAT_TYPE, JdPayConstant.JSON); - //签名类型 - reqMap.put(JdPayConstant.SIGN_TYPE, JdPayConstant.SHA256); - //固定值,证书加密 - reqMap.put(JdPayConstant.ENC_TYPE, JdPayConstant.AP7); - return reqMap; - } - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/jdpay/util/SignUtil.java b/bd-third/src/main/java/com/hzs/third/pay/jdpay/util/SignUtil.java deleted file mode 100644 index ef3b0ec1..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/jdpay/util/SignUtil.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.hzs.third.pay.jdpay.util; - -import com.hzs.third.pay.jdpay.sdk.JdPayConstant; -import org.apache.commons.codec.binary.Base64; -import org.apache.commons.codec.binary.BaseNCodec; -import org.apache.commons.codec.digest.DigestUtils; - -import java.io.UnsupportedEncodingException; -import java.security.NoSuchAlgorithmException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Map; - -public class SignUtil { - - private static final String[] HEX_STRINGS; - - static { - HEX_STRINGS = new String[256]; - for (int i = 0; i < 256; i++) { - StringBuilder d = new StringBuilder(2); - char ch = Character.forDigit(((byte) i >> 4) & 0x0F, 16); - d.append(Character.toUpperCase(ch)); - ch = Character.forDigit((byte) i & 0x0F, 16); - d.append(Character.toUpperCase(ch)); - HEX_STRINGS[i] = d.toString(); - } - } - - /** - * 计算签名 - * - * @param map 有key和value的map,使用=和&拼接所有参数, - * "sign_type", "sign_data", "encrypt_type", "encrypt_data"不参加计算 - * @param algorithm 签名算法 MD5, SHA-1, SHA-256 - * @param salt 签名密钥 - * @param charset 字符串编码 - * @return 签名 - */ - public static String sign(Map map, String algorithm, String salt, String charset) throws UnsupportedEncodingException { - String linkString = map2LinkString(map); - String data = linkString + salt; - return digestHex(algorithm, data, charset); - } - - /** - * 验证签名正确性。 - * - * @param sign 签名数据 - * @param map 数据 - * @param algorithm 签名算法 MD5, SHA-1, SHA-256 - * @param salt 签名密钥 - * @param charset 字符串 - * @return 验证结果 - */ - public static boolean verify(String sign, - Map map, - String algorithm, - String salt, - String charset) throws UnsupportedEncodingException { - if (sign == null || "".equals(sign.trim()) || map.size() == 0) { - return false; - } - String newSign = sign(map, algorithm, salt, charset); - return newSign.equals(sign); - } - - /** - * 验证页面回调 - * - * @param respMap 页面回调参数 - * @param signKey signKey - * @return 验证结果 - * @throws NoSuchAlgorithmException - */ - public static boolean verifyPageCallBackSign(Map respMap, String signKey) throws UnsupportedEncodingException { - String sign = respMap.remove("sign"); - String newSign = sign(respMap, JdPayConstant.SHA256, signKey, JdPayConstant.UTF8); - return newSign.equals(sign); - } - - /** - * 将MAP数据用=和&拼接成String - * - * @param map 数据 - * @return 字符串 - */ - public static String map2LinkString(Map map) { - ArrayList mapKeys = new ArrayList(map.keySet()); - Collections.sort(mapKeys); - StringBuilder link = new StringBuilder(2048); - for (String key : mapKeys) { - String value = map.get(key); - // 属性为空不参与签名 - if (value == null || "".equals(value.trim())) { - continue; - } - link.append(key).append("=").append(value).append("&"); - } - // 删除末尾的& - link.deleteCharAt(link.length() - 1); - return link.toString(); - } - - /** - * 对数据进行指定算法的数据摘要 - * - * @param algorithm 算法名,如MD2, MD5, SHA-1, SHA-256, SHA-512 - * @param data 待计算的数据 - * @param charset 字符串的编码 - * @return 摘要结果 - */ - public static String digestHex(String algorithm, String data, String charset) throws UnsupportedEncodingException { - byte[] digest = DigestUtils.getDigest(algorithm).digest(data.getBytes(charset)); - return hexString(digest); - } - - /** - * 将字节数组转换成HEX String - * - * @param b - * @return HEX String - */ - public static String hexString(byte[] b) { - StringBuilder d = new StringBuilder(b.length * 2); - for (byte aB : b) { - d.append(HEX_STRINGS[(int) aB & 0xFF]); - } - return d.toString(); - } - - /** - * 对数据进行BASE64解码 - * - * @param base64Data Base64数据 - * @param charset 解码的编码格式 - * @param urlSafe 是否是URL安全的,如果为true,则将会被URL编码的'+', '/'转成'-', '_' - * @param oneLine 是否是一行 - * @return 解码后数据 - */ - public static String decodeBase64(String base64Data, String charset, boolean urlSafe, boolean oneLine) throws UnsupportedEncodingException { - Base64 base64 = oneLine ? new Base64(BaseNCodec.MIME_CHUNK_SIZE, null, urlSafe) : new Base64(urlSafe); - byte[] binaryData = base64.decode(base64Data); - return new String(binaryData, charset); - } - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/listener/AdaPayLoadListener.java b/bd-third/src/main/java/com/hzs/third/pay/listener/AdaPayLoadListener.java index d40aa66c..64aa9723 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/listener/AdaPayLoadListener.java +++ b/bd-third/src/main/java/com/hzs/third/pay/listener/AdaPayLoadListener.java @@ -14,11 +14,7 @@ import java.util.HashMap; import java.util.Map; /** - * @Description: 汇付支付启支配置 - * @Author: jiang chao - * @Time: 2023/2/13 14:37 - * @Classname: AdaPayLoadListener - * @PackageName: com.hzs.web.ada.listener + * 汇付支付启支配置 */ //@Component @Slf4j diff --git a/bd-third/src/main/java/com/hzs/third/pay/listener/HuiFuLoadListener.java b/bd-third/src/main/java/com/hzs/third/pay/listener/HuiFuLoadListener.java index 979994d4..d3bf9e4a 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/listener/HuiFuLoadListener.java +++ b/bd-third/src/main/java/com/hzs/third/pay/listener/HuiFuLoadListener.java @@ -12,11 +12,7 @@ import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; /** - * @Description: 汇付新支付地启动配置 - * @Author: jiang chao - * @Time: 2024/12/5 11:09 - * @Classname: HuiFuLoadListener - * @PackageName: com.hzs.third.pay.listener + * 汇付新支付地启动配置 */ //@Component @Slf4j diff --git a/bd-third/src/main/java/com/hzs/third/pay/service/IAliPayService.java b/bd-third/src/main/java/com/hzs/third/pay/service/IAliPayService.java deleted file mode 100644 index 7ba34d85..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/service/IAliPayService.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.hzs.third.pay.service; - -import com.hzs.common.core.domain.R; -import com.hzs.common.domain.third.pay.TOnlinePayment; - -/** - * 阿里支付服务 - */ -public interface IAliPayService { - - /** - * 扫码预下单 - * - * @param onlinePayment - * @return - */ - R prePayScan(TOnlinePayment onlinePayment); - - /** - * H5预下单 - * - * @param onlinePayment - * @return - */ - R prePayH5(TOnlinePayment onlinePayment); - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/service/IJdPayService.java b/bd-third/src/main/java/com/hzs/third/pay/service/IJdPayService.java deleted file mode 100644 index 15b633c2..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/service/IJdPayService.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.hzs.third.pay.service; - -import com.hzs.common.core.domain.R; -import com.hzs.common.core.enums.EDataSource; -import com.hzs.common.domain.third.pay.TOnlinePayment; - -/** - * 京东支付服务 - */ -public interface IJdPayService { - - /** - * 扫码支付 - * - * @param onlinePayment - * @return - */ - R scanPay(TOnlinePayment onlinePayment); - - /** - * 银行卡支付 - * - * @param onlinePayment - * @param bindCode - * @return - */ - R bankPay(TOnlinePayment onlinePayment, String bindCode); - - /** - * 收银台支付 - * - * @param onlinePayment - * @param dataSource - * @return - */ - R cashRegister(TOnlinePayment onlinePayment, EDataSource dataSource); - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/service/IRefundService.java b/bd-third/src/main/java/com/hzs/third/pay/service/IRefundService.java index 313a7966..9b1bc4b5 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/service/IRefundService.java +++ b/bd-third/src/main/java/com/hzs/third/pay/service/IRefundService.java @@ -34,24 +34,6 @@ public interface IRefundService { */ String baoFuRefundHandle(RefundDTO refundDTO, TOnlinePayment tOnlinePayment); - /** - * 京东退款处理 - * - * @param refundDTO 业务类型 - * @param tOnlinePayment 退款对应支付信息 - * @return - */ - String jdRefundHandle(RefundDTO refundDTO, TOnlinePayment tOnlinePayment); - - /** - * 京东收银台退款处理 - * - * @param refundDTO 业务类型 - * @param tOnlinePayment 退款对应支付信息 - * @return - */ - String jdCashRefundHandle(RefundDTO refundDTO, TOnlinePayment tOnlinePayment); - /** * 通联退款处理 * diff --git a/bd-third/src/main/java/com/hzs/third/pay/service/ISandPayService.java b/bd-third/src/main/java/com/hzs/third/pay/service/ISandPayService.java index b75082b5..850c2e2e 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/service/ISandPayService.java +++ b/bd-third/src/main/java/com/hzs/third/pay/service/ISandPayService.java @@ -8,28 +8,28 @@ import com.hzs.common.domain.third.pay.TOnlinePayment; */ public interface ISandPayService { - /** - * 扫码支付(微信、支付宝) - * - * @param onlinePayment 在线支付信息 - * @return - */ - R scanPay(TOnlinePayment onlinePayment); - - /** - * H5微信支付 - * - * @param onlinePayment 在线支付信息 - * @return - */ - R weChatH5(TOnlinePayment onlinePayment); - - /** - * H5支付宝支付 - * - * @param onlinePayment 在线支付信息 - * @return - */ - R aliH5(TOnlinePayment onlinePayment); +// /** +// * 扫码支付(微信、支付宝) +// * +// * @param onlinePayment 在线支付信息 +// * @return +// */ +// R scanPay(TOnlinePayment onlinePayment); +// +// /** +// * H5微信支付 +// * +// * @param onlinePayment 在线支付信息 +// * @return +// */ +// R weChatH5(TOnlinePayment onlinePayment); +// +// /** +// * H5支付宝支付 +// * +// * @param onlinePayment 在线支付信息 +// * @return +// */ +// R aliH5(TOnlinePayment onlinePayment); } diff --git a/bd-third/src/main/java/com/hzs/third/pay/service/IWeChatPayService.java b/bd-third/src/main/java/com/hzs/third/pay/service/IWeChatPayService.java deleted file mode 100644 index d7f0ad51..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/service/IWeChatPayService.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.hzs.third.pay.service; - -import com.hzs.common.core.domain.R; -import com.hzs.common.domain.third.pay.TOnlinePayment; - -/** - * 微信支付服务 - */ -public interface IWeChatPayService { - - /** - * 扫码预下单 - * - * @param onlinePayment - * @return - */ - R prePayScan(TOnlinePayment onlinePayment); - - /** - * H5预下单 - * - * @param onlinePayment - * @return - */ - R prePayH5(TOnlinePayment onlinePayment); - - /** - * APP预下单 - * - * @param onlinePayment - * @return - */ - R prePayAPP(TOnlinePayment onlinePayment); - -// /** -// * 小程序下单 -// * -// * @param onlinePayment -// * @param openId -// * @return -// */ -// R prePayApplet(TOnlinePayment onlinePayment, String openId); - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/service/impl/AliPayServiceImpl.java b/bd-third/src/main/java/com/hzs/third/pay/service/impl/AliPayServiceImpl.java deleted file mode 100644 index 1000ff3f..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/service/impl/AliPayServiceImpl.java +++ /dev/null @@ -1,150 +0,0 @@ -package com.hzs.third.pay.service.impl; - -import cn.hutool.json.JSONObject; -import cn.hutool.json.JSONUtil; -import com.alipay.api.AlipayClient; -import com.alipay.api.AlipayResponse; -import com.alipay.api.DefaultAlipayClient; -import com.alipay.api.request.AlipayTradePagePayRequest; -import com.alipay.api.request.AlipayTradeWapPayRequest; -import com.hzs.common.core.constant.Constants; -import com.hzs.common.core.domain.R; -import com.hzs.common.domain.third.pay.TOnlinePayment; -import com.hzs.third.pay.config.AliPayConfig; -import com.hzs.third.pay.service.IAliPayService; -import com.hzs.third.pay.util.AliPayUtil; -import com.hzs.third.pay.util.PayUtil; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -/** - * 阿里支付服务 - */ -@Slf4j -@Service -public class AliPayServiceImpl implements IAliPayService { - - @Autowired - private AliPayConfig aliPayConfig; - - /** - * 扫码预下单 - * - * @param onlinePayment - * @return - */ - @Override - public R prePayScan(TOnlinePayment onlinePayment) { - try { - // 与三方对接,需要扩展支付订单号,用于标记业务 - String thirdOrderCode = PayUtil.getThirdOrderCode(onlinePayment.getBusinessCode(), null); - onlinePayment.setOriginalOrder(thirdOrderCode); - - // 实例化客户端 - AlipayClient alipayClient = new DefaultAlipayClient(aliPayConfig.getServerUrl(), aliPayConfig.getAppId(), aliPayConfig.getPrivateKey(), aliPayConfig.getFormat(), Constants.UTF8, aliPayConfig.getPublicKey(), aliPayConfig.getSignType()); - // PC支付实例化 - AlipayTradePagePayRequest pcPayRequest = new AlipayTradePagePayRequest(); - - // 请求参数 - JSONObject bizContent = new JSONObject(); - // 商户订单号 - bizContent.putOpt("out_trade_no", thirdOrderCode); - // 单位为元,精确到小数点后两位 - bizContent.putOpt("total_amount", onlinePayment.getPayMoney().toString()); - // 订单标题 - bizContent.putOpt("subject", "支付宝支付:" + onlinePayment.getBusinessCode()); - // 支付宝会在异步通知时将该参数原样返回 - bizContent.putOpt("passback_params", onlinePayment.getBusinessType()); - // 销售产品码(电脑支付场景:FAST_INSTANT_TRADE_PAY) - bizContent.putOpt("product_code", "FAST_INSTANT_TRADE_PAY"); - // PC扫码支付的方式 - bizContent.putOpt("qr_pay_mode", "4"); - // 生成的扫码大小 - bizContent.putOpt("qrcode_width", 200); - - pcPayRequest.setBizContent(bizContent.toString()); - pcPayRequest.setNotifyUrl(aliPayConfig.getNotifyUrl()); - - log.info("阿里PC支付请求参数: {}", JSONUtil.toJsonStr(pcPayRequest)); - - // 支付回调 - AlipayResponse response = alipayClient.pageExecute(pcPayRequest); - - log.info("阿里PC支付返回: {}", JSONUtil.toJsonStr(response)); - - if (response.isSuccess()) { - // 阿里返回PC订单信息 - return R.ok(response.getBody()); - } else { - // 返回错误结果 - String resultError = AliPayUtil.handResultError(response); - if (null != resultError) { - log.error("阿里PC支付调用预下单失败! {}", resultError); - } - } - } catch (Exception e) { - log.error("阿里PC支付调用处理异常", e); - } - return R.fail("阿里PC支付调用处理失败"); - } - - - /** - * H5预下单 - * - * @param onlinePayment - * @return - */ - @Override - public R prePayH5(TOnlinePayment onlinePayment) { - try { - // 与三方对接,需要扩展支付订单号,用于标记业务 - String thirdOrderCode = PayUtil.getThirdOrderCode(onlinePayment.getBusinessCode(), null); - onlinePayment.setOriginalOrder(thirdOrderCode); - - // 实例化客户端 - AlipayClient alipayClient = new DefaultAlipayClient(aliPayConfig.getServerUrl(), aliPayConfig.getAppId(), aliPayConfig.getPrivateKey(), aliPayConfig.getFormat(), Constants.UTF8, aliPayConfig.getPublicKey(), aliPayConfig.getSignType()); - // APP支付实例化 - AlipayTradeWapPayRequest appPayRequest = new AlipayTradeWapPayRequest(); - - // 请求参数 - JSONObject bizContent = new JSONObject(); - // 商户订单号 - bizContent.putOpt("out_trade_no", thirdOrderCode); - // 单位为元,精确到小数点后两位 - bizContent.putOpt("total_amount", onlinePayment.getPayMoney().toString()); - // 订单标题 - bizContent.putOpt("subject", "支付宝支付:" + onlinePayment.getBusinessCode()); - // 支付宝会在异步通知时将该参数原样返回 - bizContent.putOpt("passback_params", onlinePayment.getBusinessType()); - // 销售产品码(手机支付场景:QUICK_WAP_WAY) - bizContent.putOpt("product_code", "QUICK_WAP_WAY"); - - appPayRequest.setBizContent(bizContent.toString()); - appPayRequest.setNotifyUrl(aliPayConfig.getNotifyUrl()); - - log.info("阿里H5支付请求参数: {}", JSONUtil.toJsonStr(appPayRequest)); - - AlipayResponse response = alipayClient.pageExecute(appPayRequest); - - log.info("阿里H5支付返回: {}", JSONUtil.toJsonStr(response)); - - if (response.isSuccess()) { - // 阿里返回APP订单信息 - return R.ok(response.getBody()); - } else { - // 返回错误结果 - String resultError = AliPayUtil.handResultError(response); - if (null != resultError) { - log.error("阿里H5支付调用预下单失败! {}", resultError); - } - } - } catch (Exception e) { - log.error("阿里H5支付调用处理异常", e); - } - return R.fail("阿里H5支付调用处理失败"); - } - - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/service/impl/JdPayServiceImpl.java b/bd-third/src/main/java/com/hzs/third/pay/service/impl/JdPayServiceImpl.java deleted file mode 100644 index b6e58684..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/service/impl/JdPayServiceImpl.java +++ /dev/null @@ -1,264 +0,0 @@ -package com.hzs.third.pay.service.impl; - -import cn.hutool.json.JSONUtil; -import com.hzs.common.core.config.BdConfig; -import com.hzs.common.core.domain.R; -import com.hzs.common.core.enums.EBindStatus; -import com.hzs.common.core.enums.EDataSource; -import com.hzs.common.core.enums.EEnv; -import com.hzs.common.core.utils.DateUtils; -import com.hzs.common.domain.third.pay.TOnlineCard; -import com.hzs.common.domain.third.pay.TOnlinePayment; -import com.hzs.third.pay.config.JdPayConfig; -import com.hzs.third.pay.constants.JdPayConstants; -import com.hzs.third.pay.constants.PayRedisConstants; -import com.hzs.third.pay.dto.jd.JdFastDTO; -import com.hzs.third.pay.dto.jd.JdFastResult; -import com.hzs.third.pay.dto.jd.JdScanDTO; -import com.hzs.third.pay.dto.jd.JdScanResult; -import com.hzs.third.pay.enums.EJdAppType; -import com.hzs.third.pay.enums.EJdTerminalType; -import com.hzs.third.pay.jdpay.dto.JdPayAggregateCreateOrderRequest; -import com.hzs.third.pay.jdpay.dto.JdPayAggregateCreateOrderResponse; -import com.hzs.third.pay.jdpay.sdk.JdPay; -import com.hzs.third.pay.service.IJdPayService; -import com.hzs.third.pay.service.ITOnlineCardService; -import com.hzs.third.pay.util.JdPayUtil; -import com.hzs.third.pay.util.PayUtil; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.stereotype.Service; - -import javax.annotation.Resource; -import java.math.BigDecimal; -import java.net.InetAddress; -import java.util.concurrent.TimeUnit; - -/** - * 京东支付服务 - */ -@Slf4j -@Service -public class JdPayServiceImpl implements IJdPayService { - - @Autowired - private JdPayConfig jdPayConfig; - @Autowired - private ITOnlineCardService itOnlineCardService; - @Resource - private JdPay jdPay; - - @Autowired - private RedisTemplate redisTemplate; - - /** - * 页面回调地址 - */ - @Value("${jd.pay.pageBackUrl}") - private String pageBackUrl; - /** - * 支付回调地址 - */ - @Value("${jd.pay.notifyUrl}") - private String notifyUrl; - - - @Override - public R scanPay(TOnlinePayment onlinePayment) { - try { - // 京东付款码缓存KEY - String scanKey = String.format(PayRedisConstants.JD_SCAN_KEY, onlinePayment.getBusinessType(), onlinePayment.getBusinessCode()); - if (redisTemplate.hasKey(scanKey)) { - Object payInfo = redisTemplate.opsForValue().get(scanKey); - if (null != payInfo) { - return R.ok(payInfo.toString()); - } - } - - // 生成请求实体 - JdScanDTO jdScan = JdScanDTO.builder() - // 商户编号 - .customerNum(jdPayConfig.getCustomerNum()) - // 店铺编号 - .shopNum(jdPayConfig.getShopNum()) - // 回调地址 - .callbackUrl(jdPayConfig.getCallbackUrl()) - // 商户订单号 - .requestNum(onlinePayment.getBusinessCode()) - // 订单金额(元) - .amount(onlinePayment.getPayMoney().toString()) - // 固定传入:API - .source("API") - // 扩展信息 - .extraInfo(onlinePayment.getBusinessType().toString()) - .build(); - String body = JSONUtil.toJsonStr(jdScan); - - log.info("京东扫码支付请求参数: {}", body); - - String postResult = JdPayUtil.requestOrder(JdPayConstants.METHOD_SCAN, body, jdPayConfig.getSecretKey(), jdPayConfig.getAccessKey()); - - log.info("京东扫码支付返回数据: {}", postResult); - - // 返回结果 - JdScanResult scanResult = JSONUtil.toBean(postResult, JdScanResult.class); - - if (JdPayConstants.RESULT_SUCCESS.equals(scanResult.getResult())) { - // 请求成功,返回二维码 - String qrCode = scanResult.getData().getUrl(); - - // 付款码redis保存24小时 - redisTemplate.opsForValue().set(scanKey, qrCode, 24, TimeUnit.HOURS); - - return R.ok(qrCode); - } - log.info("京东扫码支付返回失败"); - } catch (Exception e) { - log.error("京东扫码支付返回异常", e); - } - return R.fail("京东扫码支付返回失败"); - } - - @Override - public R bankPay(TOnlinePayment onlinePayment, String bindCode) { - try { - // 与三方对接,需要扩展支付订单号,用于标记业务 - String thirdOrderCode = PayUtil.getThirdOrderCode(onlinePayment.getBusinessCode(), null); - onlinePayment.setOriginalOrder(thirdOrderCode); - - TOnlineCard tOnlineCard = itOnlineCardService.queryCardByCode(bindCode, onlinePayment.getPkModified(), jdPayConfig.getCustomerNum(), onlinePayment.getPkCountry()); - if (null == tOnlineCard || EBindStatus.BIND.getValue() != tOnlineCard.getBindStatus()) { - return R.fail("用户未绑定该银行卡"); - } - - JdFastDTO jdFastDTO = JdFastDTO.builder() - .version(JdPayConstants.PAY_VERSION) - // 商户编号 - .customerNum(jdPayConfig.getCustomerNum()) - // 店铺编号 - .shopNum(jdPayConfig.getShopNum()) - // 回调地址 - .callbackUrl(jdPayConfig.getCallbackUrl()) - .clientIp(InetAddress.getLocalHost().getHostAddress()) - // 商户订单号 - .requestNum(thirdOrderCode) - // 订单金额(元) - .orderAmount(onlinePayment.getPayMoney().toString()) - // 用户编号 - .userId(onlinePayment.getPkModified().toString()) - // 绑卡ID - .bindId(tOnlineCard.getBindId()) - .goodsName("购买商品") - .goodsQuantity("1") - // 终端类型 - .terminalType(EJdTerminalType.OTHER.getLabel()) - // 终端标记 - .terminalId(JdPayConstants.TERMINAL_ID) - // 用户注册账号 - .userAccount(JdPayConstants.USER_ACCOUNT) - .appType(EJdAppType.H5.getLabel()) - .appName(JdPayConstants.APP_NAME) - .tradeScene(JdPayConstants.FAST_TRADESCENE_QUICKPAY) - .source("API") - // 设置订单24小时失效 - .period("24") - .periodUnit("Hour") - .extraInfo(onlinePayment.getBusinessType().toString()) - .build(); - String body = JSONUtil.toJsonStr(jdFastDTO); - - log.info("京东银行卡下单请求参数: {}", body); - - String postResult = JdPayUtil.requestOrder(JdPayConstants.METHOD_PRE_ORDER, body, jdPayConfig.getSecretKey(), jdPayConfig.getAccessKey()); - - log.info("京东银行卡下单返回数据: {}", postResult); - - // 返回结果 - JdFastResult fastResult = JSONUtil.toBean(postResult, JdFastResult.class); - - if (fastResult.isSuccess() && JdPayConstants.RESULT_SUCCESS.equals(fastResult.getCode())) { - // 返回成功 - return R.ok(); - } - log.error("京东银行卡下单返回失败: {}", fastResult.getMsg()); - } catch (Exception e) { - log.error("京东银行卡下单异常!", e); - } - return R.fail("京东银行卡下单返回失败"); - } - - @Override - public R cashRegister(TOnlinePayment onlinePayment, EDataSource dataSource) { - try { - // 交易场景(ONLINE_APP:线上移动端 ONLINE_PC:线上PC) - String sceneType = "ONLINE_APP"; - // 交易类型(AGGRE:聚合收银台 AGGRE_QR:PC扫码) - String tradeType = "AGGRE"; - if (null != dataSource && EDataSource.PC.getValue().equals(dataSource.getValue())) { - sceneType = "ONLINE_PC"; - tradeType = "AGGRE_QR"; - } - - String userId = onlinePayment.getPkCreator().toString(); - if (EEnv.TEST.getValue().equals(BdConfig.getEnv())) { - userId = "T_" + userId; - } - - JdPayAggregateCreateOrderRequest request = JdPayAggregateCreateOrderRequest.builder() - // 商户订单号(最大32位) - .outTradeNo(onlinePayment.getBusinessCode()) - // 订单总金额(单位:分) - .tradeAmount(onlinePayment.getPayMoney().multiply(new BigDecimal("100")).intValue() + "") - // 订单创建时间(最大14位:yyyyMMddHHmmss) - .createDate(DateUtils.parseDateToFormat(DateUtils.YAMMERERS, onlinePayment.getCreationTime())) - // 订单有效时长(分钟) - .tradeExpiryTime("1440") - // 交易名称 - .tradeSubject("支付:" + onlinePayment.getBusinessCode()) - // 交易描述 - .tradeRemark("支付:" + onlinePayment.getBusinessCode()) - // 币种 - .currency("CNY") - // 用户IP - .userIp(InetAddress.getLocalHost().getHostAddress()) - // 通道业务类型 - .bizTp("100001") - // 回传字段 - .returnParams(onlinePayment.getBusinessType().toString()) - // 用户标识(收银台必传) - .userId(userId) - // 同步通知URL(收银台必传,页面回调地址) - .pageBackUrl(this.pageBackUrl) - // 支付回调地址 - .notifyUrl(this.notifyUrl) - // 交易类型 - .tradeType(tradeType) - // 交易场景(ONLINE_APP:线上移动端 ONLINE_PC:线上PC) - .sceneType(sceneType) - .build(); - - // 请求京东支付接口 - JdPayAggregateCreateOrderResponse response = jdPay.aggregateCreateOrder(request); - - if ("0000".equals(response.getResultCode())) { - // 请求响应成功 - // 京东唯一订单号 - onlinePayment.setPayNumber(response.getTradeNo()); - - if ("AGGRE_QR".equals(tradeType)) { - return R.ok(response.getQrCode()); - } - return R.ok(response.getWebUrl()); - } else { - log.error("京东收银台返回失败,resultDesc: {}", response.getResultDesc()); - return R.fail("调用京东收银台返回失败"); - } - } catch (Exception e) { - log.error("京东收银台处理异常!", e); - return R.fail("京东收银台处理异常"); - } - } - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/service/impl/RefundServiceImpl.java b/bd-third/src/main/java/com/hzs/third/pay/service/impl/RefundServiceImpl.java index e0d67d8f..8c93daa0 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/service/impl/RefundServiceImpl.java +++ b/bd-third/src/main/java/com/hzs/third/pay/service/impl/RefundServiceImpl.java @@ -14,13 +14,9 @@ import com.hzs.sale.refund.ISaRefundServiceApi; import com.hzs.third.pay.config.*; import com.hzs.third.pay.constants.*; import com.hzs.third.pay.dto.RefundDTO; -import com.hzs.third.pay.jdpay.dto.JdPayRefundRequest; -import com.hzs.third.pay.jdpay.dto.JdPayRefundResponse; -import com.hzs.third.pay.jdpay.sdk.JdPay; import com.hzs.third.pay.service.IAllInPayService; import com.hzs.third.pay.service.IRefundService; import com.hzs.third.pay.service.ITOnlineRefundService; -import com.hzs.third.pay.util.JdPayUtil; import com.hzs.third.pay.util.baofu.SignatureUtils; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.config.annotation.DubboReference; @@ -28,7 +24,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import javax.annotation.Resource; import java.math.BigDecimal; import java.net.InetAddress; import java.text.DecimalFormat; @@ -50,16 +45,12 @@ public class RefundServiceImpl implements IRefundService { @Autowired private BaoFuPayConfig baoFuPayConfig; @Autowired - private JdPayConfig jdPayConfig; - @Autowired private AllInPayConfig allInPayConfig; @Autowired private IAllInPayService iAllInPayService; @Autowired private ITOnlineRefundService itOnlineRefundService; - @Resource - private JdPay jdPay; /** * 支付回调地址 */ @@ -239,137 +230,6 @@ public class RefundServiceImpl implements IRefundService { } } - @Override - public String jdRefundHandle(RefundDTO refundDTO, TOnlinePayment tOnlinePayment) { - try { - // 退款金额(默认按全款退) - BigDecimal amount = tOnlinePayment.getPayMoney(); - if (null != refundDTO.getRefundAmount()) { - // 如果传入实际退款金额,则按实际退款金额处理 - amount = refundDTO.getRefundAmount(); - } - - // 退款编号 - String refundCode = CommonUtil.createSerialNumber(EOrderPrefix.REFUND_CODE); - - Map requestMap = new HashMap<>(); - requestMap.put("version", JdPayConstants.PAY_VERSION); - // 商户编号 - requestMap.put("customerNum", jdPayConfig.getCustomerNum()); - // 店铺编号 - requestMap.put("shopNum", jdPayConfig.getShopNum()); - - // 商户订单号 - requestMap.put("requestNum", tOnlinePayment.getOriginalOrder()); - // 商户退款订单号 - requestMap.put("refundRequestNum", refundCode); - // 退款金额 - requestMap.put("refundPartAmount", amount.toString()); - // 退款回调地址 - requestMap.put("callbackUrl", jdPayConfig.getRefundCallbackUrl()); - - String body = JSONUtil.toJsonStr(requestMap); - - log.info("京东退款请求参数: {}", body); - - String postResult = JdPayUtil.requestOrder(JdPayConstants.REFUND_ORDER, body, jdPayConfig.getSecretKey(), jdPayConfig.getAccessKey()); - - log.info("京东退款返回数据: {}", postResult); - - Map resultMap = JSONUtil.toBean(postResult, HashMap.class); - - if (JdPayConstants.RESULT_SUCCESS.equals(resultMap.get("result").toString())) { - // 返回成功 - - // 返回业务数据 - cn.hutool.json.JSONObject jsonObject = JSONUtil.parseObj(resultMap.get("data")); - - // 申请退款成功,保存退款 - TOnlineRefund tOnlineRefund = new TOnlineRefund(); - tOnlineRefund.setRefundCode(refundCode); - tOnlineRefund.setPkOnlinePayment(tOnlinePayment.getPkId()); - tOnlineRefund.setBusinessCode(refundDTO.getRefundBusinessCode()); - tOnlineRefund.setRefundMoney(amount); - tOnlineRefund.setRefundChannel(tOnlinePayment.getPayChannel()); - tOnlineRefund.setRefundNumber(jsonObject.getStr("orderNum")); - tOnlineRefund.setPkCountry(refundDTO.getPkCountry()); - tOnlineRefund.setPkCreator(refundDTO.getUserId()); - if (itOnlineRefundService.save(tOnlineRefund)) { - return null; - } - log.error("调用京东退款入库失败, tOnlineRefund: {}", tOnlineRefund); - } else { - log.error("调用京东退款返回失败:{}", resultMap.get("errorMsg")); - } - return "退款失败,请重试"; - } catch (Exception e) { - log.error("调用京东退款处理返回异常!", e); - return "退款异常,请重试"; - } - } - - @Override - public String jdCashRefundHandle(RefundDTO refundDTO, TOnlinePayment tOnlinePayment) { - try { - // 退款金额(默认按全款退) - BigDecimal amount = tOnlinePayment.getPayMoney(); - if (null != refundDTO.getRefundAmount()) { - // 如果传入实际退款金额,则按实际退款金额处理 - amount = refundDTO.getRefundAmount(); - } - - // 退款编号 - String refundCode = CommonUtil.createSerialNumber(EOrderPrefix.REFUND_CODE); - // 当前时间 - Date nowDate = new Date(); - - JdPayRefundRequest request = JdPayRefundRequest.builder() - // 退款订单号 - .outTradeNo(refundCode) - // 原订单号(需要退款的订单号) - .originalOutTradeNo(tOnlinePayment.getBusinessCode()) - // 退款时间 - .tradeDate(DateUtils.parseDateToFormat(DateUtils.YAMMERERS, nowDate)) - // 退款金额 - .tradeAmount(amount.multiply(new BigDecimal("100")).intValue() + "") - // 货币种类 - .currency("CNY") - // 退款回调地址 - .notifyUrl(this.refundNotifyUrl) - // 回传信息 -// .returnParams("") - .build(); - - // 请求京东退款接口 - JdPayRefundResponse response = jdPay.refund(request); - - if ("0000".equals(response.getResultCode())) { - // 请求响应成功 - // 申请退款成功,保存退款 - TOnlineRefund tOnlineRefund = new TOnlineRefund(); - tOnlineRefund.setRefundCode(refundCode); - tOnlineRefund.setPkOnlinePayment(tOnlinePayment.getPkId()); - tOnlineRefund.setBusinessCode(refundDTO.getRefundBusinessCode()); - tOnlineRefund.setRefundMoney(amount); - tOnlineRefund.setRefundChannel(tOnlinePayment.getPayChannel()); - tOnlineRefund.setRefundNumber(response.getTradeNo()); - tOnlineRefund.setPkCountry(refundDTO.getPkCountry()); - tOnlineRefund.setPkCreator(refundDTO.getUserId()); - if (itOnlineRefundService.save(tOnlineRefund)) { - return null; - } else { - log.error("调用京东收银台退款入库处理失败,desc: {}", response.getResultDesc()); - return "退款失败,请联系系统管理员处理"; - } - } - log.error("调用京东收银台退款处理失败,desc: {}", response.getResultDesc()); - return "退款失败,请重试"; - } catch (Exception e) { - log.error("调用京东收银台退款处理返回异常!", e); - return "退款异常,请重试"; - } - } - @Override public String allInRefundHandle(RefundDTO refundDTO, TOnlinePayment tOnlinePayment) { try { diff --git a/bd-third/src/main/java/com/hzs/third/pay/service/impl/SandPayServiceImpl.java b/bd-third/src/main/java/com/hzs/third/pay/service/impl/SandPayServiceImpl.java index 809ebef2..2e7f6513 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/service/impl/SandPayServiceImpl.java +++ b/bd-third/src/main/java/com/hzs/third/pay/service/impl/SandPayServiceImpl.java @@ -4,7 +4,6 @@ import cn.hutool.core.net.URLEncoder; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; -import com.alipay.api.internal.util.AlipaySignature; import com.hzs.common.core.constant.Constants; import com.hzs.common.core.domain.R; import com.hzs.common.core.utils.DateUtils; @@ -40,200 +39,200 @@ public class SandPayServiceImpl implements ISandPayService { @Autowired private RedisTemplate redisTemplate; - /** - * 扫码支付(微信、支付宝) - * - * @param onlinePayment - * @return - */ - @Override - public R scanPay(TOnlinePayment onlinePayment) { - try { - // 杉德付款码缓存KEY - String scanKey = String.format(PayRedisConstants.SAND_SCAN_KEY, onlinePayment.getBusinessType(), onlinePayment.getBusinessCode(), onlinePayment.getPayType()); - if (redisTemplate.hasKey(scanKey)) { - Object payInfo = redisTemplate.opsForValue().get(scanKey); - if (null != payInfo) { - return R.ok(payInfo.toString()); - } - } - - // 统一请求参数 - TreeMap params = new TreeMap<>(); - params.put("app_id", sandPayConfig.getAppId()); - params.put("method", SandPayConstants.METHOD_SCAN); - params.put("sign_type", SandPayConstants.SIGN_TYPE); - params.put("timestamp", DateUtils.parseDateTimeToStr(DateUtils.YAMMERERS, new Date())); - params.put("nonce", System.currentTimeMillis() + ""); - - // 业务参数 - JSONObject bizContent = new JSONObject(); - bizContent.putOpt("create_ip", InetAddress.getLocalHost().getHostAddress()); - bizContent.putOpt("total_amount", onlinePayment.getPayMoney().doubleValue()); - bizContent.putOpt("out_order_no", onlinePayment.getBusinessCode()); - bizContent.putOpt("body", "支付:" + onlinePayment.getBusinessCode()); - bizContent.putOpt("store_id", sandPayConfig.getStoreId()); - bizContent.putOpt("notify_url", sandPayConfig.getCallbackUrl()); - bizContent.putOpt("redirect_url", sandPayConfig.getFrontUrl()); - bizContent.putOpt("req_reserved", onlinePayment.getBusinessType()); - params.put("biz_content", bizContent.toString()); - - // 签名 - params.put("sign", AlipaySignature.rsaSign(params, sandPayConfig.getPrivateKey(), Constants.UTF8)); - - log.info("杉德扫码请求数据:{}", params); - - String postResult = HttpUtil.post(sandPayConfig.getRequestUrl(), JSONUtil.toJsonStr(params)); - - log.info("杉德扫码返回数据: {}", postResult); - - if (StringUtils.isNotEmpty(postResult)) { - HashMap resultMap = JSONUtil.toBean(postResult, HashMap.class); - if (SandPayConstants.SUCCESS_CODE.equals(resultMap.get("code"))) { - // 返回正常 - HashMap dataMap = JSONUtil.toBean(resultMap.get("data"), HashMap.class); - if (SandPayConstants.SUCCESS.equals(dataMap.get("sub_code"))) { - // 返回业务正常 - String qrCode = dataMap.get("qr_code"); - - // 付款码redis保存24小时 - redisTemplate.opsForValue().set(scanKey, qrCode, 24, TimeUnit.HOURS); - - return R.ok(qrCode); - } else { - log.error("调用杉德支付返回业务失败! {}", dataMap.get("sub_msg")); - } - } - } else { - log.info("调用杉德支付返回失败"); - } - } catch (Exception e) { - log.error("杉德扫码支付异常", e); - } - return R.fail("杉德扫码支付失败"); - } - - - @Override - public R weChatH5(TOnlinePayment onlinePayment) { - try { - // 与三方对接,需要扩展支付订单号,用于标记业务 - String thirdOrderCode = PayUtil.getThirdOrderCode(onlinePayment.getBusinessCode(), onlinePayment.getBusinessType()); - onlinePayment.setOriginalOrder(thirdOrderCode); - - TreeMap params = new TreeMap<>(); - params.put("version", "10"); - params.put("mer_no", sandPayConfig.getAppId()); - params.put("mer_order_no", thirdOrderCode); - params.put("create_time", DateUtils.parseDateTimeToStr(DateUtils.YAMMERERS, new Date())); - params.put("order_amt", onlinePayment.getPayMoney().doubleValue() + ""); - params.put("notify_url", sandPayConfig.getCallbackUrl()); - params.put("return_url", sandPayConfig.getFrontUrl()); - params.put("create_ip", InetAddress.getLocalHost().getHostAddress().replaceAll("\\.", "_")); - params.put("store_id", sandPayConfig.getStoreId()); - Map extraMap = new HashMap<>(); - extraMap.put("mer_app_id", ""); - extraMap.put("openid", ""); - extraMap.put("buyer_id", ""); - extraMap.put("wx_app_id", sandPayConfig.getWeChatAppId()); - extraMap.put("gh_ori_id", sandPayConfig.getWeChatGhId()); - extraMap.put("path_url", ""); - // 正式版:0; 开发版:1; 体验版:2 - extraMap.put("miniProgramType", "0"); - params.put("pay_extra", JSONUtil.toJsonStr(extraMap)); - params.put("sign_type", SandPayConstants.SIGN_TYPE); - // 小程序云静态网站ur - params.put("gh_static_url", "https://cloud1-8gp1n6uofa17e2e2-1315820965.tcloudbaseapp.com/jump_mp.html"); - - URLEncoder urlEncoder = new URLEncoder(); - // 签名 - params.put("sign", urlEncoder.encode(AlipaySignature.rsaSign(params, sandPayConfig.getPrivateKey(), Constants.UTF8), StandardCharsets.UTF_8)); - - params.put("expire_time", DateUtils.parseDateTimeToStr(DateUtils.YAMMERERS, DateUtils.addDays(new Date(), 1))); - // 微信小程序(云函数h5) - params.put("product_code", "01010006"); - // 0-T1(默认); 1-T0; 2-D0; 3-D1 - params.put("clear_cycle", "0"); - params.put("jump_scheme", "hemacash://hmpay"); - params.put("goods_name", urlEncoder.encode("支付:" + onlinePayment.getBusinessCode(), StandardCharsets.UTF_8)); - params.put("notify_url", urlEncoder.encode(sandPayConfig.getCallbackUrl(), StandardCharsets.UTF_8)); - params.put("return_url", urlEncoder.encode(sandPayConfig.getFrontUrl(), StandardCharsets.UTF_8)); - params.put("pay_extra", urlEncoder.encode(JSONUtil.toJsonStr(extraMap), StandardCharsets.UTF_8)); - // 终端/网站参数(已经不用,需要传入默认) - params.put("meta_option", urlEncoder.encode("[{\"s\":\"Android\",\"n\":\"\",\"id\":\"\",\"sc\":\"\"},{\"s\":\"IOS\",\"n\":\"\",\"id\":\"\",\"sc\":\"\"}]", StandardCharsets.UTF_8)); - - // 最终请求参数 - String requestParam = AlipaySignature.getSignContent(params); - - String getUrl = "https://cash.sandgate.cn/h5/?" + requestParam + "#/applet"; - - log.info("杉德微信H5调用数据: {}", getUrl); - - return R.ok(getUrl); - } catch (Exception e) { - log.error("调用杉德微信H5返回异常!", e); - } - return R.fail("杉德支付失败,请刷新后重试"); - } - - @Override - public R aliH5(TOnlinePayment onlinePayment) { - try { - // 与三方对接,需要扩展支付订单号,用于标记业务 - String thirdOrderCode = PayUtil.getThirdOrderCode(onlinePayment.getBusinessCode(), onlinePayment.getBusinessType()); - onlinePayment.setOriginalOrder(thirdOrderCode); - - TreeMap params = new TreeMap<>(); - params.put("version", "10"); - params.put("mer_no", sandPayConfig.getAppId()); - params.put("mer_order_no", thirdOrderCode); - params.put("create_time", DateUtils.parseDateTimeToStr(DateUtils.YAMMERERS, new Date())); - params.put("order_amt", onlinePayment.getBusinessMoney().doubleValue() + ""); - params.put("notify_url", sandPayConfig.getCallbackUrl()); - params.put("return_url", sandPayConfig.getFrontUrl()); - params.put("create_ip", InetAddress.getLocalHost().getHostAddress().replaceAll("\\.", "_")); - params.put("store_id", sandPayConfig.getStoreId()); - Map extraMap = new HashMap<>(); - extraMap.put("mer_app_id", ""); - extraMap.put("openid", ""); - extraMap.put("buyer_id", ""); - extraMap.put("wx_app_id", ""); - extraMap.put("gh_ori_id", ""); - extraMap.put("path_url", ""); - extraMap.put("miniProgramType", ""); - params.put("pay_extra", JSONUtil.toJsonStr(extraMap)); - params.put("sign_type", SandPayConstants.SIGN_TYPE); - - URLEncoder urlEncoder = new URLEncoder(); - // 签名 - params.put("sign", urlEncoder.encode(AlipaySignature.rsaSign(params, sandPayConfig.getPrivateKey(), Constants.UTF8), StandardCharsets.UTF_8)); - - params.put("expire_time", DateUtils.parseDateTimeToStr(DateUtils.YAMMERERS, DateUtils.addDays(new Date(), 1))); - // 支付宝生活号(支付宝H5) - params.put("product_code", "01020002"); - // 0-T1(默认); 1-T0; 2-D0; 3-D1 - params.put("clear_cycle", "0"); - params.put("jump_scheme", "hemacash://hmpay"); - params.put("goods_name", urlEncoder.encode("支付:" + onlinePayment.getBusinessCode(), StandardCharsets.UTF_8)); - params.put("notify_url", urlEncoder.encode(sandPayConfig.getCallbackUrl(), StandardCharsets.UTF_8)); - params.put("return_url", urlEncoder.encode(sandPayConfig.getFrontUrl(), StandardCharsets.UTF_8)); - params.put("pay_extra", urlEncoder.encode(JSONUtil.toJsonStr(extraMap), StandardCharsets.UTF_8)); - // 终端/网站参数(已经不用,需要传入默认) - params.put("meta_option", urlEncoder.encode("[{\"s\":\"Android\",\"n\":\"\",\"id\":\"\",\"sc\":\"\"},{\"s\":\"IOS\",\"n\":\"\",\"id\":\"\",\"sc\":\"\"}]", StandardCharsets.UTF_8)); - - // 最终请求参数 - String requestParam = AlipaySignature.getSignContent(params); - - String getUrl = "https://cash.sandgate.cn/h5/?" + requestParam + "#/hippoH5"; - - log.info("杉德支付宝H5调用数据: {}", getUrl); - - return R.ok(getUrl); - } catch (Exception e) { - log.error("调用杉德支付宝H5返回异常!", e); - } - return R.fail("杉德支付失败,请刷新后重试"); - } +// /** +// * 扫码支付(微信、支付宝) +// * +// * @param onlinePayment +// * @return +// */ +// @Override +// public R scanPay(TOnlinePayment onlinePayment) { +// try { +// // 杉德付款码缓存KEY +// String scanKey = String.format(PayRedisConstants.SAND_SCAN_KEY, onlinePayment.getBusinessType(), onlinePayment.getBusinessCode(), onlinePayment.getPayType()); +// if (redisTemplate.hasKey(scanKey)) { +// Object payInfo = redisTemplate.opsForValue().get(scanKey); +// if (null != payInfo) { +// return R.ok(payInfo.toString()); +// } +// } +// +// // 统一请求参数 +// TreeMap params = new TreeMap<>(); +// params.put("app_id", sandPayConfig.getAppId()); +// params.put("method", SandPayConstants.METHOD_SCAN); +// params.put("sign_type", SandPayConstants.SIGN_TYPE); +// params.put("timestamp", DateUtils.parseDateTimeToStr(DateUtils.YAMMERERS, new Date())); +// params.put("nonce", System.currentTimeMillis() + ""); +// +// // 业务参数 +// JSONObject bizContent = new JSONObject(); +// bizContent.putOpt("create_ip", InetAddress.getLocalHost().getHostAddress()); +// bizContent.putOpt("total_amount", onlinePayment.getPayMoney().doubleValue()); +// bizContent.putOpt("out_order_no", onlinePayment.getBusinessCode()); +// bizContent.putOpt("body", "支付:" + onlinePayment.getBusinessCode()); +// bizContent.putOpt("store_id", sandPayConfig.getStoreId()); +// bizContent.putOpt("notify_url", sandPayConfig.getCallbackUrl()); +// bizContent.putOpt("redirect_url", sandPayConfig.getFrontUrl()); +// bizContent.putOpt("req_reserved", onlinePayment.getBusinessType()); +// params.put("biz_content", bizContent.toString()); +// +// // 签名 +// params.put("sign", AlipaySignature.rsaSign(params, sandPayConfig.getPrivateKey(), Constants.UTF8)); +// +// log.info("杉德扫码请求数据:{}", params); +// +// String postResult = HttpUtil.post(sandPayConfig.getRequestUrl(), JSONUtil.toJsonStr(params)); +// +// log.info("杉德扫码返回数据: {}", postResult); +// +// if (StringUtils.isNotEmpty(postResult)) { +// HashMap resultMap = JSONUtil.toBean(postResult, HashMap.class); +// if (SandPayConstants.SUCCESS_CODE.equals(resultMap.get("code"))) { +// // 返回正常 +// HashMap dataMap = JSONUtil.toBean(resultMap.get("data"), HashMap.class); +// if (SandPayConstants.SUCCESS.equals(dataMap.get("sub_code"))) { +// // 返回业务正常 +// String qrCode = dataMap.get("qr_code"); +// +// // 付款码redis保存24小时 +// redisTemplate.opsForValue().set(scanKey, qrCode, 24, TimeUnit.HOURS); +// +// return R.ok(qrCode); +// } else { +// log.error("调用杉德支付返回业务失败! {}", dataMap.get("sub_msg")); +// } +// } +// } else { +// log.info("调用杉德支付返回失败"); +// } +// } catch (Exception e) { +// log.error("杉德扫码支付异常", e); +// } +// return R.fail("杉德扫码支付失败"); +// } +// +// +// @Override +// public R weChatH5(TOnlinePayment onlinePayment) { +// try { +// // 与三方对接,需要扩展支付订单号,用于标记业务 +// String thirdOrderCode = PayUtil.getThirdOrderCode(onlinePayment.getBusinessCode(), onlinePayment.getBusinessType()); +// onlinePayment.setOriginalOrder(thirdOrderCode); +// +// TreeMap params = new TreeMap<>(); +// params.put("version", "10"); +// params.put("mer_no", sandPayConfig.getAppId()); +// params.put("mer_order_no", thirdOrderCode); +// params.put("create_time", DateUtils.parseDateTimeToStr(DateUtils.YAMMERERS, new Date())); +// params.put("order_amt", onlinePayment.getPayMoney().doubleValue() + ""); +// params.put("notify_url", sandPayConfig.getCallbackUrl()); +// params.put("return_url", sandPayConfig.getFrontUrl()); +// params.put("create_ip", InetAddress.getLocalHost().getHostAddress().replaceAll("\\.", "_")); +// params.put("store_id", sandPayConfig.getStoreId()); +// Map extraMap = new HashMap<>(); +// extraMap.put("mer_app_id", ""); +// extraMap.put("openid", ""); +// extraMap.put("buyer_id", ""); +// extraMap.put("wx_app_id", sandPayConfig.getWeChatAppId()); +// extraMap.put("gh_ori_id", sandPayConfig.getWeChatGhId()); +// extraMap.put("path_url", ""); +// // 正式版:0; 开发版:1; 体验版:2 +// extraMap.put("miniProgramType", "0"); +// params.put("pay_extra", JSONUtil.toJsonStr(extraMap)); +// params.put("sign_type", SandPayConstants.SIGN_TYPE); +// // 小程序云静态网站ur +// params.put("gh_static_url", "https://cloud1-8gp1n6uofa17e2e2-1315820965.tcloudbaseapp.com/jump_mp.html"); +// +// URLEncoder urlEncoder = new URLEncoder(); +// // 签名 +// params.put("sign", urlEncoder.encode(AlipaySignature.rsaSign(params, sandPayConfig.getPrivateKey(), Constants.UTF8), StandardCharsets.UTF_8)); +// +// params.put("expire_time", DateUtils.parseDateTimeToStr(DateUtils.YAMMERERS, DateUtils.addDays(new Date(), 1))); +// // 微信小程序(云函数h5) +// params.put("product_code", "01010006"); +// // 0-T1(默认); 1-T0; 2-D0; 3-D1 +// params.put("clear_cycle", "0"); +// params.put("jump_scheme", "hemacash://hmpay"); +// params.put("goods_name", urlEncoder.encode("支付:" + onlinePayment.getBusinessCode(), StandardCharsets.UTF_8)); +// params.put("notify_url", urlEncoder.encode(sandPayConfig.getCallbackUrl(), StandardCharsets.UTF_8)); +// params.put("return_url", urlEncoder.encode(sandPayConfig.getFrontUrl(), StandardCharsets.UTF_8)); +// params.put("pay_extra", urlEncoder.encode(JSONUtil.toJsonStr(extraMap), StandardCharsets.UTF_8)); +// // 终端/网站参数(已经不用,需要传入默认) +// params.put("meta_option", urlEncoder.encode("[{\"s\":\"Android\",\"n\":\"\",\"id\":\"\",\"sc\":\"\"},{\"s\":\"IOS\",\"n\":\"\",\"id\":\"\",\"sc\":\"\"}]", StandardCharsets.UTF_8)); +// +// // 最终请求参数 +// String requestParam = AlipaySignature.getSignContent(params); +// +// String getUrl = "https://cash.sandgate.cn/h5/?" + requestParam + "#/applet"; +// +// log.info("杉德微信H5调用数据: {}", getUrl); +// +// return R.ok(getUrl); +// } catch (Exception e) { +// log.error("调用杉德微信H5返回异常!", e); +// } +// return R.fail("杉德支付失败,请刷新后重试"); +// } +// +// @Override +// public R aliH5(TOnlinePayment onlinePayment) { +// try { +// // 与三方对接,需要扩展支付订单号,用于标记业务 +// String thirdOrderCode = PayUtil.getThirdOrderCode(onlinePayment.getBusinessCode(), onlinePayment.getBusinessType()); +// onlinePayment.setOriginalOrder(thirdOrderCode); +// +// TreeMap params = new TreeMap<>(); +// params.put("version", "10"); +// params.put("mer_no", sandPayConfig.getAppId()); +// params.put("mer_order_no", thirdOrderCode); +// params.put("create_time", DateUtils.parseDateTimeToStr(DateUtils.YAMMERERS, new Date())); +// params.put("order_amt", onlinePayment.getBusinessMoney().doubleValue() + ""); +// params.put("notify_url", sandPayConfig.getCallbackUrl()); +// params.put("return_url", sandPayConfig.getFrontUrl()); +// params.put("create_ip", InetAddress.getLocalHost().getHostAddress().replaceAll("\\.", "_")); +// params.put("store_id", sandPayConfig.getStoreId()); +// Map extraMap = new HashMap<>(); +// extraMap.put("mer_app_id", ""); +// extraMap.put("openid", ""); +// extraMap.put("buyer_id", ""); +// extraMap.put("wx_app_id", ""); +// extraMap.put("gh_ori_id", ""); +// extraMap.put("path_url", ""); +// extraMap.put("miniProgramType", ""); +// params.put("pay_extra", JSONUtil.toJsonStr(extraMap)); +// params.put("sign_type", SandPayConstants.SIGN_TYPE); +// +// URLEncoder urlEncoder = new URLEncoder(); +// // 签名 +// params.put("sign", urlEncoder.encode(AlipaySignature.rsaSign(params, sandPayConfig.getPrivateKey(), Constants.UTF8), StandardCharsets.UTF_8)); +// +// params.put("expire_time", DateUtils.parseDateTimeToStr(DateUtils.YAMMERERS, DateUtils.addDays(new Date(), 1))); +// // 支付宝生活号(支付宝H5) +// params.put("product_code", "01020002"); +// // 0-T1(默认); 1-T0; 2-D0; 3-D1 +// params.put("clear_cycle", "0"); +// params.put("jump_scheme", "hemacash://hmpay"); +// params.put("goods_name", urlEncoder.encode("支付:" + onlinePayment.getBusinessCode(), StandardCharsets.UTF_8)); +// params.put("notify_url", urlEncoder.encode(sandPayConfig.getCallbackUrl(), StandardCharsets.UTF_8)); +// params.put("return_url", urlEncoder.encode(sandPayConfig.getFrontUrl(), StandardCharsets.UTF_8)); +// params.put("pay_extra", urlEncoder.encode(JSONUtil.toJsonStr(extraMap), StandardCharsets.UTF_8)); +// // 终端/网站参数(已经不用,需要传入默认) +// params.put("meta_option", urlEncoder.encode("[{\"s\":\"Android\",\"n\":\"\",\"id\":\"\",\"sc\":\"\"},{\"s\":\"IOS\",\"n\":\"\",\"id\":\"\",\"sc\":\"\"}]", StandardCharsets.UTF_8)); +// +// // 最终请求参数 +// String requestParam = AlipaySignature.getSignContent(params); +// +// String getUrl = "https://cash.sandgate.cn/h5/?" + requestParam + "#/hippoH5"; +// +// log.info("杉德支付宝H5调用数据: {}", getUrl); +// +// return R.ok(getUrl); +// } catch (Exception e) { +// log.error("调用杉德支付宝H5返回异常!", e); +// } +// return R.fail("杉德支付失败,请刷新后重试"); +// } diff --git a/bd-third/src/main/java/com/hzs/third/pay/service/impl/WeChatPayServiceImpl.java b/bd-third/src/main/java/com/hzs/third/pay/service/impl/WeChatPayServiceImpl.java deleted file mode 100644 index db5aedf7..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/service/impl/WeChatPayServiceImpl.java +++ /dev/null @@ -1,248 +0,0 @@ -package com.hzs.third.pay.service.impl; - -import cn.hutool.json.JSONUtil; -import com.hzs.common.core.domain.R; -import com.hzs.common.domain.third.pay.TOnlinePayment; -import com.hzs.third.pay.config.WeChatConfig; -import com.hzs.third.pay.service.IWeChatPayService; -import com.hzs.third.pay.util.PayUtil; -import com.hzs.third.pay.util.WeChatUtil; -import com.ijpay.core.enums.SignType; -import com.ijpay.core.enums.TradeType; -import com.ijpay.core.kit.WxPayKit; -import com.ijpay.wxpay.WxPayApi; -import com.ijpay.wxpay.model.UnifiedOrderModel; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.math.BigDecimal; -import java.net.InetAddress; -import java.util.HashMap; -import java.util.Map; - -/** - * 微信支付服务 - */ -@Slf4j -@Service -public class WeChatPayServiceImpl implements IWeChatPayService { - - @Autowired - private WeChatConfig weChatConfig; - - @Override - public R prePayScan(TOnlinePayment onlinePayment) { - try { - // 与三方对接,需要扩展支付订单号,用于标记业务 - String thirdOrderCode = PayUtil.getThirdOrderCode(onlinePayment.getBusinessCode(), null); - onlinePayment.setOriginalOrder(thirdOrderCode); - - // PC 入口 - Map params = UnifiedOrderModel.builder() - .mch_id(weChatConfig.getMchId()) - .appid(weChatConfig.getPublicAppId()) - // 随机字符串 - .nonce_str(WxPayKit.generateStr()) - // 订单编号 - .out_trade_no(thirdOrderCode) - // 订单金额 - .total_fee(onlinePayment.getPayMoney().multiply(new BigDecimal("100")).intValue() + "") - // 商品描述 - .body("微信支付:" + onlinePayment.getBusinessCode()) - // 自定义追加数据(回调原路返回) - .attach(onlinePayment.getBusinessType().toString()) - .spbill_create_ip(InetAddress.getLocalHost().getHostAddress()) - .notify_url(weChatConfig.getNotifyUrl()) - // PC扫码支付 - .trade_type(TradeType.NATIVE.getTradeType()) - // 商品ID(NATIVE - PC扫码支付必传) - .product_id(thirdOrderCode) - .build() - .createSign(weChatConfig.getV2Key(), SignType.HMACSHA256); - - log.info("微信PC支付请求参数: {}", params); - - String xmlResult = WxPayApi.pushOrder(false, params); - Map result = WxPayKit.xmlToMap(xmlResult); - - log.info("微信PC支付返回参数: {}", result); - - // 校验返回错误结果 - String errorMsg = WeChatUtil.handResultError(result); - if (null != errorMsg) { - log.error("微信PC支付调用预下单失败! {}", errorMsg); - } else { - return R.ok(result.get("code_url")); - } - } catch (Exception e) { - log.error("微信PC支付调用处理异常", e); - } - return R.fail("微信PC支付调用处理失败"); - } - - @Override - public R prePayH5(TOnlinePayment onlinePayment) { - try { - // 与三方对接,需要扩展支付订单号,用于标记业务 - String thirdOrderCode = PayUtil.getThirdOrderCode(onlinePayment.getBusinessCode(), null); - onlinePayment.setOriginalOrder(thirdOrderCode); - - Map> sceneInfo = new HashMap<>(); - Map infoMap = new HashMap<>(); - infoMap.put("type", "Wap"); - infoMap.put("wap_url", "https://cn.hzs413.com"); - infoMap.put("wap_name", "盛美源支付"); - sceneInfo.put("h5_info", infoMap); - - // H5 入口 - Map params = UnifiedOrderModel.builder() - .mch_id(weChatConfig.getMchId()) - .appid(weChatConfig.getPublicAppId()) - // 随机字符串 - .nonce_str(WxPayKit.generateStr()) - // 订单编号 - .out_trade_no(thirdOrderCode) - // 订单金额 - .total_fee(onlinePayment.getPayMoney().multiply(new BigDecimal("100")).intValue() + "") - // 商品描述 - .body("微信支付:" + onlinePayment.getBusinessCode()) - // 自定义追加数据(回调原路返回) - .attach(onlinePayment.getBusinessType().toString()) - .spbill_create_ip(InetAddress.getLocalHost().getHostAddress()) - .notify_url(weChatConfig.getNotifyUrl()) - // H5微信支付 - .trade_type(TradeType.MWEB.getTradeType()) - // 网站信息(H5支付必传) - .scene_info(JSONUtil.toJsonStr(sceneInfo)) - .build() - .createSign(weChatConfig.getV2Key(), SignType.HMACSHA256); - - log.info("微信H5支付请求参数: {}", params); - - String xmlResult = WxPayApi.pushOrder(false, params); - Map result = WxPayKit.xmlToMap(xmlResult); - - log.info("微信H5支付返回参数: {}", result); - - // 校验返回错误结果 - String errorMsg = WeChatUtil.handResultError(result); - if (null != errorMsg) { - log.error("微信H5支付调用预下单失败! {}", errorMsg); - } else { - return R.ok(result.get("mweb_url")); - } - } catch (Exception e) { - log.error("微信H5支付调用处理异常", e); - } - return R.fail("微信H5支付调用处理失败"); - } - - @Override - public R prePayAPP(TOnlinePayment onlinePayment) { - try { - // 与三方对接,需要扩展支付订单号,用于标记业务 - String thirdOrderCode = PayUtil.getThirdOrderCode(onlinePayment.getBusinessCode(), null); - onlinePayment.setOriginalOrder(thirdOrderCode); - - // APP 入口 - Map params = UnifiedOrderModel.builder() - .mch_id(weChatConfig.getMchId()) - .appid(weChatConfig.getAppId()) - // 随机字符串 - .nonce_str(WxPayKit.generateStr()) - // 订单编号 - .out_trade_no(thirdOrderCode) - // 订单金额 - .total_fee(onlinePayment.getPayMoney().multiply(new BigDecimal("100")).intValue() + "") - // 商品描述 - .body("微信支付:" + onlinePayment.getBusinessCode()) - // 自定义追加数据(回调原路返回) - .attach(onlinePayment.getBusinessType().toString()) - .spbill_create_ip(InetAddress.getLocalHost().getHostAddress()) - .notify_url(weChatConfig.getNotifyUrl()) - .trade_type(TradeType.APP.getTradeType()) - .build() - .createSign(weChatConfig.getV2Key(), SignType.HMACSHA256); - - log.info("微信APP支付请求参数: {}", params); - - String xmlResult = WxPayApi.pushOrder(false, params); - Map result = WxPayKit.xmlToMap(xmlResult); - - log.info("微信APP支付返回参数: {}", result); - - // 校验返回错误结果 - String errorMsg = WeChatUtil.handResultError(result); - if (null != errorMsg) { - log.error("微信APP支付调用预下单失败! {}", errorMsg); - } else { - // 生成APP调用支付需要的参数 - Object payInfo = WxPayKit.appPrepayIdCreateSign(weChatConfig.getAppId(), weChatConfig.getMchId(), result.get("prepay_id"), weChatConfig.getV2Key(), SignType.HMACSHA256); - - log.info("微信APP支付发起参数: {}", payInfo); - - return R.ok(payInfo); - } - } catch (Exception e) { - log.error("微信APP支付调用处理异常", e); - } - return R.fail("微信APP支付调用处理失败"); - } - -// @Override -// public R prePayApplet(TOnlinePayment onlinePayment, String openId) { -// try { -// // 与三方对接,需要扩展支付订单号,用于标记业务 -// String thirdOrderCode = PayUtil.getThirdOrderCode(onlinePayment.getBusinessCode(), null); -// onlinePayment.setOriginalOrder(thirdOrderCode); -// -// // 小程序入口 -// Map params = UnifiedOrderModel.builder() -// .mch_id(weChatConfig.getMchId()) -// .appid(weChatConfig.getAppletAppId()) -// // 随机字符串 -// .nonce_str(WxPayKit.generateStr()) -// // 订单编号 -// .out_trade_no(thirdOrderCode) -// // 订单金额 -// .total_fee(onlinePayment.getPayMoney().multiply(new BigDecimal("100")).intValue() + "") -// // 商品描述 -// .body("微信支付:" + onlinePayment.getBusinessCode()) -// // 自定义追加数据(回调原路返回) -// .attach(onlinePayment.getBusinessType().toString()) -// .spbill_create_ip(InetAddress.getLocalHost().getHostAddress()) -// .notify_url(weChatConfig.getNotifyUrl()) -// // 小程序支付 -// .trade_type(TradeType.JSAPI.getTradeType()) -// // 用户标识(JSAPI - 小程序、公众号支付必传) -// .openid(openId) -// .build() -// .createSign(weChatConfig.getV2Key(), SignType.HMACSHA256); -// -// log.info("微信小程序支付请求参数: {}", params); -// -// String xmlResult = WxPayApi.pushOrder(false, params); -// Map result = WxPayKit.xmlToMap(xmlResult); -// -// log.info("微信小程序支付返回参数: {}", result); -// -// // 校验返回错误结果 -// String errorMsg = WeChatUtil.handResultError(result); -// if (null != errorMsg) { -// log.error("微信小程序支付调用预下单失败! {}", errorMsg); -// } else { -// // 生成前端调用支付所需要的参数 -// Object payInfo = WxPayKit.miniAppPrepayIdCreateSign(weChatConfig.getAppletAppId(), result.get("prepay_id"), weChatConfig.getV2Key(), SignType.HMACSHA256); -// -// log.info("微信小程序支付发起参数: {}", payInfo); -// -// return R.ok(payInfo); -// } -// } catch (Exception e) { -// log.error("微信小程序支付调用处理异常", e); -// } -// return R.fail("微信小程序支付调用处理失败"); -// } - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/util/AliPayUtil.java b/bd-third/src/main/java/com/hzs/third/pay/util/AliPayUtil.java deleted file mode 100644 index b4461927..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/util/AliPayUtil.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.hzs.third.pay.util; - -import com.alipay.api.AlipayResponse; -import lombok.extern.slf4j.Slf4j; - -/** - * 阿里操作工具 - */ -@Slf4j -public class AliPayUtil { - - /** - * 支付宝返回结果error处理 - * - * @param response - * @return - */ - public static String handResultError(AlipayResponse response) { - // 请求结果处理 - String returnCode = response.getCode(); - String returnMsg = response.getMsg(); - if (!"10000".equals(returnCode)) { - return returnMsg; - } - - // 请求成功,业务结果处理 - String resultCode = response.getSubCode(); - String errCodeDes = response.getSubMsg(); - if (!"".equals(resultCode)) { - return errCodeDes; - } - return null; - } - - -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/util/JdPayUtil.java b/bd-third/src/main/java/com/hzs/third/pay/util/JdPayUtil.java deleted file mode 100644 index d63c89de..00000000 --- a/bd-third/src/main/java/com/hzs/third/pay/util/JdPayUtil.java +++ /dev/null @@ -1,151 +0,0 @@ -package com.hzs.third.pay.util; - -import cn.hutool.crypto.SecureUtil; -import cn.hutool.http.HttpUtil; -import com.hzs.third.pay.constants.JdPayConstants; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.codec.binary.Base64; -import org.apache.commons.lang3.StringUtils; - -import javax.crypto.Cipher; -import javax.crypto.spec.SecretKeySpec; -import java.nio.charset.StandardCharsets; -import java.security.MessageDigest; -import java.util.Date; - -/** - * 京东加密工具类 - */ -@Slf4j -public class JdPayUtil { - - /** - * 请求订单 - * - * @param path 访问路径 - * @param body 请求体 - * @param secretKey 私钥 - * @param accessKey 公钥 - * @return - */ - public static String requestOrder(String path, String body, String secretKey, String accessKey) { - // 时间戳(秒) - long timestamp = System.currentTimeMillis() / 1000; - - // SHA1 加密串 - String sha1Str = "secretKey=" + secretKey + - "×tamp=" + timestamp + - "&path=" + path + - "&body=" + body; - String token = SecureUtil.sha1(sha1Str).toUpperCase(); - - // 请求京东获取扫码地址 - return HttpUtil.createPost(JdPayConstants.PAY_URL + path) - .body(body) - .header("Content-type", "application/json") - .header("accessKey", accessKey) - .header("timestamp", Long.toString(timestamp)) - .header("token", token) - .execute() - .body(); - } - - /** - * @param encryptSrc 需要加密的字符串 - * @param encryptKey 加密的aes key - * @return - * @throws Exception - */ - public static String encrypt(String encryptSrc, String encryptKey) throws Exception { - // 判断encryptKey是否为空 - if (StringUtils.isBlank(encryptKey)) { - log.error("encryptKey 加密key为null"); - return null; - } - // 判断encryptKey是否为16位 - if (encryptKey.length() != 16) { - log.error("encryptKey长度小于16位"); - return null; - } - byte[] raw = encryptKey.getBytes(StandardCharsets.UTF_8); - SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); - // "算法/模式/补码方式" - Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); - cipher.init(Cipher.ENCRYPT_MODE, skeySpec); - byte[] encrypted = cipher.doFinal(encryptSrc.getBytes(StandardCharsets.UTF_8)); - - // 此处使用BASE64做转码功能,同时能起到2次加密的作用。 - return new Base64().encodeToString(encrypted); - } - - // 解密 - public static String decrypt(String encryptSrc, String encryptKey) throws Exception { - try { - // 判断encryptKey是否为null - if (StringUtils.isBlank(encryptKey)) { - log.error("encryptKey 加密key为null"); - return null; - } - // 判断encryptKey是否为16位 - if (encryptKey.length() != 16) { - log.error("encryptKey长度小于16位"); - return null; - } - byte[] raw = encryptKey.getBytes(StandardCharsets.UTF_8); - SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES"); - Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); - cipher.init(Cipher.DECRYPT_MODE, skeySpec); - // 先用base64解密 - byte[] encrypted1 = new Base64().decode(encryptSrc); - try { - byte[] original = cipher.doFinal(encrypted1); - return new String(original, StandardCharsets.UTF_8); - } catch (Exception e) { - log.info("加密异常", e); - return null; - } - } catch (Exception e) { - log.info("加密异常:", e); - return null; - } - } - - - /** - * 通过access_token的40位数字获取16位的aes key - * - * @param pwd 需要加密的字符串 - * @return - */ - public static String getAesKey(String pwd) { - String md5 = ""; - try { - // 创建加密对象 - MessageDigest md = MessageDigest.getInstance("md5"); - // 计算MD5函数 - md.update(pwd.getBytes()); - byte[] bytes = md.digest(); - int i; - StringBuilder sb = new StringBuilder(""); - for (byte aByte : bytes) { - i = aByte; - if (i < 0) { - i += 256; - } - if (i < 16) { - sb.append("0"); - } - sb.append(Integer.toHexString(i)); - } - md5 = sb.toString(); - // 截取32位md5为16位 - md5 = md5.substring(8, 24); - return md5; - } catch (Exception e) { - log.error("md5加密异常:", e); - e.printStackTrace(); - } - - return md5; - } -} diff --git a/bd-third/src/main/java/com/hzs/third/pay/util/WeChatUtil.java b/bd-third/src/main/java/com/hzs/third/pay/util/WeChatUtil.java index e9783acc..ff8cf930 100644 --- a/bd-third/src/main/java/com/hzs/third/pay/util/WeChatUtil.java +++ b/bd-third/src/main/java/com/hzs/third/pay/util/WeChatUtil.java @@ -1,6 +1,5 @@ package com.hzs.third.pay.util; -import com.ijpay.core.kit.WxPayKit; import lombok.extern.slf4j.Slf4j; import java.util.Map; @@ -48,28 +47,28 @@ public class WeChatUtil { } - /** - * 微信返回结果error处理 - * - * @param result 微信返回结果 - * @return - */ - public static String handResultError(Map result) { - // 请求结果处理 - String returnCode = result.get("return_code"); - String returnMsg = result.get("return_msg"); - if (!WxPayKit.codeIsOk(returnCode)) { - return returnMsg; - } - - // 请求成功,业务结果处理 - String resultCode = result.get("result_code"); - String errCodeDes = result.get("err_code_des"); - if (!WxPayKit.codeIsOk(resultCode)) { - return errCodeDes; - } - return null; - } +// /** +// * 微信返回结果error处理 +// * +// * @param result 微信返回结果 +// * @return +// */ +// public static String handResultError(Map result) { +// // 请求结果处理 +// String returnCode = result.get("return_code"); +// String returnMsg = result.get("return_msg"); +// if (!WxPayKit.codeIsOk(returnCode)) { +// return returnMsg; +// } +// +// // 请求成功,业务结果处理 +// String resultCode = result.get("result_code"); +// String errCodeDes = result.get("err_code_des"); +// if (!WxPayKit.codeIsOk(resultCode)) { +// return errCodeDes; +// } +// return null; +// } } diff --git a/bd-third/src/main/java/com/hzs/third/wechat/dto/WeChatCodeDTO.java b/bd-third/src/main/java/com/hzs/third/wechat/dto/WeChatCodeDTO.java index 9f644518..2db3ea7d 100644 --- a/bd-third/src/main/java/com/hzs/third/wechat/dto/WeChatCodeDTO.java +++ b/bd-third/src/main/java/com/hzs/third/wechat/dto/WeChatCodeDTO.java @@ -5,11 +5,7 @@ import lombok.Data; import java.io.Serializable; /** - * @Description: 微信授权DTO - * @Author: jiang chao - * @Time: 2023/8/4 15:19 - * @Classname: WeChatCodeDTO - * @PackageName: com.hzs.third.wechat.dto + * 微信授权DTO */ @Data public class WeChatCodeDTO implements Serializable { diff --git a/bd-third/src/main/resources/bootstrap.yml b/bd-third/src/main/resources/bootstrap.yml index ac01db47..6dbf8c33 100644 --- a/bd-third/src/main/resources/bootstrap.yml +++ b/bd-third/src/main/resources/bootstrap.yml @@ -67,46 +67,6 @@ dubbo: #################### 三方对接相关信息 #################### -## 京东支付配置 -- 盛美源 -jdpay: - #################### 基础支付相关 #################### - ## 商户编号 - customerNum: 10001116674545930653514 - ## 店铺编号 - shopNum: 10001216674547250174549 - ## 公钥 - accessKey: 42a0e1695aa445f88072396291833e98054bf738 - ## 私钥 - secretKey: 287158e248a24b9bb448395c36a2f313761423d3 - ## 支付回调地址 - callbackUrl: http://p1.hzs413.com/inter-api/pay/jd/notify - ## 代付回调地址 - agentCallbackUrl: http://p1.hzs413.com/inter-api/pay/jd-agent/notify - ## 退款回调地址 - refundCallbackUrl: http://p1.hzs413.com/inter-api/pay/jd-refund/notify - -## 京东收银台支付配置 -jd: - pay: - ## 二级商户号 - merchantNo: 146394993003 - ## 签名密钥 - signKey: 9c4b9837e13dfcb163a87cbba521f6357b581bff49b0d6d0b503cd563238c1e9 - ## 证书加密密码 - priCertPwd: hzs20253003 - ## 私钥文件名 - priCert: jd/merchantCert.pfx - ## 公钥文件名 - pubCert: jd/npp_11_API2_pro.cer - ## 生产环境api接口域名 - apiDomain: http://wapi.jd.com - ## 页面回调地址 - pageBackUrl: https://p1.hzs413.com/inter-api/pay/jd/sync-notify - ## 支付回调地址 - notifyUrl: https://p1.hzs413.com/inter-api/pay/jd/trade-notify - ## 退款回调地下 - refundNotifyUrl: https://p1.hzs413.com/inter-api/pay/jd-refund/trade-notify - ## 微信配置 wechat: #################### 基础支付相关 #################### @@ -121,24 +81,6 @@ wechat: publicAppId: wxc2d4abdae78ade52 ## 公众号appSecret publicAppSecret: 896bf6b984b44b192e3f71e96002b800 - #################### 全球一体化APP #################### - ## 移动应用appId - appId: wx6996eec3fdcc8482 - - -## 阿里支付配置 -alipay: - #################### 基础支付相关 #################### - ## 支付appId - appId: 2021003161670801 - ## 开发者私钥 - privateKey: MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCRUodFmaaX2Kl/wMuktJnsQBKoWhlLKlL5Cw0SLGFqicMDDcVG21sVfNUqC1rdvZJlA07SU1oDIoZbwW9iRUK5Jn5ngVPmhgjftvdwY6ZpZBY18guhxn5N9wxin5grRY+s+cBHHbUk5qoJbDUagLMcERudZEv/1OKfpw4fwizcn2Jg3//rHrgqLji4X+8atraqOxEmoznnPfb3nKNHR+hHAU/KvPnR16SyzXZuy4AqwTtg04zg2xCwsC+t8bMwKmL8ksQ2TRJFTdb49rmeuiUxhZGBT5RnJJCnaGgn3udqZW2ZZwEPI9I6N+0mCHrkwkw3nVfBREkm1LQyUsu+nC8bAgMBAAECggEAQNyH+d2piI6woI+plPry1IqIiVGlhnH+lJ+FFv5uAII6YyuLSKPxVHbiIaDtzpilNaazUJbZTxriwyNkFoV5UXBH7OTBUNu0LD3a1PP1O4brjupYnL0edKf2hDJdVbr3dKoIUvWEe1Lkw83jKdAVoUpVe/tfHHGlMML8P9qH8XQYuBwmgSXbtwwC2U4dyhgxm0QuHq39zw+NMTzh76ElP69/1XGA0OWkSHnMYfl66vB50n3Li+rqPapzUzvtR644EyKotda3UOrkHCMbTEOBYcmQSz2/02dgvOmW+UMSxwv/Qfps5jhKaWjkK9DNcs0YzgSucpqrIAWhQiFW27lD0QKBgQDYveUFf6Uxp968dAVQPL4tOjx3QdRtjYacxpbDhXa2KcrCs9hHO3hx81ZwQFFKG5BXeU+GoJVe3L2mqWQVS1qZmLO/3wzRghVnZeaWdQmFI9k2tBt/uFHeLfwuFENgnSwN5yrqEtTgggKZ2ZiDJYboHHsblU8shAEnCeJ5hHUPcwKBgQCrpPxWjnqYJ0+wCAciztSPiJJR7bvUKBlRc0PTqFcA8GNtDuZkqFOeM7KHdPmB8V65yDR6h85EA3a9lYZxy/X5HFy6zbQQj4fA5XNwzlBQeGt+fkdr+O6LVWN53HzwRN0b+Yer9mP16hCbOUejEVQFrDMu6z7QPnQlKXdbl1CnuQKBgQDYHQi2Yd+S0qL6X+lIZzjtmeresuogzoRR4IZFsNd8rdE6MN9Pr5HadVtUFB25+iADyLcuMwKdkxcbjj14KinNi4B3qe17He0/q1Cv50U111fn/tCImn4vPsT8IUJJnI5n0n9s5JgUwC3dwCUdZ5bL7FIoX8mRRpJrnaSPrC6Y1wKBgE7/kU/5JX1v4mI/X6FqljQ1hDqG80LS7cwqA9afjOOWv/wKtokvW8TdQFbNxKRExfc1qMmYRZvSCE17SzSGzf/ISPmFAVH57V4ffME3g4l10uuWDSMpoAiq1SzaCPrAhw+ACixgK2OcReZbN5haulQeDDSU+wT3KZeM/S0/eFSpAoGBAM2KaDf2KgY4rSjnkHIyQF2FWX6/hJpqI5GH86EwJ8NYtQzXOZnBcu9awOdw5XZA79IYKIYzZFT5JHxY5WJc8gNP4CrVIekp/5N2nwMkg85jHL1xbe+RQUNhUCTj9T8y1cxHMnoZg29A0hiCzZwWgh86413tYSgPZ14Ec2iiIvvZ - ## 支付宝公钥 - publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0EvhyW03fmnRVmo127xd7O97Qj1M5SoeRJZTtO/Pcu+ZIgVi6KYFl0p+N/IWmUvb6RSbkuRpMF6NAbNHUXeDAiDnauSiqMFhj7oeVZ0WKHngHTbwZGe7LVHc3szEYgTEcEENaUleTJx/mtP4P5g8v7KE+iv7Vo3YY/JMSPOZ2moA5xmT0AZ5cpmtt2rb/oz60ou7nyeDDrg26/4MEdG8INiHww5QoMwtBZo8YOYVGkjJ2GL5vi7xP6KLMrzKex9wXgb74P407YS7rgSQjJmaI62cg/7TS3nwFs8VLKBdk57cR1cTAqe0voMmpOM8pk+5LrJiEonLwqWhpwNZhShGBQIDAQAB - ## 支付网关 - serverUrl: https://openapi.alipay.com/gateway.do - ## 支付宝回调地址 - notifyUrl: https://new.hzs413.com/inter-api/pay/ali/notify ## 通联支付配置 diff --git a/bd-third/src/main/resources/fastmoney/online/20240312.3300000479182349.pfx b/bd-third/src/main/resources/fastmoney/online/20240312.3300000479182349.pfx deleted file mode 100644 index 4c40cd48d15b568278bc4c9500e002eb0b8541fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3039 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 F{{Wz9qdout diff --git a/bd-third/src/main/resources/fastmoney/online/99bill.RSA.cer b/bd-third/src/main/resources/fastmoney/online/99bill.RSA.cer deleted file mode 100644 index c15adf29..00000000 --- a/bd-third/src/main/resources/fastmoney/online/99bill.RSA.cer +++ /dev/null @@ -1,29 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIE8TCCA9mgAwIBAgIIMwAABHQ4cjAwDQYJKoZIhvcNAQELBQAwWDELMAkGA1UE -BhMCQ04xMDAuBgNVBAoMJ0NoaW5hIEZpbmFuY2lhbCBDZXJ0aWZpY2F0aW9uIEF1 -dGhvcml0eTEXMBUGA1UEAwwOQ0ZDQSBBQ1MgT0NBMzMwHhcNMjMxMjAxMDE1NDU2 -WhcNMjgxMjAxMDE1NDU2WjCBmzELMAkGA1UEBhMCQ04xFzAVBgNVBAoMDkNGQ0Eg -QUNTIE9DQTMzMQ8wDQYDVQQLDAY5OWJpbGwxGTAXBgNVBAsMEE9yZ2FuaXphdGlv -bmFsLTIxRzBFBgNVBAMMPjA1MUDlv6vpkrHmlK/ku5jmuIXnrpfkv6Hmga/mnInp -mZDlhazlj7hATjkxMzEwMTE1NzYyMjExNjU2WUA1MIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEAkpVuaUl9Y2j8rsrfKS9F9+ubFLcLBjmR6dDzwYwVwmGc -V66RuKWNSaSEM1K7vALUW+v4KjTnG8/4q3k1vDhlXhOipqQqA2Wdi92e+dKAIwbJ -Gbecep1IPNIXiNZHAd9Ej5tc7QT7KSM5xNUGH+GADxyPFlwOBhxPt+9gfrcbhn5O -Nc7dUbT1h8hz2wrhvWZuQmM74mUXM/HW7Lap1EgG1MpbWuFX3z9PHJRpohLN5Ryk -TaZDSqR18CjyTRUHrbJ50cqe4iH1uM3TaBR15yyuybMOA/1PYnMZZjsPmsHCyijH -RKt+dIpH7yBp+TRIsbDb5qfRr5yWIsvG3v7wPSffXQIDAQABo4IBeTCCAXUwbAYI -KwYBBQUHAQEEYDBeMCgGCCsGAQUFBzABhhxodHRwOi8vb2NzcC5jZmNhLmNvbS5j -bi9vY3NwMDIGCCsGAQUFBzAChiZodHRwOi8vY3JsLmNmY2EuY29tLmNuL29jYTMz -L29jYTMzLmNlcjAfBgNVHSMEGDAWgBRNqVf932ypLZpGIQ4YP61p7ue+6DAMBgNV -HRMBAf8EAjAAMEgGA1UdIARBMD8wPQYIYIEchu8qAQQwMTAvBggrBgEFBQcCARYj -aHR0cDovL3d3dy5jZmNhLmNvbS5jbi91cy91cy0xNC5odG0wPgYDVR0fBDcwNTAz -oDGgL4YtaHR0cDovL2NybC5jZmNhLmNvbS5jbi9vY2EzMy9SU0EvY3JsNDg1MDku -Y3JsMA4GA1UdDwEB/wQEAwIDyDAdBgNVHQ4EFgQUuwVbDG59DSaSgqO5Q89+7DuD -bfcwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMA0GCSqGSIb3DQEBCwUA -A4IBAQBxQ+htI6Fwmm7mg4CeV6l75pVlZPLRwzw0SvkwqOjJ3Yya8Ie55yrJYvOF -QlVENn+K1R9gqJf1VouafV4fkJMuxJpDJWv10N4UNlx0Cowq58Vmlq9ZLDimhtTN -6Ua+rgdsSvSJJn0yPWh4/9Yp+pGZeV5O4ODv6GMm+HP1Bv9lA51VLzgQla7kPBfP -gK8xOtsqjkcxk7qXOa2au7z2daVfsylzNTd1VnZkMz8az7hE7BWPowv2/xCPyX5n -YTtKypS0vGeoiud+UgQ9wm4tfkvfkwQcAkYKGlWtJbnBRu5nAXB1dce4uUHMddiu -AGkAC3MV5r6Dd6LT6sFsMSASz5Mh ------END CERTIFICATE----- diff --git a/bd-third/src/main/resources/fastmoney/test/10012140356.pfx b/bd-third/src/main/resources/fastmoney/test/10012140356.pfx deleted file mode 100644 index daffaf6054d4ba361cdefa466d54096e1b3ae71b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2769 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.2.0.1.0 3.13.0 3.0.0 - 2.8.0 5.7.22 - 7.1.7 3.4.1 1.7 2.3.0 1.2.10 - 0.4.17 - 2.7.3 3.0.19 1.60 @@ -198,13 +194,6 @@ ${bd.version} - com.bd @@ -287,20 +276,6 @@ ${aliyun-sdk-sms.version} - - - com.github.javen205 - IJPay-WxPay - ${ijapy.version} - - - - - com.github.javen205 - IJPay-AliPay - ${ijapy.version} - - cn.hutool @@ -308,14 +283,6 @@ ${hutool.version} - - com.google.zxing @@ -354,30 +321,6 @@ ${huifu.version} - - - net.coobird - thumbnailator - ${thumbnailator.version} - - - - - ws.schild - jave-core - ${schild.version} - - - ws.schild - jave-nativebin-win64 - ${schild.version} - - - ws.schild - jave-nativebin-linux64 - ${schild.version} - - com.huifu.bspay.sdk diff --git a/文档/三方对接/胜天半子供应链.txt b/文档/三方对接/胜天半子供应链.txt deleted file mode 100644 index 32c6c88b..00000000 --- a/文档/三方对接/胜天半子供应链.txt +++ /dev/null @@ -1,16 +0,0 @@ -技术文档: -http://apidoc.jxhh.com/ - - -登录地址: -https://sso.jxhh.com/login.html?redirect=https://open.jxhh.com/loginticket - - -正式账号: 18665770108 - -测试账号: 18310333172 - - -正式回调: https://a2.hzs413.com/prod-api/jxhh/notify - -测试回调: http://a1.hzs413.com/prod-api/jxhh/notify