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; + } + /** * 计算新的到期时间 *