From 6f2eaf92a86f67ce155a17fc371a9574f39eb4b9 Mon Sep 17 00:00:00 2001 From: dzq Date: Tue, 8 Apr 2025 17:56:37 +0800 Subject: [PATCH] =?UTF-8?q?refactor(=E6=94=AF=E4=BB=98):=20=E5=B0=86?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E7=9B=B8=E5=85=B3URL=E6=8F=90=E5=8F=96?= =?UTF-8?q?=E5=88=B0=E5=B8=B8=E9=87=8F=E7=B1=BB=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将支付、退款等URL从硬编码改为使用常量类PayApiConstants中的常量,提高代码可维护性和可读性。同时修复退款请求参数的编码问题,确保参数正确传递。 --- .../api/controller/OrderController.java | 30 ++++++++++++++++--- .../common/constant/PayApiConstants.java | 5 +++- .../shop/order/OrderApplicationService.java | 2 +- .../payment/PaymentApplicationService.java | 12 ++++---- 4 files changed, 38 insertions(+), 11 deletions(-) diff --git a/agileboot-api/src/main/java/com/agileboot/api/controller/OrderController.java b/agileboot-api/src/main/java/com/agileboot/api/controller/OrderController.java index bc35a1f..84ae2fb 100644 --- a/agileboot-api/src/main/java/com/agileboot/api/controller/OrderController.java +++ b/agileboot-api/src/main/java/com/agileboot/api/controller/OrderController.java @@ -20,9 +20,8 @@ import java.math.BigDecimal; import java.math.RoundingMode; /** - * 调度日志操作处理 - * - * @author valarchie + * 订单控制器,处理与订单相关的HTTP请求 + * 包括订单提交、开柜门、查询订单和退款等操作 */ @Slf4j @RequiredArgsConstructor @@ -33,25 +32,48 @@ public class OrderController extends BaseController { private final OrderApplicationService orderApplicationService; private final PaymentApplicationService paymentApplicationService; - // 新增提交订单接口 + /** + * 提交订单接口 + * @param command 提交订单的请求参数 + * @return 包含订单创建结果的响应 + */ @PostMapping("/submit") public ResponseDTO submitOrder(@Validated @RequestBody SubmitOrderCommand command) { CreateOrderResult result = orderApplicationService.createOrder(command); return ResponseDTO.ok(result); } + /** + * 打开订单商品柜门接口 + * @param orderId 订单ID + * @param orderGoodsId 订单商品ID + * @return 空响应 + */ @PostMapping("/openCabinet/{orderId}/{orderGoodsId}") public ResponseDTO openCabinet(@PathVariable Long orderId, @PathVariable Long orderGoodsId) { orderApplicationService.openOrderGoodsCabinet(orderId, orderGoodsId); return ResponseDTO.ok(); } + /** + * 根据用户openid获取订单列表 + * @param openid 用户微信openid + * @return 包含订单列表的响应 + */ @GetMapping("/user/{openid}") public ResponseDTO getOrdersByOpenId(@PathVariable String openid) { GetOrdersByOpenIdDTO result = orderApplicationService.getOrdersByOpenId(openid); return ResponseDTO.ok(result); } + /** + * 订单退款接口 + * @param orderId 订单ID + * @param money 退款金额(单位:分) + * @return 包含退款结果的响应 + * @throws IllegalArgumentException 当退款金额为负数或超过订单总额时抛出 + * @throws RuntimeException 当退款过程中发生其他错误时抛出 + */ @PostMapping("/refund/{orderId}") public ResponseDTO refundOrder(@PathVariable Long orderId, @RequestParam int money) { OrderModel orderModel = orderApplicationService.loadById(orderId); diff --git a/agileboot-common/src/main/java/com/agileboot/common/constant/PayApiConstants.java b/agileboot-common/src/main/java/com/agileboot/common/constant/PayApiConstants.java index c63320a..0cde211 100644 --- a/agileboot-common/src/main/java/com/agileboot/common/constant/PayApiConstants.java +++ b/agileboot-common/src/main/java/com/agileboot/common/constant/PayApiConstants.java @@ -3,5 +3,8 @@ package com.agileboot.common.constant; public class PayApiConstants { public static final String biz_id = "wxshop"; public static final String appkey = "wxshop202503081132"; - + public static final String pay_url = "http://222.218.10.217:7890/open/trade/wx/jsapi/precreate"; + public static final String pay_callback_url = "http://wxshop.ab98.cn/shop-api/api/payment/callback"; + public static final String refund_url = "http://222.218.10.217:7890/open/trade/refund"; + public static final String refund_callback_url = "http://wxshop.ab98.cn/shop-api/api/payment/refund/callback"; } diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java index c650743..3734502 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/order/OrderApplicationService.java @@ -169,7 +169,7 @@ public class OrderApplicationService { request.setPay_amount(amountInFen.toPlainString()); // 单位转换为分 request.setTitle("商品订单支付"); - request.setNotify_url("http://wxshop.ab98.cn/shop-api/api/payment/callback"); + request.setNotify_url(PayApiConstants.pay_callback_url); request.setBiz_id(PayApiConstants.biz_id); request.setUcid(orderModel.getUcid()); request.setExtra(""); diff --git a/agileboot-domain/src/main/java/com/agileboot/domain/shop/payment/PaymentApplicationService.java b/agileboot-domain/src/main/java/com/agileboot/domain/shop/payment/PaymentApplicationService.java index 3d31876..95c59e6 100644 --- a/agileboot-domain/src/main/java/com/agileboot/domain/shop/payment/PaymentApplicationService.java +++ b/agileboot-domain/src/main/java/com/agileboot/domain/shop/payment/PaymentApplicationService.java @@ -21,6 +21,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; @@ -34,7 +35,7 @@ public class PaymentApplicationService { private static final Object LOCKER = new Object(); public WxJsApiPreCreateResponse callJsApiPreCreate(WxJsApiPreCreateRequest request) { - String gatewayUrl = "http://222.218.10.217:7890/open/trade/wx/jsapi/precreate"; + String gatewayUrl = PayApiConstants.pay_url; try { String jsonBody = JSONUtil.toJsonStr(request); @@ -115,7 +116,7 @@ public class PaymentApplicationService { * @param money 退款金额,单位:分 */ public RefundVO refund(String bizId, String appKey, String orderId, String uid, String reason, int money) throws Exception { - String url = "http://222.218.10.217:7890/open/trade/refund"; + String url = PayApiConstants.refund_url; JSONObject bizContent = new JSONObject(); bizContent.set("userId", uid); bizContent.set("bizId", bizId); @@ -129,7 +130,8 @@ public class PaymentApplicationService { params.put("timestamp", String.valueOf(System.currentTimeMillis())); params.put("version", "1.0"); params.put("nonce_str", UUID.randomUUID().toString()); - params.put("biz_content", URLUtil.encode(JSONUtil.toJsonStr(bizContent))); + params.put("biz_content", URLEncoder.encode(JSONUtil.toJsonStr(bizContent), StandardCharsets.UTF_8.name())); + log.info("退款请求参数:{}", JSONUtil.toJsonStr(params)); params.put("sign", SignUtils.openSign(appKey, params)); StringBuilder sb = new StringBuilder(); for (String key : params.keySet()) { @@ -202,8 +204,8 @@ public class PaymentApplicationService { String orderNO = bizContent.getBizOrderId(); if (StringUtils.isBlank(orderNO)) { - res.put("callback_code", 1); - res.put("callback_msg", "缺少退款订单ID"); + res.set("callback_code", 1); + res.set("callback_msg", "缺少退款订单ID"); return JSONUtil.toJsonStr(res); } synchronized (LOCKER) {