From c013c779db113bdc35e909ffb32658d9589ec2c8 Mon Sep 17 00:00:00 2001 From: tianyongbao Date: Mon, 19 Jan 2026 14:29:42 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=BE=AE=E4=BF=A1=E6=94=AF=E4=BB=98?= =?UTF-8?q?=EF=BC=8C=E6=8E=A5=E5=8F=A3=E6=B5=8B=E8=AF=95=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../intc/weixin/controller/WeixinController.java | 6 ++++++ .../weixin/service/PayOrderBusinessService.java | 9 +++++++++ .../impl/PayOrderBusinessServiceImpl.java | 16 ++++++++++++++++ 3 files changed, 31 insertions(+) diff --git a/intc-modules/intc-weixin/src/main/java/com/intc/weixin/controller/WeixinController.java b/intc-modules/intc-weixin/src/main/java/com/intc/weixin/controller/WeixinController.java index 1207f75..66d3360 100644 --- a/intc-modules/intc-weixin/src/main/java/com/intc/weixin/controller/WeixinController.java +++ b/intc-modules/intc-weixin/src/main/java/com/intc/weixin/controller/WeixinController.java @@ -244,6 +244,12 @@ public class WeixinController extends BaseController { return R.fail("创建微信预支付订单失败"); } + // 7.1 更新订单的prepayId + boolean updated = payOrderBusinessService.updatePrepayId(orderId, prepayId); + if (!updated) { + log.warn("更新订单prepayId失败: orderId={}, prepayId={}", orderId, prepayId); + } + // 8. 生成JSAPI支付参数 String appId = wxMaProperties != null && wxMaProperties.getAppId() != null ? wxMaProperties.getAppId() : ""; diff --git a/intc-modules/intc-weixin/src/main/java/com/intc/weixin/service/PayOrderBusinessService.java b/intc-modules/intc-weixin/src/main/java/com/intc/weixin/service/PayOrderBusinessService.java index 82a855e..78a2fbc 100644 --- a/intc-modules/intc-weixin/src/main/java/com/intc/weixin/service/PayOrderBusinessService.java +++ b/intc-modules/intc-weixin/src/main/java/com/intc/weixin/service/PayOrderBusinessService.java @@ -73,4 +73,13 @@ public interface PayOrderBusinessService { * @return 设备充值记录列表 */ List queryPayDevicesByOrderId(Long orderId); + + /** + * 更新订单的预支付交易会话标识 + * + * @param orderId 订单ID + * @param prepayId 预支付交易会话标识 + * @return 是否更新成功 + */ + boolean updatePrepayId(Long orderId, String prepayId); } diff --git a/intc-modules/intc-weixin/src/main/java/com/intc/weixin/service/impl/PayOrderBusinessServiceImpl.java b/intc-modules/intc-weixin/src/main/java/com/intc/weixin/service/impl/PayOrderBusinessServiceImpl.java index 6fe23b1..29806b3 100644 --- a/intc-modules/intc-weixin/src/main/java/com/intc/weixin/service/impl/PayOrderBusinessServiceImpl.java +++ b/intc-modules/intc-weixin/src/main/java/com/intc/weixin/service/impl/PayOrderBusinessServiceImpl.java @@ -93,6 +93,7 @@ public class PayOrderBusinessServiceImpl implements PayOrderBusinessService { order.setTradeType("JSAPI"); order.setAttachment(String.valueOf(payId)); // 设置支付选项ID order.setNotifyUrl(notifyUrl); // 设置支付回调通知URL + order.setPrepayId(""); // 初始化为空字符串,待微信支付API调用后更新 payOrderMapper.insert(order); @@ -241,6 +242,21 @@ public class PayOrderBusinessServiceImpl implements PayOrderBusinessService { ); } + @Override + public boolean updatePrepayId(Long orderId, String prepayId) { + if (orderId == null || prepayId == null || prepayId.isEmpty()) { + return false; + } + + int rows = payOrderMapper.update(null, + new LambdaUpdateWrapper() + .eq(PayOrder::getId, orderId) + .set(PayOrder::getPrepayId, prepayId) + ); + + return rows > 0; + } + /** * 计算新的到期时间 *