From 24f7f046f8854d63839ad52d0cff34ea45a0f449 Mon Sep 17 00:00:00 2001
From: gongzuming <gongzuming>
Date: 星期二, 12 十一月 2024 13:10:17 +0800
Subject: [PATCH] 优化
---
src/main/java/com/mzl/flower/service/payment/UserPaymentV3Service.java | 36 +++++++++++++++++++++++++-----------
1 files changed, 25 insertions(+), 11 deletions(-)
diff --git a/src/main/java/com/mzl/flower/service/payment/UserPaymentV3Service.java b/src/main/java/com/mzl/flower/service/payment/UserPaymentV3Service.java
index e93b82a..911682e 100644
--- a/src/main/java/com/mzl/flower/service/payment/UserPaymentV3Service.java
+++ b/src/main/java/com/mzl/flower/service/payment/UserPaymentV3Service.java
@@ -540,15 +540,6 @@
request.setTransactionId(o.getPaymentTrId());
request.setNotifyUrl(PyamentV3Configurer.notify_url_refund);
- AmountReq amount = new AmountReq();
- int oa = prepareAmount(o.getPaymentAmount());
- amount.setTotal((long)oa);
- amount.setRefund((long)oa);
- amount.setCurrency("CNY");
- request.setAmount(amount);
- // 调用接口
- refundService.create(request);
-
o.setRefundAmount(o.getPaymentAmount());
o.setRefundNo(request.getOutRefundNo());
o.setRefundTime(LocalDateTime.now());
@@ -562,6 +553,16 @@
deliveryOrderService.refundDelete(orderId);
releasePrepayLock(o);
+
+ //最后调用微信退款接口,防止回滚
+ AmountReq amount = new AmountReq();
+ int oa = prepareAmount(o.getPaymentAmount());
+ amount.setTotal((long)oa);
+ amount.setRefund((long)oa);
+ amount.setCurrency("CNY");
+ request.setAmount(amount);
+ // 调用接口
+ refundService.create(request);
}
public String refundOrderSub(Order o, BigDecimal refundAmount){
@@ -702,8 +703,8 @@
InitiateBatchTransferRequest request = new InitiateBatchTransferRequest();
request.setAppid(dto.getAppId());
request.setOutBatchNo(transfer.getId());//【商家批次单号】 商户系统内部的商家批次单号,要求此参数只能由数字、大小写字母组成,在商户系统内部唯一
- request.setBatchName(transfer.getName());//【批次名称】 该笔批量转账的名称
- request.setBatchRemark(transfer.getRemarks());//【批次备注】 转账说明,UTF8编码,最多允许32个字符
+ request.setBatchName(subString(transfer.getName(), 32));//【批次名称】 该笔批量转账的名称
+ request.setBatchRemark(subString(transfer.getRemarks(), 32));//【批次备注】 转账说明,UTF8编码,最多允许32个字符
List<TransferDetailReqDTO> details = dto.getDetails();
transfer.setTotalNum(details.size());
@@ -748,6 +749,19 @@
return transfer.getId();
}
+ private String subString(String str, int len){
+ if(StringUtils.isEmpty(str)){
+ return str;
+ }
+
+ int length = str.length();
+ if(length > len){
+ return str.substring(0, len - 1);
+ }
+
+ return str;
+ }
+
public void checkTransferStatus(Transfer transfer) {//定时任务验证转账状态
GetTransferBatchByOutNoRequest request = new GetTransferBatchByOutNoRequest();
request.setOutBatchNo(transfer.getId());
--
Gitblit v1.9.3