refactor(支付): 将支付相关URL提取到常量类中

将支付、退款等URL从硬编码改为使用常量类PayApiConstants中的常量,提高代码可维护性和可读性。同时修复退款请求参数的编码问题,确保参数正确传递。
This commit is contained in:
dzq 2025-04-08 17:56:37 +08:00
parent abd8f7aa60
commit 6f2eaf92a8
4 changed files with 38 additions and 11 deletions

View File

@ -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<CreateOrderResult> 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<GetOrdersByOpenIdDTO> 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<RefundVO> refundOrder(@PathVariable Long orderId, @RequestParam int money) {
OrderModel orderModel = orderApplicationService.loadById(orderId);

View File

@ -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";
}

View File

@ -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("");

View File

@ -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) {