feat(payment): 添加PayPal支付配置和订单状态更新功能

- 配置PayPal沙箱环境的Client ID和密钥
- 新增updatePaymentStatus方法用于更新订单支付状态
- 新增updateOrderStatus方法用于更新订单状态
- 实现支付状态更新时同步更新订单状态逻辑
- 添加详细的日志记录和异常处理机制
- 集成MyBatis Plus查询更新订单数据
This commit is contained in:
2025-12-23 10:18:15 +08:00
parent 84f74861bb
commit 13cf90d54b
3 changed files with 70 additions and 0 deletions

View File

@@ -28,5 +28,20 @@ public interface CustomerOrderService {
* @return 订单响应
*/
CustomerOrderResponseDTO getOrderById(Long id);
/**
* 更新订单支付状态
* @param orderNo 订单号
* @param paymentStatus 支付状态
* @param paymentOrderId 支付订单ID可选
*/
void updatePaymentStatus(String orderNo, String paymentStatus, Long paymentOrderId);
/**
* 更新订单状态
* @param orderNo 订单号
* @param status 订单状态
*/
void updateOrderStatus(String orderNo, String status);
}

View File

@@ -137,5 +137,49 @@ public class CustomerOrderServiceImpl implements CustomerOrderService {
BeanUtils.copyProperties(order, response);
return response;
}
@Override
public void updatePaymentStatus(String orderNo, String paymentStatus, Long paymentOrderId) {
log.info("更新订单支付状态,订单号: {}, 支付状态: {}, 支付订单ID: {}",
orderNo, paymentStatus, paymentOrderId);
LambdaQueryWrapper<CustomerOrder> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CustomerOrder::getOrderNo, orderNo);
CustomerOrder order = customerOrderMapper.selectOne(queryWrapper);
if (order == null) {
log.warn("订单不存在,订单号: {}", orderNo);
throw new BusinessException(ResultCode.DATA_NOT_FOUND, "订单不存在");
}
order.setPaymentStatus(paymentStatus);
if (paymentOrderId != null) {
order.setPaymentOrderId(paymentOrderId);
}
// 如果支付成功,更新订单状态为已支付
if ("PAID".equals(paymentStatus)) {
order.setStatus("PAID");
}
customerOrderMapper.updateById(order);
log.info("订单支付状态更新成功,订单号: {}", orderNo);
}
@Override
public void updateOrderStatus(String orderNo, String status) {
log.info("更新订单状态,订单号: {}, 状态: {}", orderNo, status);
LambdaQueryWrapper<CustomerOrder> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(CustomerOrder::getOrderNo, orderNo);
CustomerOrder order = customerOrderMapper.selectOne(queryWrapper);
if (order == null) {
log.warn("订单不存在,订单号: {}", orderNo);
throw new BusinessException(ResultCode.DATA_NOT_FOUND, "订单不存在");
}
order.setStatus(status);
customerOrderMapper.updateById(order);
log.info("订单状态更新成功,订单号: {}", orderNo);
}
}

View File

@@ -65,3 +65,14 @@ pingpong:
gateway: https://sandbox-acquirer-payment.pingpongx.com
mode: sandbox
# PayPal支付配置开发环境使用沙箱
paypal:
# PayPal Client IDAPI密钥
client-id: AdGYUZpvLuHR30dybOApvM-RNB1pVKtd74SVfh-6TK52xV-1JEBddHVMCWuDdyyHri4DXd4kABBi7Icb
# PayPal Client Secret密钥
client-secret: ENblspyRmwsOU_PWFurlhEYUF5Da6aYKl0pjK4ehm7p3R5aSqvbpaF_YsIIs8v0ty1c9WJu15XP-Fe_1
# 环境模式sandbox沙箱或 production生产
mode: sandbox
# 是否启用PayPal支付
enabled: true