From 4f50cc295258d7243bf66d402f08a16f2bdbaf14 Mon Sep 17 00:00:00 2001
From: dzc <2388224167@qq.com>
Date: Mon, 1 Jun 2026 14:29:25 +0800
Subject: [PATCH] =?UTF-8?q?feat:=E4=BB=98=E6=AC=BE=E7=A0=81=E6=94=AF?=
=?UTF-8?q?=E4=BB=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../api/constant/xfj/HardXfjTypeEnum.java | 6 +-
.../order/xfj/HardXfjFastCreateOrderDto.java | 11 +
.../api/dto/wechat/WechantReverseDto.java | 21 -
.../api/dto/wechat/WechatMicropayDto.java | 34 --
.../hard/api/dto/wechat/WechatQueryDto.java | 21 -
.../hard/api/dto/wechat/WechatRefundDto.java | 27 --
.../api/dto/wechat/WechatRefundQueryDto.java | 17 -
.../wechat/WechantRefunCallbackSoureVo.java | 30 --
.../api/vo/wechat/WechantRefunCallbackVo.java | 77 ----
.../hard/api/vo/wechat/WechantReverseVo.java | 44 --
.../hard/api/vo/wechat/WechatMicropayVo.java | 43 --
.../hard/api/vo/wechat/WechatQueryVo.java | 125 ------
.../api/vo/wechat/WechatRefundQueryVo.java | 102 -----
.../hard/api/vo/wechat/WechatRefundVo.java | 84 ----
.../HardThirdMiOrderController.java | 122 ------
.../hard/controller/ali/AliPayController.java | 47 --
.../wechant/WechantPayController.java | 40 --
.../pjcloud/hard/service/AlipayService.java | 42 --
.../hard/service/HardAfterSaleService.java | 6 -
.../hard/service/HardThirdMiOrderService.java | 24 -
.../hard/service/MiniAlipayService.java | 50 ---
.../hard/service/WechatPayService.java | 45 --
.../service/impl/HardAuthServiceImpl.java | 22 +-
.../service/impl/HardDoorFlowServiceImpl.java | 21 -
.../impl/HardThirdMiOrderServiceImpl.java | 114 -----
.../service/impl/ali/AlipayServiceImpl.java | 206 ---------
.../impl/ali/MiniAlipayServiceImpl.java | 411 ------------------
.../manager/HardDoorCabinetServiceImpl.java | 10 +-
.../impl/order/HardAfterSaleServiceImpl.java | 71 +--
.../impl/order/HardOrderServiceImpl.java | 104 +++--
.../impl/wechat/WechatPayServiceImpl.java | 377 ----------------
.../service/impl/xfj/HardXfjServiceImpl.java | 59 ++-
.../feign/RemoterThirdAppPlusPayService.java | 10 +-
.../miniplatform/AppPlusPlatformTypeEnum.java | 1 +
.../pay/ThirdPayOrderBizTypeEnum.java | 3 +-
.../dto/appplus/ThirdMicropayDto.java | 55 +++
.../dto/appplus/ThirdMiniAppPayDto.java | 2 +-
.../pay/wechat/ThirdAppPlusPayDto.java | 5 +
.../pjcloud-thirdparty-biz/pom.xml | 7 +
.../thirdparty/config/AppPlusPayConfig.java | 19 +
.../initconfig/WechatV2Configuration.java | 40 ++
...ration.java => WechatV3Configuration.java} | 10 +-
.../appplus/ThirdAppPlusController.java | 24 +-
.../service/ThirdAppPlusService.java | 6 +
.../ThirdAppPlusWechatMicropayService.java | 24 +
.../impl/appplus/ThirdAppPlusServiceImpl.java | 88 +++-
...ThirdAppPlusWechatMicropayServiceImpl.java | 163 +++++++
.../ThirdAppPlusWechatServiceImpl.java | 5 +-
.../fz/ThirdAppPlusWechatFzServiceImpl.java | 2 +-
.../thirdparty/utils/pay/PayForUtil.java | 34 ++
.../src/main/resources/application.yml | 3 +
.../impl/mch/MchPaySettingServiceImpl.java | 10 +
.../WalletRechargePackageServiceImpl.java | 4 +-
53 files changed, 630 insertions(+), 2298 deletions(-)
delete mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/wechat/WechantReverseDto.java
delete mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/wechat/WechatMicropayDto.java
delete mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/wechat/WechatQueryDto.java
delete mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/wechat/WechatRefundDto.java
delete mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/wechat/WechatRefundQueryDto.java
delete mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechantRefunCallbackSoureVo.java
delete mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechantRefunCallbackVo.java
delete mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechantReverseVo.java
delete mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechatMicropayVo.java
delete mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechatQueryVo.java
delete mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechatRefundQueryVo.java
delete mode 100644 pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechatRefundVo.java
delete mode 100755 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardThirdMiOrderController.java
delete mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/ali/AliPayController.java
delete mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/wechant/WechantPayController.java
delete mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/AlipayService.java
delete mode 100755 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardThirdMiOrderService.java
delete mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/MiniAlipayService.java
delete mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/WechatPayService.java
delete mode 100755 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardThirdMiOrderServiceImpl.java
delete mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/ali/AlipayServiceImpl.java
delete mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/ali/MiniAlipayServiceImpl.java
delete mode 100644 pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/wechat/WechatPayServiceImpl.java
create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/appplus/ThirdMicropayDto.java
create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/initconfig/WechatV2Configuration.java
rename pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/initconfig/{WechatConfiguration.java => WechatV3Configuration.java} (89%)
create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdAppPlusWechatMicropayService.java
create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/appplus/ThirdAppPlusWechatMicropayServiceImpl.java
create mode 100644 pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/pay/PayForUtil.java
diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/xfj/HardXfjTypeEnum.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/xfj/HardXfjTypeEnum.java
index 2fad482ff..f2ece356a 100644
--- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/xfj/HardXfjTypeEnum.java
+++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/constant/xfj/HardXfjTypeEnum.java
@@ -14,7 +14,9 @@ import java.util.Arrays;
@Getter
public enum HardXfjTypeEnum {
- QRCODE_PAY("10", "二维码支付"),
+ QRCODE_PAY("10", "钱包二维码支付"),
+ WECHAT_QRCODE_PAY("11", "微信二维码支付"),
+ ALI_QRCODE_PAY("12", "支付宝二维码支付"),
CARD_PAY("20", "饭卡支付"),
;
private final String type;
@@ -28,6 +30,8 @@ public enum HardXfjTypeEnum {
public static HardPayTypeEnum getHardPayType(HardXfjTypeEnum type) {
return switch (type) {
case QRCODE_PAY -> HardPayTypeEnum.WALLET_QR_CODE;
+ case WECHAT_QRCODE_PAY -> HardPayTypeEnum.WECHANT_SELF_QR_CODE_PAY;
+ case ALI_QRCODE_PAY -> HardPayTypeEnum.ALI_SELF_QR_CODE_PAY;
case CARD_PAY -> HardPayTypeEnum.WALLET_CARD;
};
}
diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/xfj/HardXfjFastCreateOrderDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/xfj/HardXfjFastCreateOrderDto.java
index 4c227e42b..60df1bf4d 100644
--- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/xfj/HardXfjFastCreateOrderDto.java
+++ b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/order/xfj/HardXfjFastCreateOrderDto.java
@@ -1,6 +1,7 @@
package com.bsd.pjcloud.hard.api.dto.order.xfj;
import com.bsd.pjcloud.hard.api.constant.xfj.HardXfjTypeEnum;
+import com.bsd.pjcloud.thirdparty.constant.miniplatform.AppPlusPlatformTypeEnum;
import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum;
import lombok.Data;
@@ -37,4 +38,14 @@ public class HardXfjFastCreateOrderDto {
*/
private HardXfjTypeEnum xfjPayType;
+ /**
+ * 终端支付类型
+ */
+ private AppPlusPlatformTypeEnum platformType;
+
+ /**
+ * 付款码支付code
+ */
+ private String devicePayCode;
+
}
diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/wechat/WechantReverseDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/wechat/WechantReverseDto.java
deleted file mode 100644
index 71e2ca977..000000000
--- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/wechat/WechantReverseDto.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.bsd.pjcloud.hard.api.dto.wechat;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-/**
- * 撤销订单入参
- */
-@Data
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-public class WechantReverseDto {
-
- private Long orderId;
-
- private String wechantOrderId;
-
-}
diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/wechat/WechatMicropayDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/wechat/WechatMicropayDto.java
deleted file mode 100644
index cdcecd72b..000000000
--- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/wechat/WechatMicropayDto.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.bsd.pjcloud.hard.api.dto.wechat;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-public class WechatMicropayDto {
-
- /**
- * 商户id
- */
- private Long merId;
-
- /**
- * 订单id
- */
- private Long orderId;
-
- /**
- * 支付金额(分)
- */
- private Integer price;
-
- /**
- * 微信付款码code
- */
- private String wechatQrCode;
-
-}
diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/wechat/WechatQueryDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/wechat/WechatQueryDto.java
deleted file mode 100644
index c3678e794..000000000
--- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/wechat/WechatQueryDto.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.bsd.pjcloud.hard.api.dto.wechat;
-
-import lombok.Data;
-
-/**
- * 查询订单入参
- */
-@Data
-public class WechatQueryDto {
-
- /**
- * 微信订单号
- */
- private String wechantOrderId;
-
- /**
- * 商户订单号
- */
- private String orderId;
-
-}
diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/wechat/WechatRefundDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/wechat/WechatRefundDto.java
deleted file mode 100644
index 837bc8152..000000000
--- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/wechat/WechatRefundDto.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.bsd.pjcloud.hard.api.dto.wechat;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-/**
- * 退款入参
- */
-@Data
-@Builder
-@AllArgsConstructor
-@NoArgsConstructor
-public class WechatRefundDto {
-
- private Long orderId;
-
- private String wechantOrderId;
-
- private Long refundId;
-
- private Integer orderPrice;
-
- private Integer refundPrice;
-
-}
diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/wechat/WechatRefundQueryDto.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/wechat/WechatRefundQueryDto.java
deleted file mode 100644
index b01d99737..000000000
--- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/dto/wechat/WechatRefundQueryDto.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.bsd.pjcloud.hard.api.dto.wechat;
-
-import lombok.Data;
-
-/**
- * 微信退款查询入参
- */
-@Data
-public class WechatRefundQueryDto {
-
- /**
- * 退款id
- */
- private String refundId;
-
-
-}
diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechantRefunCallbackSoureVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechantRefunCallbackSoureVo.java
deleted file mode 100644
index 8f0905354..000000000
--- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechantRefunCallbackSoureVo.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.bsd.pjcloud.hard.api.vo.wechat;
-
-import lombok.Data;
-
-/**
- * 微信退款回调加密的返回参数
- */
-@Data
-public class WechantRefunCallbackSoureVo {
-
- /**
- * 公众账号ID
- */
- private String appid;
-
- /**
- * 退款的商户号
- */
- private String mch_id;
-
- /**
- * 随机字符串
- */
- private String nonce_str;
-
- /**
- * 加密信息
- */
- private String req_info;
-}
diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechantRefunCallbackVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechantRefunCallbackVo.java
deleted file mode 100644
index cf289e298..000000000
--- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechantRefunCallbackVo.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package com.bsd.pjcloud.hard.api.vo.wechat;
-
-import cn.hutool.core.util.ObjectUtil;
-import lombok.Data;
-
-/**
- * 微信退款回调返回参数
- */
-@Data
-public class WechantRefunCallbackVo {
-
- public static final String SUCCESS_CODE = "SUCCESS";
-
- /**
- * 微信订单号
- */
- private String transaction_id;
-
- /**
- * 商户订单号
- */
- private String out_trade_no;
-
- /**
- * 微信退款单号
- */
- private String refund_id;
-
- /**
- * 商户退款单号
- */
- private String out_refund_no;
-
- /**
- * 订单金额
- */
- private String total_fee;
-
- /**
- * 应结订单金额
- */
- private String settlement_total_fee;
-
- /**
- * 申请退款金额
- */
- private String refund_fee;
-
- /**
- * 退款金额
- */
- private String settlement_refund_fee;
-
- /**
- * 退款状态
- */
- private String refund_status;
-
- public boolean isAllSuccess() {
- return ObjectUtil.equals(refund_status, SUCCESS_CODE);
- }
-
- public static String wechantError() {
- return "" +
- "" +
- "" +
- "";
- }
-
- public static String wechantSuccess() {
- return "" +
- " " +
- " \n" +
- "";
- }
-
-}
diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechantReverseVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechantReverseVo.java
deleted file mode 100644
index b9bd73a5c..000000000
--- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechantReverseVo.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.bsd.pjcloud.hard.api.vo.wechat;
-
-import cn.hutool.core.util.ObjectUtil;
-import lombok.Data;
-
-/**
- * 撤销订单返回
- */
-@Data
-public class WechantReverseVo {
- public static final String SUCCESS = "SUCCESS";
-
- private String return_code;
-
- private String return_msg;
-
- private String appid;
-
- private String mch_id;
-
- private String nonce_str;
-
- private String sign;
-
- private String result_code;
-
- private String err_code;
-
- private String err_code_des;
-
- private String recall;
-
- public boolean isHttpSucess() {
- return ObjectUtil.equals(WechatMicropayVo.SUCCESS, return_code);
- }
-
- public boolean isPaySucess() {
- return ObjectUtil.equals(WechatMicropayVo.SUCCESS, result_code);
- }
-
- public boolean isAllSuccess() {
- return isHttpSucess() && isPaySucess();
- }
-}
diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechatMicropayVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechatMicropayVo.java
deleted file mode 100644
index 0c3878e6a..000000000
--- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechatMicropayVo.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.bsd.pjcloud.hard.api.vo.wechat;
-
-import cn.hutool.core.util.ObjectUtil;
-import lombok.Data;
-
-@Data
-public class WechatMicropayVo {
-
- public static final String SUCCESS = "SUCCESS";
-
- private String return_code;
-
- private String return_msg;
-
- private String appid;
-
- private String mch_id;
-
- private String device_info;
-
- private String nonce_str;
-
- private String sign;
-
- private String result_code;
-
- private String err_code;
-
- private String err_code_des;
-
- public boolean isHttpSucess() {
- return ObjectUtil.equals(WechatMicropayVo.SUCCESS, return_code);
- }
-
- public boolean isPaySucess() {
- return ObjectUtil.equals(WechatMicropayVo.SUCCESS, result_code);
- }
-
- public boolean isAllSuccess(){
- return isHttpSucess() && isPaySucess();
- }
-
-}
diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechatQueryVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechatQueryVo.java
deleted file mode 100644
index c4cd034b6..000000000
--- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechatQueryVo.java
+++ /dev/null
@@ -1,125 +0,0 @@
-package com.bsd.pjcloud.hard.api.vo.wechat;
-
-import cn.hutool.core.util.ObjectUtil;
-import lombok.Data;
-
-/**
- * 查询订单返回
- */
-@Data
-public class WechatQueryVo {
- public static final String SUCCESS = "SUCCESS";
-
- private String return_code;
-
- private String return_msg;
-
- private String appid;
-
- private String mch_id;
-
- private String nonce_str;
-
- private String sign;
-
- private String result_code;
-
- private String err_code;
-
- private String err_code_des;
-
- private String device_info;
-
- /**
- * 用户标识
- */
- private String openid;
-
- /**
- * 是否关注公众账号
- */
- private String is_subscribe;
-
- /**
- * 交易类型
- */
- private String trade_type;
-
- /**
- * 交易状态
- */
- private String trade_state;
-
- /**
- * 付款银行
- */
- private String bank_type;
-
- /**
- * 标价金额
- */
- private String total_fee;
-
- /**
- * 应结订单金额
- */
- private String settlement_total_fee;
-
- /**
- * 标价币种
- */
- private String fee_type;
-
- /**
- * 现金支付金额
- */
- private String cash_fee;
-
- /**
- * 现金支付币种
- */
- private String cash_fee_type;
-
- /**
- * 代金券金额
- */
- private String coupon_fee;
-
- /**
- * 代金券使用数量
- */
- private String coupon_count;
-
- /**
- * 微信支付订单号
- */
- private String transaction_id;
-
- /**
- * 商户订单号
- */
- private String out_trade_no;
-
- /**
- * 附加数据
- */
- private String attach;
-
- /**
- * 支付完成时间
- */
- private String time_end;
-
- /**
- * 交易状态描述
- */
- private String trade_state_desc;
-
- public boolean isHttpSucess() {
- return ObjectUtil.equals(WechatMicropayVo.SUCCESS, return_code);
- }
-
- public boolean isPaySucess() {
- return ObjectUtil.equals(WechatMicropayVo.SUCCESS, result_code);
- }
-}
diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechatRefundQueryVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechatRefundQueryVo.java
deleted file mode 100644
index 3479d177e..000000000
--- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechatRefundQueryVo.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package com.bsd.pjcloud.hard.api.vo.wechat;
-
-import cn.hutool.core.util.ObjectUtil;
-import lombok.Data;
-
-/**
- * 退款返回
- */
-@Data
-public class WechatRefundQueryVo {
-
- public static final String SUCCESS = "SUCCESS";
-
- /**
- * 业务结果
- */
- private String result_code;
-
- /**
- * 错误码
- */
- private String err_code;
-
- /**
- * 错误描述
- */
- private String err_code_des;
-
- /**
- * 公众账号ID
- */
- private String appid;
-
- /**
- * 商户号
- */
- private String mch_id;
-
- /**
- * 随机字符串
- */
- private String nonce_str;
-
- /**
- * 签名
- */
- private String sign;
-
- /**
- * 订单总退款次数
- */
- private Long total_refund_count;
-
- /**
- * 微信订单号
- */
- private String transaction_id;
-
- /**
- * 商户订单号
- */
- private String out_trade_no;
-
- /**
- * 订单金额
- */
- private Long total_fee;
-
- /**
- * 应结订单金额
- */
- private Long settlement_total_fee;
-
- /**
- * 货币种类
- */
- private String fee_type;
-
- /**
- * 现金支付金额
- */
- private Long cash_fee;
-
- /**
- * 退款笔数
- */
- private Long refund_count;
-
- /**
- * 退款总金额
- */
- private Long refund_fee;
-
- public boolean isHttpSucess() {
- return ObjectUtil.equals(WechatMicropayVo.SUCCESS, err_code);
- }
-
- public boolean isPaySucess() {
- return ObjectUtil.equals(WechatMicropayVo.SUCCESS, result_code);
- }
-
-}
diff --git a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechatRefundVo.java b/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechatRefundVo.java
deleted file mode 100644
index 4355502e7..000000000
--- a/pjcloud-hardware/pjcloud-hardware-api/src/main/java/com/bsd/pjcloud/hard/api/vo/wechat/WechatRefundVo.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package com.bsd.pjcloud.hard.api.vo.wechat;
-
-import cn.hutool.core.util.ObjectUtil;
-import lombok.Data;
-
-/**
- * 退款返回
- */
-@Data
-public class WechatRefundVo {
-
- public static final String SUCCESS = "SUCCESS";
-
- private String return_code;
-
- private String return_msg;
-
- private String result_code;
-
- private String err_code;
-
- private String err_code_des;
-
- private String appid;
-
- private String mch_id;
-
- private String nonce_str;
-
-
- private String sign;
-
- /**
- * 微信支付订单号
- */
- private String transaction_id;
-
- /**
- * 商户订单号
- */
- private String out_trade_no;
-
- /**
- * 商户退款单号
- */
- private String out_refund_no;
-
- /**
- * 微信退款单号
- */
- private String refund_id;
-
- /**
- * 退款金额
- */
- private String refund_fee;
-
- /**
- * 应结退款金额
- */
- private String settlement_refund_fee;
-
- /**
- * 标价金额
- */
- private String total_fee;
-
- /**
- * 应结订单金额
- */
- private String settlement_total_fee;
-
- public boolean isHttpSucess() {
- return ObjectUtil.equals(WechatMicropayVo.SUCCESS, return_code);
- }
-
- public boolean isPaySucess() {
- return ObjectUtil.equals(WechatMicropayVo.SUCCESS, result_code);
- }
-
- public boolean isAllSuccess() {
- return isHttpSucess() && isPaySucess();
- }
-}
diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardThirdMiOrderController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardThirdMiOrderController.java
deleted file mode 100755
index 8e71e9e24..000000000
--- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/HardThirdMiOrderController.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package com.bsd.pjcloud.hard.controller;
-
-import cn.hutool.core.util.ArrayUtil;
-import cn.hutool.core.collection.CollUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.bsd.pjcloud.common.core.util.R;
-import com.bsd.pjcloud.common.log.annotation.SysLog;
-import com.bsd.pjcloud.hard.api.dto.HardThirdMiPayDto;
-import com.bsd.pjcloud.hard.api.entity.HardThirdMiOrderEntity;
-import com.bsd.pjcloud.hard.service.HardThirdMiOrderService;
-import org.springframework.security.access.prepost.PreAuthorize;
-import com.bsd.pjcloud.common.excel.annotation.ResponseExcel;
-import io.swagger.v3.oas.annotations.security.SecurityRequirement;
-import org.springdoc.core.annotations.ParameterObject;
-import org.springframework.http.HttpHeaders;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Operation;
-import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-import java.util.Objects;
-
-/**
- * 硬件商品免密订单
- */
-@RestController
-@RequiredArgsConstructor
-@RequestMapping("/hard-third-mi-order")
-@Tag(description = "hardThirdMiOrder", name = "硬件商品免密订单管理")
-@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
-public class HardThirdMiOrderController {
-
- private final HardThirdMiOrderService hardThirdMiOrderService;
-
- /**
- * 刷新订单
- */
- @Operation(summary = "刷新订单", description = "刷新订单")
- @GetMapping("/refresh")
- public R refresh(@RequestParam("id") Long id) {
- hardThirdMiOrderService.refresh(id);
- return R.ok();
- }
-
- /**
- * 支付订单
- */
- @Operation(summary = "支付订单", description = "支付订单")
- @PostMapping("/admin-pay")
- public R adminPay(@RequestBody HardThirdMiPayDto dto) {
- hardThirdMiOrderService.adminPay(dto);
- return R.ok();
- }
-
-
- /**
- * 分页查询
- */
- @Operation(summary = "分页查询", description = "分页查询")
- @GetMapping("/page")
- @PreAuthorize("@pms.hasPermission('thirdmi_hardThirdMiOrder_view')")
- public R getHardThirdMiOrderPage(@ParameterObject Page page, @ParameterObject HardThirdMiOrderEntity hardThirdMiOrder) {
- LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
- return R.ok(hardThirdMiOrderService.page(page, wrapper));
- }
-
- /**
- * 通过id查询硬件商品免密订单
- */
- @Operation(summary = "通过id查询", description = "通过id查询")
- @GetMapping("/{id}")
- @PreAuthorize("@pms.hasPermission('thirdmi_hardThirdMiOrder_view')")
- public R getById(@PathVariable("id") Long id) {
- return R.ok(hardThirdMiOrderService.getById(id));
- }
-
- /**
- * 新增硬件商品免密订单
- */
- @Operation(summary = "新增硬件商品免密订单", description = "新增硬件商品免密订单")
- @SysLog("新增硬件商品免密订单")
- @PostMapping
- @PreAuthorize("@pms.hasPermission('thirdmi_hardThirdMiOrder_add')")
- public R save(@RequestBody HardThirdMiOrderEntity hardThirdMiOrder) {
- return R.ok(hardThirdMiOrderService.save(hardThirdMiOrder));
- }
-
- /**
- * 修改硬件商品免密订单
- */
- @Operation(summary = "修改硬件商品免密订单", description = "修改硬件商品免密订单")
- @SysLog("修改硬件商品免密订单")
- @PutMapping
- @PreAuthorize("@pms.hasPermission('thirdmi_hardThirdMiOrder_edit')")
- public R updateById(@RequestBody HardThirdMiOrderEntity hardThirdMiOrder) {
- return R.ok(hardThirdMiOrderService.updateById(hardThirdMiOrder));
- }
-
- /**
- * 通过id删除硬件商品免密订单
- */
- @Operation(summary = "通过id删除硬件商品免密订单", description = "通过id删除硬件商品免密订单")
- @SysLog("通过id删除硬件商品免密订单")
- @DeleteMapping
- @PreAuthorize("@pms.hasPermission('thirdmi_hardThirdMiOrder_del')")
- public R removeById(@RequestBody Long[] ids) {
- return R.ok(hardThirdMiOrderService.removeBatchByIds(CollUtil.toList(ids)));
- }
-
- /**
- * 导出excel 表格
- */
- @ResponseExcel
- @GetMapping("/export")
- @PreAuthorize("@pms.hasPermission('thirdmi_hardThirdMiOrder_export')")
- public List export(HardThirdMiOrderEntity hardThirdMiOrder, Long[] ids) {
- return hardThirdMiOrderService.list(Wrappers.lambdaQuery(hardThirdMiOrder).in(ArrayUtil.isNotEmpty(ids), HardThirdMiOrderEntity::getId, ids));
- }
-}
\ No newline at end of file
diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/ali/AliPayController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/ali/AliPayController.java
deleted file mode 100644
index 173b1c7bf..000000000
--- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/ali/AliPayController.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.bsd.pjcloud.hard.controller.ali;
-
-import com.bsd.pjcloud.common.security.annotation.Inner;
-import com.bsd.pjcloud.hard.service.AlipayService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.security.SecurityRequirement;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import jakarta.servlet.http.HttpServletRequest;
-import lombok.RequiredArgsConstructor;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestHeader;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.HashMap;
-import java.util.Map;
-
-@RestController
-@RequiredArgsConstructor
-@RequestMapping("/hard-ali-pay")
-@Tag(description = "hard-ali-pay", name = "支付宝相关")
-@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
-@Validated
-public class AliPayController {
-
- private final AlipayService aliPayService;
-
- /* ************************************* start callback start ************************************* */
-
- @Inner(value = false)
- @PostMapping("/callback")
- @Operation(summary = "支付宝回调")
- public String refundCallback(HttpServletRequest request) {
- Map parameterMap = request.getParameterMap();
- Map params = new HashMap<>();
- for (Map.Entry entry : parameterMap.entrySet()) {
- params.put(entry.getKey(), entry.getValue()[0]);
- }
- return aliPayService.refundCallback(params);
- }
-
- /* ************************************* end callback end ************************************* */
-
-}
diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/wechant/WechantPayController.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/wechant/WechantPayController.java
deleted file mode 100644
index c96891b49..000000000
--- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/controller/wechant/WechantPayController.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.bsd.pjcloud.hard.controller.wechant;
-
-import com.bsd.pjcloud.common.security.annotation.Inner;
-import com.bsd.pjcloud.hard.service.WechatPayService;
-import io.swagger.v3.oas.annotations.Operation;
-import io.swagger.v3.oas.annotations.security.SecurityRequirement;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import lombok.RequiredArgsConstructor;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestHeader;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.Map;
-
-@RestController
-@RequiredArgsConstructor
-@RequestMapping("/hard-wechant-pay")
-@Tag(description = "hard-wechant", name = "微信相关")
-@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
-@Validated
-public class WechantPayController {
-
- private final WechatPayService wechatPayService;
-
- /* ************************************* start callback start ************************************* */
-
- @Inner(value = false)
- @PostMapping("/callback/refund")
- @Operation(summary = "微信退款回调")
- public String refundCallback(HttpEntity httpEntity, @RequestHeader Map headers) {
- return wechatPayService.refundCallback(httpEntity, headers);
- }
-
- /* ************************************* end callback end ************************************* */
-
-}
diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/AlipayService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/AlipayService.java
deleted file mode 100644
index d2c04b392..000000000
--- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/AlipayService.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.bsd.pjcloud.hard.service;
-
-
-import com.alipay.api.response.*;
-import com.bsd.pjcloud.hard.api.dto.ali.*;
-import org.springframework.http.HttpEntity;
-import org.springframework.web.bind.annotation.RequestHeader;
-
-import java.util.Map;
-
-public interface AlipayService {
-
- /**
- * 付款码支付
- */
- AlipayTradePayResponse micropay(AliMicropayDto dto);
-
- /**
- * 查询订单
- */
- AlipayTradeQueryResponse query(AliQueryDto dto);
-
- /**
- * 撤销订单
- */
- AlipayTradeCancelResponse reverse(AliReverseDto dto);
-
- /**
- * 申请退款
- */
- AlipayTradeRefundResponse refund(AliRefundDto dto);
-
- /**
- * 查询退款
- */
- AlipayTradeFastpayRefundQueryResponse refundQuery(AliRefundQueryDto dto);
-
- /**
- * 退款回调
- */
- String refundCallback(Map params);
-}
diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleService.java
index 9e2480e2a..c385c1551 100644
--- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleService.java
+++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleService.java
@@ -11,7 +11,6 @@ import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleEntity;
import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleLogEntity;
import com.bsd.pjcloud.hard.api.vo.order.HardAfterSaleVo;
import com.bsd.pjcloud.hard.api.vo.order.HardOrderVo;
-import com.bsd.pjcloud.hard.api.vo.wechat.WechantRefunCallbackVo;
import java.util.List;
@@ -45,11 +44,6 @@ public interface HardAfterSaleService extends IService {
void refund(Long afterSaleId, String prefixStr);
- /**
- * 微信退款回调通知
- */
- boolean wechatRefundCallback(WechantRefunCallbackVo decrypt);
-
/**
* 同意售后
*/
diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardThirdMiOrderService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardThirdMiOrderService.java
deleted file mode 100755
index b09b04179..000000000
--- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardThirdMiOrderService.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.bsd.pjcloud.hard.service;
-
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.bsd.pjcloud.hard.api.dto.HardThirdMiPayDto;
-import com.bsd.pjcloud.hard.api.entity.HardThirdMiOrderEntity;
-import jakarta.validation.constraints.NotNull;
-
-public interface HardThirdMiOrderService extends IService {
-
- /**
- * 刷新订单
- */
- void refresh(Long id);
-
- /**
- * 后台支付
- */
- void adminPay(HardThirdMiPayDto dto);
-
- /**
- * 根据授权id查询授权订单
- */
- HardThirdMiOrderEntity getByAuthId(Long authId);
-}
\ No newline at end of file
diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/MiniAlipayService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/MiniAlipayService.java
deleted file mode 100644
index ca534d629..000000000
--- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/MiniAlipayService.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.bsd.pjcloud.hard.service;
-
-
-import com.alipay.api.response.*;
-import com.bsd.pjcloud.common.core.constant.enums.UserTypeEnum;
-import com.bsd.pjcloud.hard.api.entity.HardThirdMiOrderEntity;
-
-public interface MiniAlipayService {
-
- /**
- * 获取智能柜小程序二维码
- */
- String getDoorMiniQrCode(String hardDoorId, String cabinetNo);
-
- /**
- * 免密授权
- */
- String miDynamicSign(Long userId, UserTypeEnum userType, Long authId);
-
- /**
- * 查询免密授权
- */
- ZhimaCreditPayafteruseCreditagreementQueryResponse miDynamicQueySign(Long authId);
-
- /**
- * 免密服务下单
- */
- ZhimaCreditPayafteruseCreditbizorderOrderResponse miDynamicOrder(Long authId, Long orderId, Long flowId);
-
- /**
- * 创建支付宝免密订单
- */
- AlipayTradeCreateResponse miCreateOrder(String openId, Long authId, Long userId, UserTypeEnum userType);
-
- /**
- * 查询支付宝免密订单
- */
- ZhimaCreditPayafteruseCreditbizorderQueryResponse miQueryOrder(String alipayOrderNo, Long authId);
-
- /**
- * 支付宝免密扣款
- */
- boolean miPay(HardThirdMiOrderEntity thirdOrder, int totalPrice);
-
- /**
- * 支付宝免密(取消/退款)
- */
- AlipayTradeRefundResponse miCancelOrRefund(String authId, String refundId, int price);
-
-}
diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/WechatPayService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/WechatPayService.java
deleted file mode 100644
index f2f85f0a6..000000000
--- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/WechatPayService.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.bsd.pjcloud.hard.service;
-
-
-import com.bsd.pjcloud.hard.api.dto.wechat.*;
-import com.bsd.pjcloud.hard.api.vo.wechat.*;
-import org.springframework.http.HttpEntity;
-import org.springframework.web.bind.annotation.RequestHeader;
-
-import java.util.Map;
-
-/**
- * 微信支付
- */
-public interface WechatPayService {
-
- /**
- * 付款码支付
- */
- WechatMicropayVo micropay(WechatMicropayDto dto);
-
- /**
- * 查询订单
- */
- WechatQueryVo query(WechatQueryDto dto);
-
- /**
- * 撤销订单
- */
- WechantReverseVo reverse(WechantReverseDto dto);
-
- /**
- * 申请退款
- */
- WechatRefundVo refund(WechatRefundDto dto);
-
- /**
- * 查询退款
- */
- WechatRefundQueryVo refundQuery(WechatRefundQueryDto dto);
-
- /**
- * 退款回调
- */
- String refundCallback(HttpEntity httpEntity, @RequestHeader Map headers);
-}
diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java
index 8d203a8b3..ee9821deb 100644
--- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java
+++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/HardAuthServiceImpl.java
@@ -56,8 +56,6 @@ public class HardAuthServiceImpl extends ServiceImpl implements HardThirdMiOrderService {
-
- private final MiniAlipayService miniAlipayService;
-
- /**
- * 刷新订单
- */
- @Override
- public void refresh(Long id) {
- HardThirdMiOrderEntity order = baseMapper.selectById(id);
- if (ObjectUtil.isEmpty(order)) {
- throw new RuntimeException("订单不存在");
- }
- // 微信免密支付
- if (ObjectUtil.equals(order.getBizType(), HardThirdMiTypeEnum.MI_WECHAT.getType())) {
-
- return;
- }
- // 支付宝-芝麻先享
- if (ObjectUtil.equals(order.getBizType(), HardThirdMiTypeEnum.MI_ALIPAY.getType())) {
- ZhimaCreditPayafteruseCreditbizorderQueryResponse res = miniAlipayService.miQueryOrder(null, order.getAuthId());
- if (ObjectUtil.isEmpty(res)) {
- throw new RuntimeException("支付宝-芝麻先享,未查询到此订单");
- }
- HardThirdMiOrderEntity updateObj = new HardThirdMiOrderEntity();
- updateObj.setId(order.getId());
- // 押金
- updateObj.setDepositPrice(new BigDecimal(res.getTotalAmount()).multiply(BigDecimal.valueOf(100)).intValue());
- // 扣款金额
- if (ObjectUtil.isNotEmpty(res.getTotalCreditPayAmount())) {
- updateObj.setPayPrice(new BigDecimal(res.getTotalCreditPayAmount()).multiply(BigDecimal.valueOf(100)).intValue());
- }
- // 订单状态
- if (ObjectUtil.isNotEmpty(res.getOrderStatus())) {
- String orderStatus = res.getOrderStatus();
- switch (orderStatus) {
- // 下单状态
- case "INIT":
- updateObj.setOrderStatus(HardThirdMiStatusEnum.CREATE_ORDER.getType());
- break;
- // 订单取消或者交易全额退款
- case "TRADE_CLOSED":
- updateObj.setOrderStatus(HardThirdMiStatusEnum.REFUND.getType());
- break;
- // 扣款成功状态
- case "TRADE_FINISHED":
- updateObj.setOrderStatus(HardThirdMiStatusEnum.PAY.getType());
- break;
- }
- }
- baseMapper.updateById(updateObj);
- return;
- }
- }
-
- /**
- * 后台支付
- */
- @Override
- public void adminPay(HardThirdMiPayDto dto) {
- HardThirdMiOrderEntity order = baseMapper.selectById(dto.getId());
- if (ObjectUtil.isEmpty(order)) {
- throw new RuntimeException("订单不存在");
- }
- // 微信免密支付
- if (ObjectUtil.equals(order.getBizType(), HardThirdMiTypeEnum.MI_WECHAT.getType())) {
-
- refresh(dto.getId());
- return;
- }
- // 支付宝-芝麻先享
- if (ObjectUtil.equals(order.getBizType(), HardThirdMiTypeEnum.MI_ALIPAY.getType())) {
- if (ObjectUtil.isEmpty(order.getOrderId())) {
- throw new RuntimeException("支付宝-芝麻先享,此订单未创建");
- }
- miniAlipayService.miPay(order, 10);
- refresh(dto.getId());
- return;
- }
- }
-
- /**
- * 根据授权id查询授权订单
- */
- @Override
- public HardThirdMiOrderEntity getByAuthId(Long authId) {
- return baseMapper.selectOne(new LambdaQueryWrapper()
- .eq(HardThirdMiOrderEntity::getAuthId, authId)
- );
- }
-}
\ No newline at end of file
diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/ali/AlipayServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/ali/AlipayServiceImpl.java
deleted file mode 100644
index 8cec23710..000000000
--- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/ali/AlipayServiceImpl.java
+++ /dev/null
@@ -1,206 +0,0 @@
-package com.bsd.pjcloud.hard.service.impl.ali;
-
-import cn.hutool.core.util.ObjectUtil;
-import com.alipay.api.AlipayClient;
-import com.alipay.api.AlipayConfig;
-import com.alipay.api.DefaultAlipayClient;
-import com.alipay.api.domain.*;
-import com.alipay.api.internal.util.AlipaySignature;
-import com.alipay.api.request.*;
-import com.alipay.api.response.*;
-import com.bsd.pjcloud.hard.api.dto.ali.*;
-import com.bsd.pjcloud.hard.config.AlipayConf;
-import com.bsd.pjcloud.hard.service.AlipayService;
-import lombok.AllArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.util.Map;
-
-/**
- * 支付宝支付
- */
-@Service
-@AllArgsConstructor
-@Slf4j
-public class AlipayServiceImpl implements AlipayService {
-
- private final AlipayConf conf;
-
- static private AlipayClient client = null;
-
- private void initClient() {
- AlipayConfig alipayConfig = new AlipayConfig();
- alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
- alipayConfig.setAppId(conf.getAppId());
- alipayConfig.setPrivateKey(conf.getPrivateKey());
- alipayConfig.setFormat("json");
- alipayConfig.setCharset("UTF-8");
- alipayConfig.setAlipayPublicKey(conf.getAlipayPublicKey());
- alipayConfig.setSignType("RSA2");
- try {
- AlipayServiceImpl.client = new DefaultAlipayClient(alipayConfig);
- } catch (Exception e) {
- log.error("初始化支付宝客户端异常", e);
- }
- }
-
- private AlipayClient getClient() {
- if (ObjectUtil.isEmpty(AlipayServiceImpl.client)) initClient();
- return AlipayServiceImpl.client;
- }
-
- /**
- * 付款码支付
- */
- public AlipayTradePayResponse micropay(AliMicropayDto dto) {
- AlipayClient alipayClient = getClient();
- AlipayTradePayRequest request = new AlipayTradePayRequest();
- AlipayTradePayModel model = new AlipayTradePayModel();
- BigDecimal payPrice = BigDecimal.valueOf(dto.getPrice()).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP);
- // 订单号
- model.setOutTradeNo(String.valueOf(dto.getOrderId()));
- // 支付金额单位元
- model.setTotalAmount(payPrice.toString());
- // 订单标题
- model.setSubject(dto.getSubject());
- // 支付授权码
- model.setAuthCode(dto.getAuthCode());
- // 支付场景
- model.setScene("bar_code");
- request.setBizModel(model);
- request.setNotifyUrl(conf.getCallbackUrl());
- try {
- AlipayTradePayResponse response = alipayClient.execute(request);
- String body = response.getBody();
- log.debug("申请退款,json|{}", body);
- return response;
- } catch (Exception e) {
- log.error("支付宝支付异常", e);
- return null;
- }
- }
-
- /**
- * 查询订单
- */
- @Override
- public AlipayTradeQueryResponse query(AliQueryDto dto) {
- AlipayClient alipayClient = getClient();
- AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
- AlipayTradeQueryModel model = new AlipayTradeQueryModel();
- // 订单号
- model.setOutTradeNo(dto.getOrderId());
- // 支付宝订单号
- model.setTradeNo(dto.getAliOrderId());
- request.setBizModel(model);
- try {
- AlipayTradeQueryResponse response = alipayClient.execute(request);
- String body = response.getBody();
- log.debug("查询订单,json|{}", body);
- return response;
- } catch (Exception e) {
- log.error("查询订单异常", e);
- }
- return null;
- }
-
- /**
- * 撤销订单
- */
- @Override
- public AlipayTradeCancelResponse reverse(AliReverseDto dto) {
- AlipayClient alipayClient = getClient();
- AlipayTradeCancelRequest request = new AlipayTradeCancelRequest();
- AlipayTradeCancelModel model = new AlipayTradeCancelModel();
- // 订单号
- model.setOutTradeNo(String.valueOf(dto.getOrderId()));
- // 支付宝订单号
- model.setTradeNo(dto.getAliOrderId());
- request.setBizModel(model);
- try {
- AlipayTradeCancelResponse response = alipayClient.execute(request);
- String body = response.getBody();
- log.debug("撤销订单,json|{}", body);
- return response;
- } catch (Exception e) {
- log.error("撤销订单", e);
- }
- return null;
- }
-
- /**
- * 申请退款
- */
- @Override
- public AlipayTradeRefundResponse refund(AliRefundDto dto) {
- AlipayClient alipayClient = getClient();
- AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
- AlipayTradeRefundModel model = new AlipayTradeRefundModel();
- BigDecimal refundPrice = BigDecimal.valueOf(dto.getRefundPrice()).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP);
- // 退款金额(元)
- model.setRefundAmount(String.valueOf(refundPrice));
- // 订单号
- model.setOutTradeNo(String.valueOf(dto.getOrderId()));
- // 支付宝订单id
- model.setTradeNo(dto.getAliOrderId());
- // 退款单号
- model.setOutRequestNo(String.valueOf(dto.getRefundId()));
- request.setBizModel(model);
- request.setNotifyUrl(conf.getCallbackUrl());
- try {
- AlipayTradeRefundResponse response = alipayClient.execute(request);
- String body = response.getBody();
- log.debug("申请退款,json|{}", body);
- return response;
- } catch (Exception e) {
- log.error("申请退款", e);
- }
- return null;
- }
-
- /**
- * 查询退款
- */
- @Override
- public AlipayTradeFastpayRefundQueryResponse refundQuery(AliRefundQueryDto dto) {
- AlipayClient alipayClient = getClient();
- AlipayTradeFastpayRefundQueryRequest request = new AlipayTradeFastpayRefundQueryRequest();
- AlipayTradeFastpayRefundQueryModel model = new AlipayTradeFastpayRefundQueryModel();
- // 退款单号
- model.setOutRequestNo(String.valueOf(dto.getRefundId()));
- request.setBizModel(model);
- request.setNotifyUrl(conf.getCallbackUrl());
- try {
- AlipayTradeFastpayRefundQueryResponse response = alipayClient.execute(request);
- String body = response.getBody();
- log.debug("查询退款,json|{}", body);
- return response;
- } catch (Exception e) {
- log.error("查询退款", e);
- }
- return null;
- }
-
- /**
- * 退款回调
- */
- @Override
- public String refundCallback(Map params) {
- if (ObjectUtil.isEmpty(params)) return "fail";
- try {
- boolean checkSignature = AlipaySignature.rsaCheckV1(params, conf.getAlipayPublicKey(), "UTF-8", "RSA2");
- if (!checkSignature) {
- log.error("支付宝回调校验失败");
- return "fail";
- }
- log.debug("支付宝回调参数:{}", params);
- return "success";
- } catch (Exception e) {
- log.error("退款回调", e);
- return "fail";
- }
- }
-}
diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/ali/MiniAlipayServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/ali/MiniAlipayServiceImpl.java
deleted file mode 100644
index 7b6491e44..000000000
--- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/ali/MiniAlipayServiceImpl.java
+++ /dev/null
@@ -1,411 +0,0 @@
-package com.bsd.pjcloud.hard.service.impl.ali;
-
-import cn.hutool.core.date.DatePattern;
-import cn.hutool.core.date.LocalDateTimeUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.json.JSONArray;
-import cn.hutool.json.JSONObject;
-import cn.hutool.json.JSONUtil;
-import com.alipay.api.AlipayClient;
-import com.alipay.api.AlipayConfig;
-import com.alipay.api.DefaultAlipayClient;
-import com.alipay.api.domain.*;
-import com.alipay.api.request.*;
-import com.alipay.api.response.*;
-import com.bsd.pjcloud.common.core.constant.enums.UserTypeEnum;
-import com.bsd.pjcloud.hard.api.constant.HardThirdMiStatusEnum;
-import com.bsd.pjcloud.hard.api.constant.HardThirdMiTypeEnum;
-import com.bsd.pjcloud.hard.api.entity.HardThirdMiOrderEntity;
-import com.bsd.pjcloud.hard.config.MiniAlipayConf;
-import com.bsd.pjcloud.hard.mapper.HardThirdMiOrderMapper;
-import com.bsd.pjcloud.hard.service.HardThirdMiOrderService;
-import com.bsd.pjcloud.hard.service.MiniAlipayService;
-import lombok.AllArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.time.LocalDateTime;
-import java.util.List;
-
-/**
- * 支付宝小程序支付
- */
-@Service
-@AllArgsConstructor
-@Slf4j
-public class MiniAlipayServiceImpl implements MiniAlipayService {
-
- private final HardThirdMiOrderMapper hardThirdMiOrderMapper;
-
- private final MiniAlipayConf conf;
-
- static private AlipayClient client = null;
-
- private void initClient() {
- AlipayConfig alipayConfig = new AlipayConfig();
- alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
- alipayConfig.setAppId(conf.getAppId());
- alipayConfig.setPrivateKey(conf.getPrivateKey());
- alipayConfig.setFormat("json");
- alipayConfig.setCharset("UTF-8");
- alipayConfig.setAlipayPublicKey(conf.getAlipayPublicKey());
- alipayConfig.setSignType("RSA2");
- try {
- MiniAlipayServiceImpl.client = new DefaultAlipayClient(alipayConfig);
- } catch (Exception e) {
- log.error("初始化支付宝客户端异常", e);
- }
- }
-
- private AlipayClient getClient() {
- if (ObjectUtil.isEmpty(MiniAlipayServiceImpl.client)) initClient();
- return MiniAlipayServiceImpl.client;
- }
-
- /**
- * 获取智能柜小程序二维码
- */
- @Override
- public String getDoorMiniQrCode(String hardDoorId, String cabinetNo) {
- AlipayOpenAppQrcodeCreateRequest request = new AlipayOpenAppQrcodeCreateRequest();
- AlipayOpenAppQrcodeCreateModel model = new AlipayOpenAppQrcodeCreateModel();
- model.setUrlParam("pages/tabbar/login");
- model.setQueryParam(String.format("action=scan&path=%s&hardDoorId=%s&cabinetNo=%s", "pages/tabbar/login", hardDoorId, cabinetNo));
- model.setDescribe("支付宝智能柜二维码");
- request.setBizModel(model);
- try {
- AlipayOpenAppQrcodeCreateResponse response = getClient().execute(request);
- if (!response.isSuccess()) {
- log.error("|获取小程序二维码|失败,json|{}", response.getBody());
- return null;
- }
- return response.getQrCodeUrlCircleBlue();
- } catch (Exception e) {
- e.printStackTrace();
- log.error("|获取小程序二维码|异常", e);
- return null;
- }
- }
-
- /**
- * 免密授权
- */
- @Override
- public String miDynamicSign(Long userId, UserTypeEnum userType, Long authId) {
- HardThirdMiOrderEntity thirdOrder = new HardThirdMiOrderEntity();
- thirdOrder.setBizType(HardThirdMiTypeEnum.MI_ALIPAY.getType());
- thirdOrder.setAuthId(authId);
- thirdOrder.setUserId(userId);
- thirdOrder.setUserType(userType.getStatus());
- thirdOrder.setCreateOrderTime(LocalDateTime.now());
- thirdOrder.setOrderStatus(HardThirdMiStatusEnum.CREATE_ORDER.getType());
-
- ZhimaCreditPayafteruseCreditagreementSignRequest request = new ZhimaCreditPayafteruseCreditagreementSignRequest();
- ZhimaCreditPayafteruseCreditagreementSignModel model = new ZhimaCreditPayafteruseCreditagreementSignModel();
- // 设置芝麻信用服务ID
- model.setZmServiceId(conf.getZmServiceId());
- // 设置芝麻外部类目
- model.setCategoryId("credit_pay_after_use");
- model.setOutAgreementNo(String.valueOf(authId));
- request.setBizModel(model);
- try {
- ZhimaCreditPayafteruseCreditagreementSignResponse response = getClient().sdkExecute(request);
- if (!response.isSuccess()) {
- log.error("|免密授权|失败,json|{}", response.getBody());
- return null;
- }
- return response.getBody();
- } catch (Exception e) {
- e.printStackTrace();
- log.error("|免密授权|异常", e);
- return null;
- } finally {
- hardThirdMiOrderMapper.insert(thirdOrder);
- }
- }
-
- /**
- * 查询面密授权
- */
- @Override
- public ZhimaCreditPayafteruseCreditagreementQueryResponse miDynamicQueySign(Long authId) {
- HardThirdMiOrderEntity thirdMiOrder = hardThirdMiOrderMapper.getByAuthId(authId);
- if (ObjectUtil.isEmpty(thirdMiOrder)) {
- log.error("|查询面密授权|订单不存在,authId|{}", authId);
- return null;
- }
- HardThirdMiOrderEntity updateObj = new HardThirdMiOrderEntity();
- updateObj.setId(thirdMiOrder.getId());
-
- ZhimaCreditPayafteruseCreditagreementQueryRequest request = new ZhimaCreditPayafteruseCreditagreementQueryRequest();
- ZhimaCreditPayafteruseCreditagreementQueryModel model = new ZhimaCreditPayafteruseCreditagreementQueryModel();
- model.setOutAgreementNo(String.valueOf(authId));
- request.setBizModel(model);
- try {
- ZhimaCreditPayafteruseCreditagreementQueryResponse response = getClient().execute(request);
- if (!response.isSuccess()) {
- log.error("|查询面密授权|失败,json|{}", response.getBody());
- return null;
- }
- updateObj.setOrgSignJson(JSONUtil.toJsonStr(response));
- return response;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("|查询面密授权|异常", e);
- return null;
- } finally {
- if (ObjectUtil.isNotEmpty(updateObj.getOrgSignJson())) {
- hardThirdMiOrderMapper.updateById(updateObj);
- }
- }
- }
-
- /**
- * 免密服务下单
- */
- @Override
- public ZhimaCreditPayafteruseCreditbizorderOrderResponse miDynamicOrder(Long authId, Long orderId, Long flowId) {
- HardThirdMiOrderEntity thirdMiOrder = hardThirdMiOrderMapper.getByAuthId(authId);
- if (ObjectUtil.isEmpty(thirdMiOrder)) {
- log.error("|免密服务下单|订单不存在,authId|{}", authId);
- return null;
- }
- ZhimaCreditPayafteruseCreditagreementQueryResponse signObj = JSONUtil.toBean(thirdMiOrder.getOrgSignJson(), ZhimaCreditPayafteruseCreditagreementQueryResponse.class);
- if (ObjectUtil.isEmpty(signObj)) {
- log.error("|免密服务下单|signObj为空,授权错误,authId|{}", authId);
- return null;
- }
- HardThirdMiOrderEntity updateObj = new HardThirdMiOrderEntity();
- updateObj.setId(thirdMiOrder.getId());
- updateObj.setOrderId(orderId);
- updateObj.setFlowId(flowId);
- updateObj.setOutOrderNo(String.valueOf(orderId));
-
- ZhimaCreditPayafteruseCreditbizorderOrderRequest request = new ZhimaCreditPayafteruseCreditbizorderOrderRequest();
- ZhimaCreditPayafteruseCreditbizorderOrderModel model = new ZhimaCreditPayafteruseCreditbizorderOrderModel();
- // 设置商户外部订单号
- model.setOutOrderNo(String.valueOf(orderId));
- // 设置芝麻开通协议号
- model.setCreditAgreementId(signObj.getCreditAgreementId());
- // 设置芝麻外部类目
- model.setCategoryId("credit_pay_after_use");
- // 设置芝麻产品代码
- model.setProductCode("CREDIT_PAY_AFTER_USE");
- // 设置订单标题
- model.setSubject("浦江智能柜芝麻先享");
- // 设置订单描述
- model.setBody("浦江智能柜芝麻先享");
- request.setBizModel(model);
- try {
- ZhimaCreditPayafteruseCreditbizorderOrderResponse response = getClient().execute(request);
- if (!response.isSuccess()) {
- log.error("|免密服务下单|失败,json|{}", response.getBody());
- return null;
- }
- updateObj.setThirdOrderNo(response.getCreditBizOrderId());
- updateObj.setOrgOrderJson(JSONUtil.toJsonStr(response));
-
- // 一般是芝麻信用评估不通过、未开通等
- if (List.of("ZHIMA_CHECK_NO_PASS", "ZHIMA_EVALUATE_NO_PASS", "CREDIT_AGREEMENT_INVALID").contains(response.getCode())) {
- miDynamicCreate(authId, orderId);
- }
-
- response.getCode();
- return response;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("|免密服务下单|异常", e);
- return null;
- } finally {
- hardThirdMiOrderMapper.updateById(updateObj);
- }
- }
-
- /**
- * 创建免密服务订单(风险评估)
- */
- private ZhimaCreditPayafteruseCreditbizorderCreateResponse miDynamicCreate(Long authId, Long orderId) {
- ZhimaCreditPayafteruseCreditbizorderCreateRequest request = new ZhimaCreditPayafteruseCreditbizorderCreateRequest();
- ZhimaCreditPayafteruseCreditbizorderCreateModel model = new ZhimaCreditPayafteruseCreditbizorderCreateModel();
- // 设置商户外部订单号
- model.setOutOrderNo(String.valueOf(orderId));
- model.setZmServiceId(conf.getZmServiceId());
- model.setAmountType("RISK_AMOUNT");
- model.setCategoryId("credit_pay_after_use");
- model.setSubject("浦江智能柜芝麻先享");
- model.setBody("浦江智能柜芝麻先享");
- request.setBizModel(model);
- try {
- ZhimaCreditPayafteruseCreditbizorderCreateResponse response = getClient().sdkExecute(request);
- if (!response.isSuccess()) {
- log.error("|创建免密服务订单(风险评估)|失败,json|{}", response.getBody());
- return null;
- }
- return response;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("|创建免密服务订单(风险评估)|异常", e);
- return null;
- }
- }
-
- /**
- * 创建支付宝免密订单
- */
- @Override
- public AlipayTradeCreateResponse miCreateOrder(String openId, Long authId, Long userId, UserTypeEnum userType) {
- HardThirdMiOrderEntity thirdOrder = new HardThirdMiOrderEntity();
- thirdOrder.setBizType(HardThirdMiTypeEnum.MI_ALIPAY.getType());
- thirdOrder.setAuthId(authId);
- thirdOrder.setUserId(userId);
- thirdOrder.setUserType(userType.getStatus());
- thirdOrder.setCreateOrderTime(LocalDateTime.now());
- thirdOrder.setOrderStatus(HardThirdMiStatusEnum.CREATE_ORDER.getType());
- AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();
- try {
- JSONObject bizContent = new JSONObject();
- // 设置商户订单号
- bizContent.putOnce("out_trade_no", String.valueOf(authId));
- // 设置订单标题
- bizContent.putOnce("subject", "浦江智能柜芝麻先享");
- // 设置订单附加信息
- bizContent.putOnce("body", "浦江智能柜芝麻先享");
- // 设置订单金额
- bizContent.putOnce("total_amount", 0.01);
- // 固定
- bizContent.putOnce("product_code", "JSAPI_PAY");
- // 用户登录id
- bizContent.putOnce("buyer_open_id", openId);
- bizContent.putOnce("op_buyer_open_id", openId);
- bizContent.putOnce("op_app_id", conf.getAppId());
- // 订单超时时间(1天)
- bizContent.putOnce("time_expire", LocalDateTimeUtil.format(LocalDateTime.now().plusDays(1), DatePattern.NORM_DATETIME_FORMATTER));
- JSONObject extraParam = new JSONObject();
- extraParam.putOnce("zmServiceId", conf.getZmServiceId());
- extraParam.putOnce("creditTradeScene", "CREDIT_PAY");
- bizContent.putOnce("extend_params", extraParam);
- request.setBizContent(bizContent.toString());
- AlipayTradeCreateResponse response = getClient().execute(request);
- if (!response.isSuccess()) {
- log.error("|创建支付宝订单|失败,json|{}", response.getBody());
- return null;
- }
- log.info("|创建支付宝订单|成功,json|{}", response.getBody());
- thirdOrder.setOutOrderNo(String.valueOf(authId));
- thirdOrder.setThirdOrderNo(response.getTradeNo());
- return response;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("|创建支付宝订单|意外的错误", e);
- return null;
- } finally {
- hardThirdMiOrderMapper.insert(thirdOrder);
- }
- }
-
- /**
- * 查询支付宝免密订单
- */
- @Override
- public ZhimaCreditPayafteruseCreditbizorderQueryResponse miQueryOrder(String alipayOrderNo, Long authId) {
- ZhimaCreditPayafteruseCreditbizorderQueryRequest request = new ZhimaCreditPayafteruseCreditbizorderQueryRequest();
- ZhimaCreditPayafteruseCreditbizorderQueryModel model = new ZhimaCreditPayafteruseCreditbizorderQueryModel();
- if (ObjectUtil.isNotEmpty(alipayOrderNo)) {
- model.setCreditBizOrderId(alipayOrderNo);
- }
- if (ObjectUtil.isNotEmpty(authId)) {
- model.setOutOrderNo(String.valueOf(authId));
- }
- request.setBizModel(model);
- try {
- ZhimaCreditPayafteruseCreditbizorderQueryResponse response = getClient().execute(request);
- if (!response.isSuccess()) {
- log.error("|查询支付宝免密订单|失败,json|{}", response.getBody());
- return null;
- }
- log.info("|查询支付宝免密订单|成功,json|{}", response.getBody());
- return response;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("|查询支付宝免密订单|意外的错误", e);
- }
- return null;
- }
-
- /**
- * 支付宝免密扣款
- */
- @Override
- public boolean miPay(HardThirdMiOrderEntity thirdOrder, int totalPrice) {
- HardThirdMiOrderEntity updateObj = new HardThirdMiOrderEntity();
- updateObj.setId(thirdOrder.getId());
- updateObj.setPayOrderTime(LocalDateTime.now());
- updateObj.setOrderPrice(totalPrice);
- updateObj.setPayPrice(totalPrice);
-
- AlipayTradeOrderPayRequest request = new AlipayTradeOrderPayRequest();
- AlipayTradeOrderPayModel model = new AlipayTradeOrderPayModel();
- model.setOutRequestNo(String.valueOf(thirdOrder.getOrderId()));
- model.setTradeNo(thirdOrder.getOutOrderNo());
- model.setFulfillmentAmount(new BigDecimal(totalPrice).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP).toString());
- model.setOrderPayMode("CREDIT_FULFILLMENT_ZM");
- try {
- request.setBizModel(model);
- AlipayTradeOrderPayResponse response = getClient().execute(request);
- if (!response.isSuccess()) {
- log.error("|支付宝免密扣款|失败,json|{}", response.getBody());
- return false;
- }
- log.info("|支付宝免密扣款|成功,json|{}", response.getBody());
- if (ObjectUtil.equals(response.getCode(), "10000")) {
- updateObj.setOrderStatus(HardThirdMiStatusEnum.PAY.getType());
- return true;
- }
- return false;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("|支付宝免密扣款|异常", e);
- return false;
- } finally {
- if (ObjectUtil.isNotEmpty(updateObj.getOrderStatus())) {
- hardThirdMiOrderMapper.updateById(updateObj);
- }
- }
- }
-
- /**
- * 支付宝免密(取消/退款)
- */
- @Override
- public AlipayTradeRefundResponse miCancelOrRefund(String authId, String refundId, int price) {
- AlipayTradeRefundRequest request = new AlipayTradeRefundRequest();
- JSONObject bizContent = new JSONObject();
-
- // 订单总金额
- bizContent.putOnce("refund_amount", new BigDecimal(price).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP));
- // 商家订单唯一号
- bizContent.putOnce("out_trade_no", authId);
- bizContent.putOnce("out_request_no", refundId);
- //扩展参数
- JSONObject extendParam = new JSONObject();
- extendParam.putOnce("is_fulfilled", "true");
- bizContent.putOnce("extend_params", extendParam);
- try {
- request.setBizContent(bizContent.toString());
- AlipayTradeRefundResponse response = getClient().execute(request);
- if (!response.isSuccess()) {
- log.error("|支付宝免密(取消/退款)|失败,json|{}", response.getBody());
- return null;
- }
- log.info("|支付宝免密(取消/退款)|成功,json|{}", response.getBody());
- return response;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("|支付宝免密(取消/退款)|异常", e);
- return null;
- }
- }
-
-}
diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorCabinetServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorCabinetServiceImpl.java
index d907e74bc..f5c483793 100644
--- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorCabinetServiceImpl.java
+++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/manager/HardDoorCabinetServiceImpl.java
@@ -16,7 +16,6 @@ import com.bsd.pjcloud.hard.api.vo.manager.HardDoorCabinetCodeVo;
import com.bsd.pjcloud.hard.api.vo.manager.HardDoorCabinetVo;
import com.bsd.pjcloud.hard.mapper.manager.HardDoorCabinetMapper;
import com.bsd.pjcloud.hard.service.HardDoorCabinetService;
-import com.bsd.pjcloud.hard.service.MiniAlipayService;
import com.bsd.pjcloud.thirdparty.vo.door.DoorStatusVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -41,7 +40,6 @@ public class HardDoorCabinetServiceImpl extends ServiceImpl micropayR = thirdAppPlusPayService.remoterMicropay(remoterDto);
+ if (!micropayR.isOk()) {
+ throw new RuntimeException("支付失败:" + micropayR.getMsg());
+ }
+ if (ObjectUtil.isEmpty(micropayR.getData())) {
+ throw new RuntimeException("支付失败,未查询到订单号");
+ }
+ getSelf().orderSuccess(orderObj, Boolean.TRUE);
+ }
return orderObj.getId();
}
@@ -1254,7 +1265,8 @@ public class HardOrderServiceImpl extends ServiceImpl params) {
- String apiKey = wechatPay.getApiV2Key();
- Map filtered = new TreeMap<>();
- for (Map.Entry entry : params.entrySet()) {
- if (ObjectUtil.isEmpty(entry.getValue()) || ObjectUtil.equals("sign", entry.getKey())) {
- continue;
- }
- filtered.put(entry.getKey(), String.valueOf(entry.getValue()));
- }
- StringBuilder sb = new StringBuilder();
- for (Map.Entry entry : filtered.entrySet()) {
- sb.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
- }
- sb.append("key=").append(apiKey);
- try {
- String sign = DigestUtils.md5Hex(String.valueOf(sb));
- return sign.toUpperCase();
- } catch (Exception e) {
- log.error("微信支付签名生成失败", e);
- }
- return "";
- }
-
- private WechantPayConstant.Api initApi(WechantPayConstant.Api api) {
- api.setBaseUrl(wechatPay.getBaseUrl());
- return api;
- }
-
- private String getNonceStr() {
- int length = 32;
- return RandomUtil.randomString(length);
- }
-
- private SSLSocketFactory createSSLSocketFactory() throws Exception {
- KeyStore keyStore = KeyStore.getInstance("PKCS12");
- FileInputStream certStream = new FileInputStream(wechatPay.getMerchantSerialPath());
- keyStore.load(certStream, wechatPay.getMerchantId().toCharArray());
- certStream.close();
- // 创建KeyManagerFactory
- KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
- keyManagerFactory.init(keyStore, wechatPay.getMerchantId().toCharArray());
- // 创建TrustManagerFactory(信任所有证书)
- TrustManager[] trustManagers = new TrustManager[]{
- new X509TrustManager() {
- public java.security.cert.X509Certificate[] getAcceptedIssuers() {
- return null;
- }
-
- public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
- }
-
- public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
- }
- }
- };
- // 创建SSLContext
- SSLContext sslContext = SSLContext.getInstance("TLS");
- sslContext.init(keyManagerFactory.getKeyManagers(), trustManagers, new SecureRandom());
- return sslContext.getSocketFactory();
- }
-
- /**
- * 解密回调信息解密
- */
- private WechantRefunCallbackVo decrypt(String xml) {
- try {
- WechantRefunCallbackSoureVo vo = JSONUtil.toBean(JSONUtil.toJsonStr(XmlUtil.xmlToMap(xml)), WechantRefunCallbackSoureVo.class);
- String reqInfo = vo.getReq_info();
- // 1 对加密串A做base64解码,得到加密串B
- byte[] encryptedBytes = Base64.decode(reqInfo);
- // 2 对商户key做md5,得到32位小写key
- String md5Key = DigestUtils.md5Hex(wechatPay.getApiV2Key()).toLowerCase();
- // 3. AES-256-ECB 解密
- SecretKeySpec secretKey = new SecretKeySpec(md5Key.getBytes(StandardCharsets.UTF_8), "AES");
- Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
- cipher.init(Cipher.DECRYPT_MODE, secretKey);
- byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
- String json = new String(decryptedBytes, StandardCharsets.UTF_8);
- WechantRefunCallbackVo entity = JSONUtil.toBean(JSONUtil.toJsonStr(XmlUtil.xmlToMap(json)), WechantRefunCallbackVo.class);
- log.debug("解密回调信息,json|{}", JSONUtil.toJsonStr(entity));
- return entity;
- } catch (Exception e) {
- e.printStackTrace();
- log.error("解密回调信息解密异常", e);
- return null;
- }
- }
-
- /**
- * 付款码支付
- */
- @Override
- public WechatMicropayVo micropay(WechatMicropayDto dto) {
- try {
- Map params = new HashMap<>();
- // 公众账号ID
- params.put("appid", wechatPay.getAppId());
- // 商户号
- params.put("mch_id", wechatPay.getMerchantId());
- // 设备号-终端设备号(商户自定义,如门店编号)
- params.put("device_info", dto.getMerId());
- // 随机字符串
- params.put("nonce_str", getNonceStr());
- // 签名
- params.put("sign", "");
- // 签名类型
- params.put("sign_type", "MD5");
- // 商品描述
- params.put("body", "小铺故事超市-超市");
- // 商户单号
- params.put("out_trade_no", dto.getOrderId());
- // 订单金额(分)
- params.put("total_fee", dto.getPrice());
- // 终端IP
- params.put("spbill_create_ip", wechatPay.getSpbillCreateIp());
- // 付款码
- params.put("auth_code", dto.getWechatQrCode());
- // 生成签名
- params.put("sign", generateSign(params));
- WechantPayConstant.Api api = initApi(WechantPayConstant.APY);
- String res = api.getHttpRequest().body(XmlUtil.mapToXmlStr(params)).execute().body();
- log.debug("付款码支付,json,xml|{}", res);
- if (ObjectUtil.isEmpty(res)) {
- log.error("付款码支付,res为空");
- return null;
- }
- WechatMicropayVo vo = JSONUtil.toBean(JSONUtil.toJsonStr(XmlUtil.xmlToMap(res)), WechatMicropayVo.class);
- log.debug("付款码支付,json,res|{}", JSONUtil.toJsonStr(vo));
- if (!vo.isHttpSucess()) {
- return null;
- }
- return vo;
- } catch (Exception e) {
- log.error("付款码支付,异常", e);
- return null;
- }
- }
-
- /**
- * 查询订单
- */
- @Override
- public WechatQueryVo query(WechatQueryDto dto) {
- try {
- Map params = new HashMap<>();
- // 公众账号ID
- params.put("appid", wechatPay.getAppId());
- // 商户号
- params.put("mch_id", wechatPay.getMerchantId());
- // 微信订单号
- params.put("transaction_id", dto.getWechantOrderId());
- // 商户订单号
- params.put("out_trade_no", dto.getOrderId());
- // 随机字符串
- params.put("nonce_str", getNonceStr());
- // 签名
- params.put("sign", "");
- // 签名类型
- params.put("sign_type", "MD5");
- // 生成签名
- params.put("sign", generateSign(params));
- WechantPayConstant.Api api = initApi(WechantPayConstant.QUERY);
- String res = api.getHttpRequest().body(XmlUtil.mapToXmlStr(params)).execute().body();
- log.debug("查询订单,json,xml|{}", res);
- if (ObjectUtil.isEmpty(res)) {
- log.error("查询订单,res为空");
- return null;
- }
- WechatQueryVo vo = JSONUtil.toBean(JSONUtil.toJsonStr(XmlUtil.xmlToMap(res)), WechatQueryVo.class);
- log.debug("查询订单,json,res|{}", JSONUtil.toJsonStr(vo));
- if (!vo.isHttpSucess()) {
- return null;
- }
- return vo;
- } catch (Exception e) {
- log.error("查询订单,异常", e);
- return null;
- }
- }
-
- /**
- * 撤销订单
- */
- @Override
- public WechantReverseVo reverse(WechantReverseDto dto) {
- try {
- Map params = new HashMap<>();
- // 公众账号ID
- params.put("appid", wechatPay.getAppId());
- // 商户号
- params.put("mch_id", wechatPay.getMerchantId());
- // 微信订单号
- params.put("transaction_id", dto.getWechantOrderId());
- // 商户订单号
- params.put("out_trade_no", dto.getOrderId());
- // 随机字符串
- params.put("nonce_str", getNonceStr());
- // 签名
- params.put("sign", "");
- // 签名类型
- params.put("sign_type", "MD5");
- // 生成签名
- params.put("sign", generateSign(params));
- WechantPayConstant.Api api = initApi(WechantPayConstant.REVERSE);
- api.setSslSocketFactory(createSSLSocketFactory());
- String res = api.getHttpRequest().body(XmlUtil.mapToXmlStr(params)).execute().body();
- log.debug("撤销订单,json,xml|{}", res);
- if (ObjectUtil.isEmpty(res)) {
- log.error("撤销订单,res为空");
- return null;
- }
- WechantReverseVo vo = JSONUtil.toBean(JSONUtil.toJsonStr(XmlUtil.xmlToMap(res)), WechantReverseVo.class);
- log.debug("撤销订单,json,res|{}", JSONUtil.toJsonStr(vo));
- if (!vo.isHttpSucess()) {
- return null;
- }
- return vo;
- } catch (Exception e) {
- log.error("撤销订单,异常", e);
- return null;
- }
- }
-
- /**
- * 申请退款
- */
- @Override
- public WechatRefundVo refund(WechatRefundDto dto) {
- try {
- Map params = new HashMap<>();
- // 公众账号ID
- params.put("appid", wechatPay.getAppId());
- // 商户号
- params.put("mch_id", wechatPay.getMerchantId());
- // 随机字符串
- params.put("nonce_str", getNonceStr());
- // 签名
- params.put("sign", "");
- // 签名类型
- params.put("sign_type", "MD5");
- // 微信支付订单号
- params.put("transaction_id", dto.getWechantOrderId());
- // 商户订单号
- params.put("out_trade_no", dto.getOrderId());
- // 商户退款单号
- params.put("out_refund_no", dto.getRefundId());
- // 订单金额
- params.put("total_fee", dto.getOrderPrice());
- // 退款金额
- params.put("refund_fee", dto.getRefundPrice());
- // 退款结果通知url
- params.put("notify_url", wechatPay.getRefundCallbackUrl());
- // 生成签名
- params.put("sign", generateSign(params));
- WechantPayConstant.Api api = initApi(WechantPayConstant.REFUND);
- api.setSslSocketFactory(createSSLSocketFactory());
- String res = api.getHttpRequest().body(XmlUtil.mapToXmlStr(params)).execute().body();
- log.debug("申请退款,json,xml|{}", res);
- if (ObjectUtil.isEmpty(res)) {
- log.error("申请退款,res为空");
- return null;
- }
- WechatRefundVo vo = JSONUtil.toBean(JSONUtil.toJsonStr(XmlUtil.xmlToMap(res)), WechatRefundVo.class);
- log.debug("申请退款,json,res|{}", JSONUtil.toJsonStr(vo));
- if (!vo.isHttpSucess()) {
- return null;
- }
- return vo;
- } catch (Exception e) {
- log.error("申请退款,异常", e);
- return null;
- }
- }
-
- /**
- * 查询退款
- */
- @Override
- public WechatRefundQueryVo refundQuery(WechatRefundQueryDto dto) {
- try {
- Map params = new HashMap<>();
- // 公众账号ID
- params.put("appid", wechatPay.getAppId());
- // 商户号
- params.put("mch_id", wechatPay.getMerchantId());
- // 随机字符串
- params.put("nonce_str", getNonceStr());
- // 签名
- params.put("sign", "");
- // 签名类型
- params.put("sign_type", "MD5");
- // 签名类型
- params.put("out_refund_no", dto.getRefundId());
- // 生成签名
- params.put("sign", generateSign(params));
- WechantPayConstant.Api api = initApi(WechantPayConstant.REFUND_QUERY);
- String res = api.getHttpRequest().body(XmlUtil.mapToXmlStr(params)).execute().body();
- log.debug("查询退款,json,xml|{}", res);
- if (ObjectUtil.isEmpty(res)) {
- log.error("查询退款,res为空");
- return null;
- }
- WechatRefundQueryVo vo = JSONUtil.toBean(JSONUtil.toJsonStr(XmlUtil.xmlToMap(res)), WechatRefundQueryVo.class);
- log.debug("查询退款,json,res|{}", JSONUtil.toJsonStr(vo));
- if (!vo.isHttpSucess()) {
- return null;
- }
- return vo;
- } catch (Exception e) {
- log.error("查询退款,异常", e);
- return null;
- }
- }
-
- /**
- * 退款回调
- */
- @Override
- public String refundCallback(HttpEntity httpEntity, Map headers) {
- String body = httpEntity.getBody();
- WechantRefunCallbackVo decrypt = decrypt(body);
- if (ObjectUtil.isEmpty(decrypt)) {
- // 告诉微信错误
- return WechantRefunCallbackVo.wechantError();
- }
- boolean isSuccess = hardAfterSaleService.wechatRefundCallback(decrypt);
- return isSuccess ? WechantRefunCallbackVo.wechantSuccess() : WechantRefunCallbackVo.wechantError();
- }
-}
diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/xfj/HardXfjServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/xfj/HardXfjServiceImpl.java
index 35e21a686..47ab58106 100644
--- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/xfj/HardXfjServiceImpl.java
+++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/xfj/HardXfjServiceImpl.java
@@ -24,6 +24,7 @@ import com.bsd.pjcloud.hard.api.vo.order.HardOrderVo;
import com.bsd.pjcloud.hard.api.vo.xfj.*;
import com.bsd.pjcloud.hard.mapper.order.HardOrderMapper;
import com.bsd.pjcloud.hard.service.*;
+import com.bsd.pjcloud.thirdparty.constant.miniplatform.AppPlusPlatformTypeEnum;
import com.bsd.pjcloud.wallet.api.constant.WalletTypeEnum;
import com.bsd.pjcloud.wallet.api.dto.WalletRemoteOpenCardListDto;
import com.bsd.pjcloud.wallet.api.entity.WalletActiveEntity;
@@ -46,6 +47,7 @@ import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.regex.Pattern;
import java.util.stream.Collectors;
@Validated
@@ -546,22 +548,41 @@ public class HardXfjServiceImpl implements HardXfjService {
}
// 扣费
if (ObjectUtil.equals(dto.getMode(), "0")) {
- // 传过来的是`短码`需要解析一下
- WalletCodeUseEntity data = remoteCodeUseService.getInfoByShortCode(dto.getQR()).getData();
- if (ObjectUtil.isEmpty(data)) {
- result.setStatus(XfjBaseVo.STATUS_FAIL);
- result.setMsg("二维码错误");
- return result;
+ // `QR`有三种可能性1、微信、支付宝、短码
+ AppPlusPlatformTypeEnum platformType = judgeQrCode(dto.getQR());
+ if (ObjectUtil.isEmpty(platformType)) {
+ throw new RuntimeException("二维码解析错误");
}
+ Long userId = null;
+ WalletTypeEnum walletType = null;
+ HardXfjTypeEnum xfjPayType = HardXfjTypeEnum.QRCODE_PAY;
+ if (ObjectUtil.equals(platformType, AppPlusPlatformTypeEnum.ZAX_APP_WALLET)) {
+ walletType = WalletTypeEnum.EAT;
+ // 传过来的是`短码`需要解析一下
+ WalletCodeUseEntity data = remoteCodeUseService.getInfoByShortCode(dto.getQR()).getData();
+ if (ObjectUtil.isEmpty(data)) {
+ result.setStatus(XfjBaseVo.STATUS_FAIL);
+ result.setMsg("二维码错误");
+ return result;
+ }
+ userId = data.getUserId();
+ } else if (ObjectUtil.equals(platformType, AppPlusPlatformTypeEnum.WECHAT)) {
+ xfjPayType = HardXfjTypeEnum.WECHAT_QRCODE_PAY;
+ } else if (ObjectUtil.equals(platformType, AppPlusPlatformTypeEnum.ALI_PAY)) {
+ xfjPayType = HardXfjTypeEnum.ALI_QRCODE_PAY;
+ }
+
// 解析金额
int price = BigDecimal.valueOf(Double.valueOf(dto.getAmount())).multiply(BigDecimal.valueOf(100)).setScale(2, RoundingMode.HALF_UP).intValue();
HardXfjFastCreateOrderDto payDto = new HardXfjFastCreateOrderDto();
- payDto.setUserId(data.getUserId());
+ payDto.setUserId(userId);
payDto.setHardId(entity.getId());
payDto.setPrice(price);
- payDto.setWalletType(WalletTypeEnum.EAT);
- payDto.setXfjPayType(HardXfjTypeEnum.QRCODE_PAY);
+ payDto.setWalletType(walletType);
+ payDto.setXfjPayType(xfjPayType);
+ payDto.setPlatformType(platformType);
+ payDto.setDevicePayCode(dto.getQR());
Long orderId = hardOrderService.xfjFastCreateOrder(payDto);
result.setQrorder(String.valueOf(orderId));
return result;
@@ -792,4 +813,24 @@ public class HardXfjServiceImpl implements HardXfjService {
return String.format("%s|%s|%s", serialNumber, carNumber, operationType);
}
+ private AppPlusPlatformTypeEnum judgeQrCode(String qrCode) {
+ String qrCodePrefix = qrCode.substring(0, 2);
+ int qrCodeLength = qrCode.length();
+
+ // 支付宝`qrCode`18位纯数字,前缀以"25"到"29"或者 "30"开头
+ if (qrCodeLength == 18 && Pattern.compile("^(2[5-9]|30)").matcher(qrCode).find()) {
+ return AppPlusPlatformTypeEnum.ALI_PAY;
+ }
+ // 微信`qrCode`18位纯数字,前缀以10、11、12、13、14、15开头
+ else if (qrCodeLength == 18 && List.of("10", "11", "12", "13", "14", "15").contains(qrCodePrefix)) {
+ return AppPlusPlatformTypeEnum.WECHAT;
+ }
+ // 钱包二维码
+ else if (qrCodeLength == 32) {
+ return AppPlusPlatformTypeEnum.ZAX_APP_WALLET;
+ } else {
+ return null;
+ }
+ }
+
}
diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/api/feign/RemoterThirdAppPlusPayService.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/api/feign/RemoterThirdAppPlusPayService.java
index 36a622375..07d66d0af 100644
--- a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/api/feign/RemoterThirdAppPlusPayService.java
+++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/api/feign/RemoterThirdAppPlusPayService.java
@@ -3,6 +3,7 @@ package com.bsd.pjcloud.thirdparty.api.feign;
import com.bsd.pjcloud.common.core.constant.ServiceNameConstants;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.feign.annotation.NoToken;
+import com.bsd.pjcloud.thirdparty.dto.appplus.ThirdMicropayDto;
import com.bsd.pjcloud.wallet.api.entity.mch.MchManageEntity;
import com.bsd.pjcloud.wallet.api.vo.MchManageVo;
import org.springframework.cloud.openfeign.FeignClient;
@@ -17,7 +18,14 @@ public interface RemoterThirdAppPlusPayService {
* 编辑商户的回调
*/
@NoToken
- @PostMapping("/remoter/change-mch")
+ @PostMapping("/pay-remoter/change-mch")
R remoterChangeMch(@RequestBody MchManageVo dto);
+ /**
+ * 付款码支付
+ */
+ @NoToken
+ @PostMapping("/pay-remoter/micropay")
+ R remoterMicropay(@RequestBody ThirdMicropayDto dto);
+
}
diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/miniplatform/AppPlusPlatformTypeEnum.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/miniplatform/AppPlusPlatformTypeEnum.java
index a5c3db617..b30077a24 100644
--- a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/miniplatform/AppPlusPlatformTypeEnum.java
+++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/miniplatform/AppPlusPlatformTypeEnum.java
@@ -15,6 +15,7 @@ public enum AppPlusPlatformTypeEnum {
WECHAT("10", "微信"),
ALI_PAY("20", "支付宝"),
+ ZAX_APP_WALLET("30", "资安信-钱包"),
;
private final String type;
diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/pay/ThirdPayOrderBizTypeEnum.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/pay/ThirdPayOrderBizTypeEnum.java
index 3e53514a8..6025722af 100644
--- a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/pay/ThirdPayOrderBizTypeEnum.java
+++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/constant/pay/ThirdPayOrderBizTypeEnum.java
@@ -13,7 +13,8 @@ import java.util.Arrays;
@Getter
public enum ThirdPayOrderBizTypeEnum {
- MINI_APP_WALLET_RECHARGE("10", "小程序用户钱包充值"),
+ MINI_APP_RECHARGE("10", "小程序用户钱包充值"),
+ YXFJ_PAY("20", "云消费机付款码支付"),
;
private final String type;
diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/appplus/ThirdMicropayDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/appplus/ThirdMicropayDto.java
new file mode 100644
index 000000000..b45376a93
--- /dev/null
+++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/appplus/ThirdMicropayDto.java
@@ -0,0 +1,55 @@
+package com.bsd.pjcloud.thirdparty.dto.appplus;
+
+import com.bsd.pjcloud.thirdparty.constant.miniplatform.AppPlusPlatformTypeEnum;
+import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPayOrderBizTypeEnum;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+@Data
+public class ThirdMicropayDto {
+
+ /**
+ * 充值业务类型
+ */
+ @NotNull(message = "充值业务类型不能为空")
+ private ThirdPayOrderBizTypeEnum bizType;
+
+ /**
+ * 充值业务id
+ */
+ @NotEmpty(message = "充值业务id不能为空")
+ private String bizId;
+
+ /**
+ * 平台
+ */
+ @NotNull(message = "小程序平台标识不能为空")
+ private AppPlusPlatformTypeEnum miniPlatformType;
+
+ /**
+ * 金额(分)
+ */
+ private Integer amount;
+
+ /**
+ * 用户id
+ */
+ private Long userId;
+
+ /**
+ * 用户商户id
+ */
+ private Long mchId;
+
+ /**
+ * 用户唯一标识
+ */
+ private String openId;
+
+ /**
+ * 付款码支付code
+ */
+ private String devicePayCode;
+
+}
diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/appplus/ThirdMiniAppPayDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/appplus/ThirdMiniAppPayDto.java
index ac1684daf..b52ae6f75 100644
--- a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/appplus/ThirdMiniAppPayDto.java
+++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/appplus/ThirdMiniAppPayDto.java
@@ -22,7 +22,7 @@ public class ThirdMiniAppPayDto {
private String bizId;
/**
- * 小程序平台
+ * 平台
*/
@NotNull(message = "小程序平台标识不能为空")
private AppPlusPlatformTypeEnum miniPlatformType;
diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/appplus/pay/wechat/ThirdAppPlusPayDto.java b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/appplus/pay/wechat/ThirdAppPlusPayDto.java
index 6384ed81c..ed8becd46 100644
--- a/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/appplus/pay/wechat/ThirdAppPlusPayDto.java
+++ b/pjcloud-thirdparty/pjcloud-thirdparty-api/src/main/java/com/bsd/pjcloud/thirdparty/dto/appplus/pay/wechat/ThirdAppPlusPayDto.java
@@ -46,4 +46,9 @@ public class ThirdAppPlusPayDto {
*/
private Integer amount;
+ /**
+ * 付款码支付code
+ */
+ private String devicePayCode;
+
}
diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/pom.xml b/pjcloud-thirdparty/pjcloud-thirdparty-biz/pom.xml
index f29305865..740c71d4f 100644
--- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/pom.xml
+++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/pom.xml
@@ -43,6 +43,13 @@
1.1.3
+
+
+ com.github.binarywang
+ weixin-java-pay
+ 4.8.0
+
+
com.bsd
pjcloud-upms-api
diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/AppPlusPayConfig.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/AppPlusPayConfig.java
index d1f387da3..e3b725ef0 100644
--- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/AppPlusPayConfig.java
+++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/AppPlusPayConfig.java
@@ -86,8 +86,27 @@ public class AppPlusPayConfig {
*/
private String baseUrl;
+ /**
+ * 微信支付v2配置
+ */
+ private WechatV2Config v2Config;
+
}
+ @Data
+ public static class WechatV2Config {
+
+ /**
+ * 商户密钥
+ */
+ private String mchKey;
+
+ /**
+ * apiclient_cert.p12证书路径
+ */
+ private String keyPath;
+
+ }
@Data
public static class AliPayConfig {
diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/initconfig/WechatV2Configuration.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/initconfig/WechatV2Configuration.java
new file mode 100644
index 000000000..b49de9c6e
--- /dev/null
+++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/initconfig/WechatV2Configuration.java
@@ -0,0 +1,40 @@
+package com.bsd.pjcloud.thirdparty.config.initconfig;
+
+import com.bsd.pjcloud.thirdparty.config.AppPlusPayConfig;
+import com.github.binarywang.wxpay.config.WxPayConfig;
+import com.github.binarywang.wxpay.service.BusinessOperationTransferService;
+import com.github.binarywang.wxpay.service.WxPayService;
+import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Slf4j
+@Configuration
+public class WechatV2Configuration {
+
+ private final AppPlusPayConfig properties;
+
+ @Autowired
+ public WechatV2Configuration(AppPlusPayConfig properties) {
+ this.properties = properties;
+ }
+
+ @Bean
+ public WxPayService wxPayService() {
+ AppPlusPayConfig.WechatConfig wechatConfig = properties.getWechatConfig();
+
+ WxPayConfig wxPayConfig = new WxPayConfig();
+ wxPayConfig.setAppId(wechatConfig.getAppPlatformAppId());
+ wxPayConfig.setMchId(wechatConfig.getMerchantId());
+ wxPayConfig.setMchKey(wechatConfig.getV2Config().getMchKey());
+ wxPayConfig.setKeyPath(wechatConfig.getV2Config().getKeyPath());
+
+ // 初始化服务
+ WxPayService wxPayService = new WxPayServiceImpl();
+ wxPayService.setConfig(wxPayConfig);
+ return wxPayService;
+ }
+
+}
diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/initconfig/WechatConfiguration.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/initconfig/WechatV3Configuration.java
similarity index 89%
rename from pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/initconfig/WechatConfiguration.java
rename to pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/initconfig/WechatV3Configuration.java
index 451110c82..f211de95b 100644
--- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/initconfig/WechatConfiguration.java
+++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/config/initconfig/WechatV3Configuration.java
@@ -7,14 +7,9 @@ import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
import com.bsd.pjcloud.thirdparty.config.AppPlusPayConfig;
import com.wechat.pay.java.core.Config;
import com.wechat.pay.java.core.RSAAutoCertificateConfig;
-import com.wechat.pay.java.core.RSAPublicKeyConfig;
import com.wechat.pay.java.core.notification.NotificationConfig;
import com.wechat.pay.java.core.notification.NotificationParser;
-import com.wechat.pay.java.core.notification.RSAPublicKeyNotificationConfig;
-import com.wechat.pay.java.service.partnerpayments.app.AppService;
import com.wechat.pay.java.service.partnerpayments.app.AppServiceExtension;
-import com.wechat.pay.java.service.partnerpayments.jsapi.JsapiServiceExtension;
-import com.wechat.pay.java.service.partnerpayments.nativepay.NativePayService;
import com.wechat.pay.java.service.profitsharing.ProfitsharingService;
import com.wechat.pay.java.service.refund.RefundService;
import lombok.extern.slf4j.Slf4j;
@@ -24,12 +19,12 @@ import org.springframework.context.annotation.Configuration;
@Slf4j
@Configuration
-public class WechatConfiguration {
+public class WechatV3Configuration {
private final AppPlusPayConfig properties;
@Autowired
- public WechatConfiguration(AppPlusPayConfig properties) {
+ public WechatV3Configuration(AppPlusPayConfig properties) {
this.properties = properties;
}
@@ -72,6 +67,7 @@ public class WechatConfiguration {
return new NotificationParser(config);
}
+ // 退款
@Bean
public RefundService refundService() {
AppPlusPayConfig.WechatConfig wechatConfig = properties.getWechatConfig();
diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/appplus/ThirdAppPlusController.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/appplus/ThirdAppPlusController.java
index b999370f5..ae2c177c1 100644
--- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/appplus/ThirdAppPlusController.java
+++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/controller/appplus/ThirdAppPlusController.java
@@ -5,7 +5,9 @@ import cn.hutool.json.JSONUtil;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.security.annotation.Inner;
import com.bsd.pjcloud.thirdparty.constant.miniplatform.AppPlusPlatformPayType;
+import com.bsd.pjcloud.thirdparty.dto.appplus.ThirdMicropayDto;
import com.bsd.pjcloud.thirdparty.dto.appplus.pay.wechat.ThirdMiniWechatRefundDto;
+import com.bsd.pjcloud.thirdparty.service.ThirdAppPlusService;
import com.bsd.pjcloud.thirdparty.service.ThirdAppPlusWechatFzService;
import com.bsd.pjcloud.thirdparty.vo.appplus.pay.ThirdMiniAppPayVo;
import com.bsd.pjcloud.wallet.api.dto.WalletManageDto;
@@ -28,14 +30,26 @@ import java.util.List;
@RestController
@RequiredArgsConstructor
-@RequestMapping("/remoter")
-@Tag(description = "remoter", name = "小程序支付")
+@RequestMapping("/pay-remoter")
+@Tag(description = "remoter", name = "支付")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class ThirdAppPlusController {
- private final ThirdAppPlusWechatFzService appPlusWechatFzService;
+ private final ThirdAppPlusWechatFzService thirdAppPlusWechatFzService;
+ private final ThirdAppPlusService thirdAppPlusService;
- @Operation(summary = "支付退款")
+ /* ************************************* start 远程调用 start ************************************* */
+
+ @Operation(summary = "付款码支付")
+ @PostMapping("/micropay")
+ @Inner
+ public R remoterMicropay(@RequestBody ThirdMicropayDto dto) {
+ return R.ok(thirdAppPlusService.micropay(dto));
+ }
+
+ /* ************************************* end 远程调用 end ************************************* */
+
+ @Operation(summary = "商户改动")
@PostMapping("/change-mch")
@Inner
public R remoterChangeMch(@RequestBody MchManageVo dto) {
@@ -46,7 +60,7 @@ public class ThirdAppPlusController {
if (ObjectUtil.equals(v.getPlatformType(), AppPlusPlatformPayType.WECHAT.getType())) {
MchPaySettingEntity.WechatPaySetting jsonSetting = JSONUtil.toBean(v.getSettingJson(), MchPaySettingEntity.WechatPaySetting.class);
if (ObjectUtil.isNotEmpty(jsonSetting)) {
- appPlusWechatFzService.addReceiver(jsonSetting.getSubMchid());
+ thirdAppPlusWechatFzService.addReceiver(jsonSetting.getSubMchid());
}
}
}
diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdAppPlusService.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdAppPlusService.java
index bf6e3ffd2..12f5b89d5 100644
--- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdAppPlusService.java
+++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdAppPlusService.java
@@ -1,5 +1,6 @@
package com.bsd.pjcloud.thirdparty.service;
+import com.bsd.pjcloud.thirdparty.dto.appplus.ThirdMicropayDto;
import com.bsd.pjcloud.thirdparty.dto.appplus.ThirdMiniAppGetUniqueDto;
import com.bsd.pjcloud.thirdparty.dto.appplus.ThirdMiniAppOAth2LoginDto;
import com.bsd.pjcloud.thirdparty.dto.appplus.ThirdMiniAppPayDto;
@@ -33,6 +34,11 @@ public interface ThirdAppPlusService {
*/
ThirdMiniAppPayVo miniPay(Long userId, ThirdMiniAppPayDto dto);
+ /**
+ * 付款码支付
+ */
+ String micropay(ThirdMicropayDto dto );
+
/**
* 小程序退款
*/
diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdAppPlusWechatMicropayService.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdAppPlusWechatMicropayService.java
new file mode 100644
index 000000000..499e18a01
--- /dev/null
+++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/ThirdAppPlusWechatMicropayService.java
@@ -0,0 +1,24 @@
+package com.bsd.pjcloud.thirdparty.service;
+
+
+import com.bsd.pjcloud.thirdparty.dto.appplus.pay.wechat.ThirdAppPlusPayDto;
+import com.bsd.pjcloud.thirdparty.entity.pay.ThirdPayOrderEntity;
+import com.bsd.pjcloud.wallet.api.vo.mch.MchPaySettingVo;
+import com.github.binarywang.wxpay.bean.result.WxPayMicropayResult;
+
+/**
+ * 微信付款码支付(只支持v2,所以单独写一个服务)
+ */
+public interface ThirdAppPlusWechatMicropayService {
+
+ /**
+ * 付款码支付
+ */
+ WxPayMicropayResult micropay(ThirdAppPlusPayDto dto, MchPaySettingVo setting);
+
+ /**
+ * 撤销订单
+ */
+ Object reverse(ThirdPayOrderEntity payOrder);
+
+}
diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/appplus/ThirdAppPlusServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/appplus/ThirdAppPlusServiceImpl.java
index 9d275485b..5404800e1 100644
--- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/appplus/ThirdAppPlusServiceImpl.java
+++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/appplus/ThirdAppPlusServiceImpl.java
@@ -4,7 +4,6 @@ import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil;
-import cn.hutool.core.util.XmlUtil;
import cn.hutool.json.JSONUtil;
import com.alipay.api.internal.util.AlipaySignature;
import com.alipay.api.response.AlipayTradeQueryResponse;
@@ -16,7 +15,6 @@ import com.bsd.pjcloud.app.api.constant.AppUserTypeEnum;
import com.bsd.pjcloud.app.api.dto.AppAdminSyncDto;
import com.bsd.pjcloud.app.api.dto.AppUserInfo;
import com.bsd.pjcloud.app.api.feign.RemoteAppUserService;
-import com.bsd.pjcloud.common.core.constant.enums.MerchantTypeEnum;
import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum;
import com.bsd.pjcloud.thirdparty.config.AppPlusPayConfig;
import com.bsd.pjcloud.thirdparty.constant.miniplatform.AppPlusPlatformLoginErrorEnum;
@@ -24,6 +22,7 @@ import com.bsd.pjcloud.thirdparty.constant.miniplatform.AppPlusPlatformPayType;
import com.bsd.pjcloud.thirdparty.constant.miniplatform.AppPlusPlatformTypeEnum;
import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPayOrderBizTypeEnum;
import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPayOrderStatusEnum;
+import com.bsd.pjcloud.thirdparty.dto.appplus.ThirdMicropayDto;
import com.bsd.pjcloud.thirdparty.dto.appplus.ThirdMiniAppGetUniqueDto;
import com.bsd.pjcloud.thirdparty.dto.appplus.ThirdMiniAppOAth2LoginDto;
import com.bsd.pjcloud.thirdparty.dto.appplus.ThirdMiniAppPayDto;
@@ -44,6 +43,7 @@ import com.bsd.pjcloud.wallet.api.feign.RemoteMchService;
import com.bsd.pjcloud.wallet.api.feign.RemoteWalletRechargePackageService;
import com.bsd.pjcloud.wallet.api.vo.MchManageVo;
import com.bsd.pjcloud.wallet.api.vo.mch.MchPaySettingVo;
+import com.github.binarywang.wxpay.bean.result.WxPayMicropayResult;
import com.wechat.pay.java.service.partnerpayments.app.model.Transaction;
import com.wechat.pay.java.service.refund.model.RefundNotification;
import lombok.RequiredArgsConstructor;
@@ -70,6 +70,7 @@ public class ThirdAppPlusServiceImpl implements ThirdAppPlusService {
private final AppPlusPayConfig appPlusPayConfig;
private final ThirdAppPlusWechatService thirdMiniAppWechatService;
+ private final ThirdAppPlusWechatMicropayService thirdAppPlusWechatMicropayService;
private final ThirdAppPlusAliPayService thirdMiniAppAliPayService;
private final ThirdPayLogService thirdPayLogService;
private final ThirdPayOrderService thirdPayOrderService;
@@ -193,7 +194,7 @@ public class ThirdAppPlusServiceImpl implements ThirdAppPlusService {
List paySettingList = mchManage.getPaySettingList();
- if (ObjectUtil.equals(dto.getBizType(), ThirdPayOrderBizTypeEnum.MINI_APP_WALLET_RECHARGE)) {
+ if (ObjectUtil.equals(dto.getBizType(), ThirdPayOrderBizTypeEnum.MINI_APP_RECHARGE)) {
Long bizId = null;
try {
@@ -251,8 +252,8 @@ public class ThirdAppPlusServiceImpl implements ThirdAppPlusService {
if (ObjectUtil.isEmpty(paySetting)) {
throw new RuntimeException("商户未配置微信支付参数");
}
- MchPaySettingEntity.AliPaySetting wechatPaySetting = JSONUtil.toBean(paySetting.getSettingJson(), MchPaySettingEntity.AliPaySetting.class);
- appPlusPayDto.setSubMchid(wechatPaySetting.getSubMchid());
+ MchPaySettingEntity.AliPaySetting aliPaySetting = JSONUtil.toBean(paySetting.getSettingJson(), MchPaySettingEntity.AliPaySetting.class);
+ appPlusPayDto.setSubMchid(aliPaySetting.getSubMchid());
String orderStr = thirdMiniAppAliPayService.appPay(appPlusPayDto, paySetting);
if (ObjectUtil.isEmpty(orderStr)) {
@@ -272,6 +273,83 @@ public class ThirdAppPlusServiceImpl implements ThirdAppPlusService {
return result;
}
+ /**
+ * 付款码支付
+ */
+ @Override
+ public String micropay(ThirdMicropayDto dto) {
+ MchManageVo mchManage = null;
+ // 查询用户属于的商户
+ if (ObjectUtil.equals(dto.getMiniPlatformType(), AppPlusPlatformTypeEnum.ZAX_APP_WALLET)) {
+ UserInfo userInfo = remoteUserService.getByUserId(dto.getUserId()).getData();
+ if (ObjectUtil.isEmpty(userInfo)) {
+ throw new RuntimeException("用户不存在");
+ }
+ mchManage = remoteMchService.getViewsCanteenMchByDeptId(userInfo.getSysUser().getDeptId()).getData();
+ } else {
+ mchManage = remoteMchService.getById(dto.getMchId()).getData();
+ }
+ if (ObjectUtil.isEmpty(mchManage)) {
+ throw new RuntimeException("用户不属于任何食堂");
+ }
+ if (ObjectUtil.isEmpty(mchManage.getPaySettingList())) {
+ throw new RuntimeException("商户未配置支付参数");
+ }
+
+ List paySettingList = mchManage.getPaySettingList();
+ if (ObjectUtil.equals(dto.getBizType(), ThirdPayOrderBizTypeEnum.YXFJ_PAY)) {
+
+ }
+ // 不支持的类型
+ else {
+ throw new RuntimeException("不支持的支付类型");
+ }
+
+ ThirdAppPlusPayDto appPlusPayDto = new ThirdAppPlusPayDto();
+ // 当前时间戳+10位随机字符串
+ String outTradeNo = LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() + RandomUtil.randomString(10);
+ appPlusPayDto.setOutTradeNo(outTradeNo);
+ appPlusPayDto.setBizId(dto.getBizId());
+ appPlusPayDto.setBizType(dto.getBizType());
+ appPlusPayDto.setUserId(dto.getUserId());
+ appPlusPayDto.setOpenid(dto.getOpenId());
+ appPlusPayDto.setAmount(dto.getAmount());
+ appPlusPayDto.setMchId(mchManage.getId());
+ appPlusPayDto.setDevicePayCode(dto.getDevicePayCode());
+ if (ObjectUtil.isEmpty(appPlusPayDto.getUserId())) {
+ appPlusPayDto.setUserId(-1L);
+ }
+
+ // 微信
+ if (ObjectUtil.equals(dto.getMiniPlatformType().getType(), AppPlusPlatformTypeEnum.WECHAT.getType())) {
+ MchPaySettingVo paySetting = paySettingList.stream().filter(item -> ObjectUtil.equals(item.getPlatformType(), AppPlusPlatformPayType.WECHAT.getType())).findFirst().orElse(null);
+ if (ObjectUtil.isEmpty(paySetting) || ObjectUtil.isEmpty(paySetting.getSettingJson())) {
+ throw new RuntimeException("商户未配置微信支付参数");
+ }
+ MchPaySettingEntity.WechatPaySetting wechatPaySetting = JSONUtil.toBean(paySetting.getSettingJson(), MchPaySettingEntity.WechatPaySetting.class);
+ appPlusPayDto.setSubMchid(wechatPaySetting.getSubMchid());
+
+ WxPayMicropayResult micropay = thirdAppPlusWechatMicropayService.micropay(appPlusPayDto, paySetting);
+ if (ObjectUtil.isNotEmpty(micropay)) {
+ return micropay.getOutTradeNo();
+ }
+ }
+ // 支付宝
+ else if (ObjectUtil.equals(dto.getMiniPlatformType().getType(), AppPlusPlatformTypeEnum.ALI_PAY.getType())) {
+ MchPaySettingVo paySetting = paySettingList.stream().filter(item -> ObjectUtil.equals(item.getPlatformType(), AppPlusPlatformPayType.ALI_PAY.getType())).findFirst().orElse(null);
+ if (ObjectUtil.isEmpty(paySetting)) {
+ throw new RuntimeException("商户未配置微信支付参数");
+ }
+ MchPaySettingEntity.AliPaySetting aliPaySetting = JSONUtil.toBean(paySetting.getSettingJson(), MchPaySettingEntity.AliPaySetting.class);
+ appPlusPayDto.setSubMchid(aliPaySetting.getSubMchid());
+ }
+ // 不支持的支付类型
+ else {
+ throw new RuntimeException("不支持的支付类型");
+ }
+ return null;
+ }
+
/**
* 小程序退款
*/
diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/appplus/ThirdAppPlusWechatMicropayServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/appplus/ThirdAppPlusWechatMicropayServiceImpl.java
new file mode 100644
index 000000000..bf0903f5b
--- /dev/null
+++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/appplus/ThirdAppPlusWechatMicropayServiceImpl.java
@@ -0,0 +1,163 @@
+package com.bsd.pjcloud.thirdparty.service.impl.appplus;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.RandomUtil;
+import cn.hutool.json.JSONUtil;
+import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum;
+import com.bsd.pjcloud.thirdparty.config.AppPlusPayConfig;
+import com.bsd.pjcloud.thirdparty.constant.miniplatform.AppPlusPlatformTypeEnum;
+import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPayOrderStatusEnum;
+import com.bsd.pjcloud.thirdparty.dto.appplus.pay.wechat.ThirdAppPlusPayDto;
+import com.bsd.pjcloud.thirdparty.entity.pay.ThirdPayOrderEntity;
+import com.bsd.pjcloud.thirdparty.service.ThirdAppPlusWechatMicropayService;
+import com.bsd.pjcloud.thirdparty.service.ThirdPayOrderService;
+import com.bsd.pjcloud.thirdparty.service.impl.appplus.fz.lifecycle.ThirdAppPlusWechatFzLifecycle;
+import com.bsd.pjcloud.thirdparty.utils.pay.PayForUtil;
+import com.bsd.pjcloud.wallet.api.entity.mch.MchPaySettingEntity;
+import com.bsd.pjcloud.wallet.api.vo.mch.MchPaySettingVo;
+import com.github.binarywang.wxpay.bean.request.WxPayMicropayRequest;
+import com.github.binarywang.wxpay.bean.request.WxPayOrderReverseRequest;
+import com.github.binarywang.wxpay.bean.result.WxPayMicropayResult;
+import com.github.binarywang.wxpay.bean.result.WxPayOrderReverseResult;
+import com.github.binarywang.wxpay.service.WxPayService;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import java.time.LocalDateTime;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+/**
+ * 微信付款码支付(只支持v2,所以单独写一个服务)
+ */
+@Service
+@Validated
+@Slf4j
+@RequiredArgsConstructor
+public class ThirdAppPlusWechatMicropayServiceImpl implements ThirdAppPlusWechatMicropayService {
+
+ private final String TAG = "维修付款码支付";
+
+ private final AppPlusPayConfig appPlusPayConfig;
+
+ private final ThirdPayOrderService thirdPayOrderService;
+
+ private final WxPayService wxPayService;
+
+ private final ThirdAppPlusWechatFzLifecycle appPlusWechatFzLifecycle;
+
+ private static final ExecutorService executorService = Executors.newFixedThreadPool(10);
+
+ /**
+ * 付款码支付
+ */
+ @Override
+ public WxPayMicropayResult micropay(ThirdAppPlusPayDto dto, MchPaySettingVo setting) {
+ AppPlusPayConfig.WechatConfig wechatConfig = appPlusPayConfig.getWechatConfig();
+
+ ThirdPayOrderEntity payOrder = new ThirdPayOrderEntity();
+ payOrder.setPayPlatformType(AppPlusPlatformTypeEnum.WECHAT.getType());
+ payOrder.setBizId(dto.getBizId());
+ payOrder.setBizType(dto.getBizType().getType());
+ payOrder.setUserId(dto.getUserId());
+ payOrder.setUserCode(dto.getOpenid());
+ payOrder.setPrice(dto.getAmount());
+ payOrder.setStatus(ThirdPayOrderStatusEnum.PAY_UNPAID.getType());
+ payOrder.setPayNo(dto.getOutTradeNo());
+ payOrder.setMchId(dto.getMchId());
+ payOrder.setMchPaySettingJson(JSONUtil.toJsonStr(setting));
+ payOrder.setEnableFz(YesNoEnum.YES.getCode());
+ payOrder.setIsBizCallback(YesNoEnum.YES.getCode());
+
+ WxPayMicropayRequest request = new WxPayMicropayRequest();
+ request.setAppid(wechatConfig.getAppPlatformAppId());
+ request.setMchId(wechatConfig.getMerchantId());
+ request.setSubMchId(dto.getSubMchid());
+ request.setNonceStr(RandomUtil.randomString(32));
+ request.setSign("");
+ request.setBody("资安信-付款码支付");
+ request.setOutTradeNo(dto.getOutTradeNo());
+ request.setTotalFee(dto.getAmount());
+ request.setSpbillCreateIp(PayForUtil.localIp());
+ request.setAuthCode(dto.getDevicePayCode());
+ request.setProfitSharing("Y");
+
+ try {
+ payOrder.setPayRep(JSONUtil.toJsonStr(request));
+
+ WxPayMicropayResult res = wxPayService.micropay(request);
+ payOrder.setPayTime(LocalDateTime.now());
+ payOrder.setPayRes(JSONUtil.toJsonStr(res));
+
+ if (ObjectUtil.equals(res.getResultCode(), "SUCCESS") && ObjectUtil.equals(res.getReturnCode(), "SUCCESS")) {
+ payOrder.setStatus(ThirdPayOrderStatusEnum.PAY_SUCCESS.getType());
+ payOrder.setThirdPayNo(res.getTransactionId());
+ }
+ // 如果支付失败了就撤销订单
+ else {
+ payOrder.setStatus(ThirdPayOrderStatusEnum.PAY_FAILED.getType());
+ reverse(payOrder);
+ }
+ return res;
+ } catch (Exception e) {
+ payOrder.setStatus(ThirdPayOrderStatusEnum.PAY_FAILED.getType());
+ e.printStackTrace();
+ log.error("|{}|付款码支付,意外的错误,异常:{}", TAG, e.getMessage(), e);
+ return null;
+ } finally {
+ thirdPayOrderService.save(payOrder);
+ // 订单支付成功
+ CompletableFuture.runAsync(() -> {
+ try {
+ if (ObjectUtil.notEqual(payOrder.getStatus(), ThirdPayOrderStatusEnum.PAY_SUCCESS.getType())) {
+ return;
+ }
+ Thread.sleep(30000);
+ appPlusWechatFzLifecycle.orderPaySuccess(thirdPayOrderService.getById(payOrder.getId()));
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ log.error("|{}|延迟调用orderPaySuccess被中断", TAG, e);
+ } catch (Exception e) {
+ log.error("|{}|延迟调用orderPaySuccess异常", TAG, e);
+ }
+ }, executorService);
+ }
+ }
+
+ /**
+ * 撤销订单
+ */
+ @Override
+ public Object reverse(ThirdPayOrderEntity payOrder) {
+ AppPlusPayConfig.WechatConfig wechatConfig = appPlusPayConfig.getWechatConfig();
+
+ if (ObjectUtil.isEmpty(payOrder.getMchPaySettingJson())) {
+ throw new RuntimeException("支付配置不存在");
+ }
+ MchPaySettingEntity wechatPaySettingEntity = JSONUtil.toBean(payOrder.getMchPaySettingJson(), MchPaySettingEntity.class);
+ MchPaySettingEntity.WechatPaySetting wechatPaySetting = JSONUtil.toBean(wechatPaySettingEntity.getSettingJson(), MchPaySettingEntity.WechatPaySetting.class);
+
+ WxPayOrderReverseRequest request = new WxPayOrderReverseRequest();
+ request.setAppid(wechatConfig.getAppPlatformAppId());
+ request.setMchId(wechatConfig.getMerchantId());
+ request.setSubMchId(wechatPaySetting.getSubMchid());
+ request.setTransactionId(payOrder.getThirdPayNo());
+ request.setNonceStr(RandomUtil.randomString(32));
+ request.setSign("");
+ try {
+ WxPayOrderReverseResult result = wxPayService.reverseOrder(request);
+ if (ObjectUtil.notEqual(result.getResultCode(), "SUCCESS")) {
+ throw new RuntimeException("撤销订单失败res:" + JSONUtil.toJsonStr(result));
+ }
+ return result;
+ } catch (Exception e) {
+ e.printStackTrace();
+ log.error("|{}|撤销订单,意外的错误,异常:{}", TAG, e.getMessage(), e);
+ return null;
+ }
+ }
+
+}
diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/appplus/ThirdAppPlusWechatServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/appplus/ThirdAppPlusWechatServiceImpl.java
index 56eef84e8..810a3009d 100644
--- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/appplus/ThirdAppPlusWechatServiceImpl.java
+++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/appplus/ThirdAppPlusWechatServiceImpl.java
@@ -27,6 +27,7 @@ import com.wechat.pay.java.core.notification.RequestParam;
import com.wechat.pay.java.service.partnerpayments.app.AppServiceExtension;
import com.wechat.pay.java.service.partnerpayments.app.model.*;
import com.wechat.pay.java.service.partnerpayments.app.model.Amount;
+import com.wechat.pay.java.service.partnerpayments.nativepay.NativePayService;
import com.wechat.pay.java.service.profitsharing.ProfitsharingService;
import com.wechat.pay.java.service.refund.RefundService;
import com.wechat.pay.java.service.refund.model.*;
@@ -67,7 +68,7 @@ public class ThirdAppPlusWechatServiceImpl implements ThirdAppPlusWechatService
private final AppServiceExtension appServiceExtension;
private final RefundService refundService;
private final NotificationParser notificationParser;
- private final ProfitsharingService profitsharingService;
+
private final ThirdAppPlusWechatFzLifecycle appPlusWechatFzLifecycle;
private static final ExecutorService executorService = Executors.newFixedThreadPool(10);
@@ -190,6 +191,8 @@ public class ThirdAppPlusWechatServiceImpl implements ThirdAppPlusWechatService
@Override
public ThirdMiniWechantReverseVo reverse(ThirdMiniWechantReverseDto dto) {
AppPlusPayConfig.WechatConfig wechatConfig = appPlusPayConfig.getWechatConfig();
+
+
return null;
}
diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/appplus/fz/ThirdAppPlusWechatFzServiceImpl.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/appplus/fz/ThirdAppPlusWechatFzServiceImpl.java
index 715baa285..50aa7879a 100644
--- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/appplus/fz/ThirdAppPlusWechatFzServiceImpl.java
+++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/service/impl/appplus/fz/ThirdAppPlusWechatFzServiceImpl.java
@@ -56,7 +56,7 @@ public class ThirdAppPlusWechatFzServiceImpl implements ThirdAppPlusWechatFzServ
throw new RuntimeException("支付配置不存在");
}
// 总金额小毛直接返回(不分账)
- if (orderEntity.getPrice() < 10) {
+ if (orderEntity.getPrice() <= 10) {
log.info("|{}|订单金额太小,无需分账,订单号:{}", TAG, orderEntity.getPayNo());
return null;
}
diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/pay/PayForUtil.java b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/pay/PayForUtil.java
new file mode 100644
index 000000000..2b9f4572a
--- /dev/null
+++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/java/com/bsd/pjcloud/thirdparty/utils/pay/PayForUtil.java
@@ -0,0 +1,34 @@
+package com.bsd.pjcloud.thirdparty.utils.pay;
+
+import java.net.*;
+import java.util.Enumeration;
+import java.util.List;
+
+
+public class PayForUtil {
+
+ /**
+ * 获取本机ip
+ */
+ public static String localIp() {
+ String ip = null;
+ Enumeration allNetInterfaces;
+ try {
+ allNetInterfaces = NetworkInterface.getNetworkInterfaces();
+ while (allNetInterfaces.hasMoreElements()) {
+ NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();
+ List InterfaceAddress = netInterface.getInterfaceAddresses();
+ for (InterfaceAddress add : InterfaceAddress) {
+ InetAddress Ip = add.getAddress();
+ if (Ip != null && Ip instanceof Inet4Address) {
+ ip = Ip.getHostAddress();
+ }
+ }
+ }
+ } catch (SocketException e) {
+ e.printStackTrace();
+ }
+ return ip;
+ }
+
+}
diff --git a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml
index e3867b099..bebc5b8a2 100644
--- a/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml
+++ b/pjcloud-thirdparty/pjcloud-thirdparty-biz/src/main/resources/application.yml
@@ -123,6 +123,9 @@ ad:
# refund-callback-url: /third/third-app-pay/app/refund-callback
# spbill-create-ip: 59.202.170.152
# base-url: https://api.mch.weixin.qq.com
+# v2-config:
+# mch-key: f0f5fd485bac7f377af6f5ca97636dd4
+# key-path: /Users/dengzhangchen/Desktop/backups/pay/zax_wx_pt_v2/apiclient_cert.p12
# ali-pay-config:
# app-id: 2021006152609558
# app-private-key: MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC24MPW2yRAhwvsggYizILPI1ip10LFRrLKrwnstP3C0CmsxGsJFzmw3iA0jT3ruaAEB/fM4UpJKFQG8JCUui3+eMqEi0d39GSBD9puMh4Vc5tVPqPdBTmiN3T4ut3857HPRq58d/9CnGF7AldNuVv6gPNrGBideEoAuBV5iTfrmlv7gVStO4ieEYJnkcLjutD0uzZ24j2HsWQHg0x/qioH9odFBizNsnTH3Uvd3RnK3n9rZXgxsNnhTEEw+lu32w+xzHC/1ob3k2alE6Kn+w4Rljr7T9mcv9eQPqaMa5Slu+ulpDbZe5guMv3WWI0QwNU2x0gfWqN36RtZwgC5AUmzAgMBAAECggEAXhGpyyg4MpUE1ihf3aCTHNeSsPKQXwepykZVdZP4ADCxbzQt1qRCwa7QpBePJWT7YXdzyMiOPKlo55Tw2gAWzpH1ok4+ef6VgCnWct6GyQQJf8TT50nbxox+N79vlrrbpMI32MCk5e+o2OxwWgOhw253R7xCVSXd8xa9vSGPSTngyskNIoXXujIg6bf0CfYClMD1c8jWAA3Y9ZlM2RcxFP16RvGRvDvgDomF1/oEB8aIP1BswXpmFbWVlmYMB/5pS1P90fzJ+w74pqRObH90kYJgoQ0k+5NUD3q8xv61Wu7+mCfGrlxgYEmNp+O3rT0DMRaQhG3qCB/FJM/xa7cNyQKBgQD+u0f363GIE6penUGlxH+Ww2wtR7aTrYVf4TQMpjPNGjoh+jx4VAIwA0Uxq3diA4+l03DbSGZkFiQaSK8txWpXqe2R6o/5+Y+/MCVzRLDsBRl8TB2EPtFUmhzRSS4rWzEZzpzRh7qHT+ycxxuJNo66WOIgqs4Tx2Mp0TinufmedQKBgQC3yeN5qa+eaUORoWfBbuRB1XxuVneU+i5/1D9Md7heTzM9NzJYN8LAB6y/VsQQsLJO0p0fVKkjKbJSY/qyB0o7AXlr7dZhbzfCLN0yaWdUzpyy/nbO1Z4jzZEXGMNfqi2N41fuVBucVXpUcU3NDf0oFkwdtGVTz5WCUq3y4gCShwKBgQCN25wjq+Go51K8qBTUDQ8E1cXbnZFGwp6BG7hRxwkYEqAHJgUg+Z/SPy/8jkHIurT3oz25UKN833uxi4LLGaK0OTTNSvRtQJbV4Skp/ToN5nUf7H+PkzAeTkj4ICnvCTTZ618XrN+q1U6urI9gJZrsme0sRhLHnwVRV2uWtJIXtQKBgQCCOy3UXRgTkRWPESc7Wv+lYsh8SwsLZsgiTlzYK5FaSpbNTtp+xmxatFWFc88U4JBI6FbsB4qeXwJ7/Vp8YkwIScAnaW3atvt0vWO0QBo3bvx8nXHEmHwpdJXWHvb6R9Vl0G3TdIfoHG3FflAZ+Eql6D7hYZ3XaKXRphKao+ix6wKBgQC6aYF2ldJcX4cxvkm1Cuz96jvKt5qx7IhH3CkH+qEVnnYZRrcMbwcO4agwWpvgp/tTKgYV2DzEuXF5aNbBoKXAXG5FOT+etPlutnkt+/n2vsRiafeMMnBFvWqZ48XgREqi/ehHCMcZdsDpudxX0VAAwtvBYJsQfes6XyMYsC6gbA==
diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchPaySettingServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchPaySettingServiceImpl.java
index 115180292..3bbf94103 100755
--- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchPaySettingServiceImpl.java
+++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/mch/MchPaySettingServiceImpl.java
@@ -63,6 +63,16 @@ public class MchPaySettingServiceImpl extends ServiceImpl {
+ try {
+ MchManageVo mchManage = mchManageService.join(dto.getMchId());
+ if (ObjectUtil.isNotEmpty(mchManage)) {
+ thirdAppPlusPayService.remoterChangeMch(mchManage);
+ }
+ } catch (Exception e) {
+ log.error("编辑商户的回调异常:{}", e.getMessage());
+ }
+ });
return dto.getId();
}
diff --git a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargePackageServiceImpl.java b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargePackageServiceImpl.java
index 1ebe1f801..077de5239 100644
--- a/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargePackageServiceImpl.java
+++ b/pjcloud-wallet/pjcloud-wallet-biz/src/main/java/com/bsd/pjcloud/wallet/service/impl/recharge/WalletRechargePackageServiceImpl.java
@@ -42,7 +42,7 @@ public class WalletRechargePackageServiceImpl extends ServiceImpl