From 19a5bde9b0e41f2d1d61cf42ade812a6d84ead54 Mon Sep 17 00:00:00 2001 From: zhangli <123879394@qq.com> Date: Mon, 29 Sep 2025 23:43:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=85=8D=E6=8A=BC=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E6=89=A3=E6=AC=BE=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/sczx/order/service/PayService.java | 14 +++++++++++++ .../order/service/impl/OrderServiceImpl.java | 5 +++-- .../order/service/impl/PayServiceImpl.java | 13 ++++++++++++ .../dto/req/AlipayCreateRequest.java | 1 + .../order/thirdpart/facade/PayFacade.java | 6 ++++++ .../order/thirdpart/integration/PayInteg.java | 20 +++++++++++++++++++ 6 files changed, 57 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sczx/order/service/PayService.java b/src/main/java/com/sczx/order/service/PayService.java index c343a06..80f9309 100644 --- a/src/main/java/com/sczx/order/service/PayService.java +++ b/src/main/java/com/sczx/order/service/PayService.java @@ -7,6 +7,8 @@ import java.math.BigDecimal; public interface PayService { + + /** * 预支付下单 * @param payType @@ -30,6 +32,18 @@ public interface PayService { String refundOrder(String payType,Long companyId,String outTradeNo, BigDecimal totalFee, BigDecimal refundFee); + /** + * 支付宝免押扣款 + * @param body + * @param companyId + * @param outTradeNo + * @param authNo + * @param totalFee + * @return + */ + UnifiedPaymentInfoDTO zhimaPayOrder(String body, Long companyId, String outTradeNo, String authNo, BigDecimal totalFee); + + /** * 冻结 * @param companyId diff --git a/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java b/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java index 29c6141..12a28cf 100644 --- a/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java +++ b/src/main/java/com/sczx/order/service/impl/OrderServiceImpl.java @@ -423,8 +423,9 @@ public class OrderServiceImpl implements OrderService { throw new BizException("无租车待支付单,支付失败"); } //开始发起支付 - UnifiedPaymentInfoDTO unifiedPaymentInfoDTO = payService.prepayOrder(rentCarOrder.getPaymentMethod(),orderMainPO.getRentCarRuleId().toString(),orderMainPO.getOperatorId(),rentCarOrder.getPaymentId(),userInfoDTO - ,orderMainPO.getOrderAmount()); +// UnifiedPaymentInfoDTO unifiedPaymentInfoDTO = payService.prepayOrder(rentCarOrder.getPaymentMethod(),orderMainPO.getRentCarRuleId().toString(),orderMainPO.getOperatorId(),rentCarOrder.getPaymentId(),userInfoDTO +// ,orderMainPO.getOrderAmount()); + UnifiedPaymentInfoDTO unifiedPaymentInfoDTO = payService.zhimaPayOrder("闪充智行租车免押支付",orderMainPO.getOperatorId(),rentCarOrder.getPaymentId(),noDepositOrder.getTransactionId(),orderMainPO.getOrderAmount()); LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(OrderSubPO::getSuborderId, noDepositOrder.getSuborderId()) .eq(OrderSubPO::getDelFlag, "0") diff --git a/src/main/java/com/sczx/order/service/impl/PayServiceImpl.java b/src/main/java/com/sczx/order/service/impl/PayServiceImpl.java index 86c57f6..82e5075 100644 --- a/src/main/java/com/sczx/order/service/impl/PayServiceImpl.java +++ b/src/main/java/com/sczx/order/service/impl/PayServiceImpl.java @@ -89,6 +89,19 @@ public class PayServiceImpl implements PayService { return null; } + @Override + public UnifiedPaymentInfoDTO zhimaPayOrder(String body, Long companyId, String outTradeNo, String authNo, BigDecimal totalFee) { + AlipayCreateRequest alipayCreateRequest = new AlipayCreateRequest(); + alipayCreateRequest.setCompanyId(companyId); + alipayCreateRequest.setSubject(body); + alipayCreateRequest.setBody(body); + alipayCreateRequest.setOutTradeNo(outTradeNo); + alipayCreateRequest.setAuthNo(authNo); + alipayCreateRequest.setTotalAmount(totalFee.toString()); + return payInteg.zhiMaOrder(alipayCreateRequest); + + } + @Override public UnifiedPaymentInfoDTO freezeOrder(Long companyId, String outOrderNo, BigDecimal freezeFee) { AlipayFundFreezeRequest request = new AlipayFundFreezeRequest(); diff --git a/src/main/java/com/sczx/order/thirdpart/dto/req/AlipayCreateRequest.java b/src/main/java/com/sczx/order/thirdpart/dto/req/AlipayCreateRequest.java index aea62bf..2a5e135 100644 --- a/src/main/java/com/sczx/order/thirdpart/dto/req/AlipayCreateRequest.java +++ b/src/main/java/com/sczx/order/thirdpart/dto/req/AlipayCreateRequest.java @@ -11,4 +11,5 @@ public class AlipayCreateRequest { private String totalAmount; // 订单总金额 private String body; // 订单描述 private String openId; // 用户ID + private String authNo; //支付宝资金授权操作处理号 } diff --git a/src/main/java/com/sczx/order/thirdpart/facade/PayFacade.java b/src/main/java/com/sczx/order/thirdpart/facade/PayFacade.java index 6acad88..fdfb2af 100644 --- a/src/main/java/com/sczx/order/thirdpart/facade/PayFacade.java +++ b/src/main/java/com/sczx/order/thirdpart/facade/PayFacade.java @@ -60,6 +60,12 @@ public interface PayFacade { @PostMapping("/api/alipay/unifiedOrder") AlipayCreateResponse alipayUnifiedOrder(@RequestBody AlipayCreateRequest request); + /** + * 支付宝统一下单接口 + */ + @PostMapping("/api/alipay/zhiMaOrder") + AlipayCreateResponse zhiMaOrder(@RequestBody AlipayCreateRequest request); + /** * 查询订单接口 */ diff --git a/src/main/java/com/sczx/order/thirdpart/integration/PayInteg.java b/src/main/java/com/sczx/order/thirdpart/integration/PayInteg.java index a25850f..53907ae 100644 --- a/src/main/java/com/sczx/order/thirdpart/integration/PayInteg.java +++ b/src/main/java/com/sczx/order/thirdpart/integration/PayInteg.java @@ -152,6 +152,26 @@ public class PayInteg { } } + /** + * 支付宝免押扣款接口 + */ + public UnifiedPaymentInfoDTO zhiMaOrder(AlipayCreateRequest request){ + try { + AlipayCreateResponse result = payFacade.zhiMaOrder(request); + if(StringUtils.isNotBlank(result.getCode()) && "SUCCESS".equals(result.getCode())){ + UnifiedPaymentInfoDTO unifiedPaymentInfo = new UnifiedPaymentInfoDTO(); + unifiedPaymentInfo.setOutTradeNo(result.getOutTradeNo()); + unifiedPaymentInfo.setTradeNo(result.getTradeNo()); + return unifiedPaymentInfo; + }else { + throw new InnerException("支付宝免押扣款失败"); + } + } catch (Exception e){ + log.error("支付宝免押扣款失败",e); + throw new InnerException("支付宝免押扣款失败"); + } + } + /** * 查询订单接口 */