feat(payment): 添加PayPal支付配置和订单状态更新功能
- 配置PayPal沙箱环境的Client ID和密钥 - 新增updatePaymentStatus方法用于更新订单支付状态 - 新增updateOrderStatus方法用于更新订单状态 - 实现支付状态更新时同步更新订单状态逻辑 - 添加详细的日志记录和异常处理机制 - 集成MyBatis Plus查询更新订单数据
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -65,3 +65,14 @@ pingpong:
|
||||
gateway: https://sandbox-acquirer-payment.pingpongx.com
|
||||
mode: sandbox
|
||||
|
||||
# PayPal支付配置(开发环境使用沙箱)
|
||||
paypal:
|
||||
# PayPal Client ID(API密钥)
|
||||
client-id: AdGYUZpvLuHR30dybOApvM-RNB1pVKtd74SVfh-6TK52xV-1JEBddHVMCWuDdyyHri4DXd4kABBi7Icb
|
||||
# PayPal Client Secret(密钥)
|
||||
client-secret: ENblspyRmwsOU_PWFurlhEYUF5Da6aYKl0pjK4ehm7p3R5aSqvbpaF_YsIIs8v0ty1c9WJu15XP-Fe_1
|
||||
# 环境模式:sandbox(沙箱)或 production(生产)
|
||||
mode: sandbox
|
||||
# 是否启用PayPal支付
|
||||
enabled: true
|
||||
|
||||
|
||||
Reference in New Issue
Block a user