Merge remote-tracking branch 'origin/main'

This commit is contained in:
attiya 2025-05-20 14:25:18 +08:00
commit 5aca99853c
16 changed files with 396 additions and 33 deletions

View File

@ -63,6 +63,14 @@ public interface OrdersFeignClient {
@GetMapping("userOrders/refund")
JsonResult<?> refund(@RequestParam("orderId")Long orderId);
/**
* 订单发起退款申请
* @param orderId 订单ID
* @return @ {@code 200} 成功{@code 500} 失败
*/
@GetMapping("userOrders/refundApply")
JsonResult<?> refundApply(@RequestParam("orderId")Long orderId);
/**
* 订单退款完成
* @param orderId 订单ID
@ -70,4 +78,20 @@ public interface OrdersFeignClient {
*/
@GetMapping("userOrders/doneRefund")
JsonResult<?> doneRefund(@RequestParam("orderId")Long orderId);
/**
* 订单退款驳回
* @param orderId 订单ID
* @return @ {@code 200} 成功{@code 500} 失败
*/
@GetMapping("userOrders/rejectRefund")
JsonResult<?> rejectRefund(@RequestParam("orderId")Long orderId);
/**
* 订单退款失败
* @param orderId 订单ID
* @return @ {@code 200} 成功{@code 500} 失败
*/
@GetMapping("userOrders/failRefund")
JsonResult<?> failRefund(@RequestParam("orderId")Long orderId);
}

View File

@ -150,6 +150,18 @@ public class EbikeUserOrdersController {
return JsonResult.success();
}
/**
* 订单退款申请
*
* @param orderId 订单ID
* @ {@code 200} 添加成功{@code 500} 添加失败
*/
@GetMapping("refundApply")
public JsonResult<?> refundApply(@RequestParam("orderId")Long orderId) {
userOrdersService.refundApply(orderId);
return JsonResult.success();
}
/**
* 订单退款
*
@ -174,6 +186,30 @@ public class EbikeUserOrdersController {
return JsonResult.success();
}
/**
* 订单退款驳回
*
* @param orderId 订单ID
* @ {@code 200} 添加成功{@code 500} 添加失败
*/
@GetMapping("rejectRefund")
public JsonResult<?> rejectRefund(@RequestParam("orderId")Long orderId) {
userOrdersService.rejectRefund(orderId);
return JsonResult.success();
}
/**
* 订单退款失败
*
* @param orderId 订单ID
* @ {@code 200} 添加成功{@code 500} 添加失败
*/
@GetMapping("failRefund")
public JsonResult<?> failRefund(@RequestParam("orderId")Long orderId) {
userOrdersService.failRefund(orderId);
return JsonResult.success();
}
/**
* 检查车辆是否在运营区内

View File

@ -35,4 +35,16 @@ public interface OrderStatus {
* 已退款
*/
int REFUNDED = 5;
/**
* 退款申请中
*/
int REFUND_APPLYING = 6;
/**
* 退款申请驳回
*/
int REFUND_REJECTED = 7;
/**
* 退款失败
*/
int REFUND_FAILED = 8;
}

View File

@ -87,6 +87,12 @@ public interface UserOrdersService extends IService<EbikeUserOrders> {
*/
void payment(ResFeignOrderPaymentDto paymentDto);
/**
* 订单发起退款
* @param orderId 订单ID
*/
void refundApply(Long orderId);
/**
* 订单退款
* @param orderId 订单ID
@ -99,6 +105,18 @@ public interface UserOrdersService extends IService<EbikeUserOrders> {
*/
void doneRefund(Long orderId);
/**
* 订单退款驳回
* @param orderId 订单ID
*/
void rejectRefund(Long orderId);
/**
* 订单退款失败
* @param orderId 订单ID
*/
void failRefund(Long orderId);
/**
* 获取订单详情
* @param orderId 订单id

View File

@ -302,6 +302,16 @@ public class UserOrdersServiceImpl extends ServiceImpl<UserOrdersMapper, EbikeUs
return redisUtil.isPointInParking(resGpsDto.getLongitude(), resGpsDto.getLatitude(), regionDto.getOperationRegionId());
}
@Override
public void refundApply(Long orderId) {
QueryWrapper queryWrapper = QueryWrapper.create()
.where(EBIKE_USER_ORDERS.ORDER_ID.eq(orderId))
.where(EBIKE_USER_ORDERS.STATUS.eq(OrderStatus.PAID));
EbikeUserOrders userOrders = this.mapper.selectOneByQuery(queryWrapper);
userOrders.setStatus(OrderStatus.REFUND_APPLYING);
this.mapper.update(userOrders);
}
@Override
public void refund(Long orderId) {
QueryWrapper queryWrapper = QueryWrapper.create()
@ -322,6 +332,26 @@ public class UserOrdersServiceImpl extends ServiceImpl<UserOrdersMapper, EbikeUs
this.mapper.update(userOrders);
}
@Override
public void rejectRefund(Long orderId) {
QueryWrapper queryWrapper = QueryWrapper.create()
.where(EBIKE_USER_ORDERS.ORDER_ID.eq(orderId))
.where(EBIKE_USER_ORDERS.STATUS.eq(OrderStatus.REFUNDING));
EbikeUserOrders userOrders = this.mapper.selectOneByQuery(queryWrapper);
userOrders.setStatus(OrderStatus.REFUND_REJECTED);
this.mapper.update(userOrders);
}
@Override
public void failRefund(Long orderId) {
QueryWrapper queryWrapper = QueryWrapper.create()
.where(EBIKE_USER_ORDERS.ORDER_ID.eq(orderId))
.where(EBIKE_USER_ORDERS.STATUS.eq(OrderStatus.REFUNDING));
EbikeUserOrders userOrders = this.mapper.selectOneByQuery(queryWrapper);
userOrders.setStatus(OrderStatus.REFUND_FAILED);
this.mapper.update(userOrders);
}
@Override
public RspOrderDetailsInfo orderDetailsInfo(Long orderId) {
return this.mapper.selectOneWithRelationsByIdAs(orderId, RspOrderDetailsInfo.class);

View File

@ -68,12 +68,12 @@ public class EbikeWxPaymentController {
* 退款申请
*
* @param refundDto 退款信息
* @return 退款成功返回true否则返回false
* @return 退款成功返回主键id否则返回失败
*/
@PostMapping("/refundApply")
public JsonResult<?> refundApply(@RequestBody EbikeRefundDto refundDto) {
String r = wxPayService.refundApply(refundDto.getOrderId(), refundDto.getReason());
return r == null?JsonResult.failed("退款失败"):JsonResult.success(r);
return r == null?JsonResult.failed("退款申请失败"):JsonResult.success((Object) r);
}
/**
@ -85,12 +85,7 @@ public class EbikeWxPaymentController {
@PostMapping("/refund")
public JsonResult<?> refund(@RequestBody ReqRefundDto refundDto) {
HandleNotifyResult r = wxPayService.refund(refundDto);
if (r.isSuccess())
return JsonResult.success();
JSONObject error = JSONObject.parseObject(r.getMessage());
if (error==null)
return JsonResult.failed(r.getMessage());
return JsonResult.failed("退款失败", error);
return r.isSuccess()?JsonResult.success(true):JsonResult.failed(r.getMessage());
}
/**

View File

@ -17,7 +17,7 @@ import java.util.List;
public class ReqRefundDto {
/**
* 退款单号
* 主键id
*/
private String refundId;

View File

@ -17,7 +17,7 @@ import java.util.List;
public class ReqRefundProcessDto {
/**
* 退款单号
* 主键id
*/
private String refundId;

View File

@ -76,4 +76,19 @@ public class ResApplyRefundDto {
*/
private String applicant;
/**
* 骑行设备编号
*/
private String ebikeCode;;
/**
* 骑行开始时间
*/
private LocalDateTime startTime;
/**
* 骑行开始时间
*/
private LocalDateTime endTime;
}

View File

@ -86,4 +86,19 @@ public class ResCloseRefundDto {
*/
private String applicant;
/**
* 骑行设备编号
*/
private String ebikeCode;;
/**
* 骑行开始时间
*/
private LocalDateTime startTime;
/**
* 骑行开始时间
*/
private LocalDateTime endTime;
}

View File

@ -81,4 +81,19 @@ public class ResHandleRefundDto {
*/
private String applicant;
/**
* 骑行设备编号
*/
private String ebikeCode;;
/**
* 骑行开始时间
*/
private LocalDateTime startTime;
/**
* 骑行开始时间
*/
private LocalDateTime endTime;
}

View File

@ -106,4 +106,19 @@ public class ResProcessedRefundDto {
*/
private String applicant;
/**
* 骑行设备编号
*/
private String ebikeCode;;
/**
* 骑行开始时间
*/
private LocalDateTime startTime;
/**
* 骑行开始时间
*/
private LocalDateTime endTime;
}

View File

@ -34,6 +34,11 @@ public class EbikeRefund implements Serializable {
@Id
private String refundId;
/**
* 退款单号
*/
private String refundOrder;
/**
* 骑行订单号
*/
@ -116,4 +121,14 @@ public class EbikeRefund implements Serializable {
*/
private LocalDateTime processTime ;
/**
* 审核人
*/
private String reviewOperator ;
/**
* 退款人
*/
private String refundOperator ;
}

View File

@ -0,0 +1,136 @@
package com.cdzy.payment.model.entity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 用户订单表 实体类
*
* @author attiya
* @since 2025-03-28
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("ebike_user_orders")
public class EbikeUserOrders implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 分布式ID雪花算法或业务前缀+序列
*/
@Id
private Long orderId;
/**
* 用户ID关联用户表
*/
private String userId;
private String bikeId;
/**
* 订单类型1-单次骑行 2-骑行卡购买 3-会员卡续费
*/
private Integer orderType;
/**
* 状态0-进行中 1-已取消 2-待支付 3-已支付 4-退款中 5-已退款
*/
@Column(onInsertValue = "0")
private Integer status;
/**
* 订单总金额单位
*/
private BigDecimal totalAmount;
/**
* 实付金额扣除卡券优惠后
*/
private BigDecimal actualAmount;
/**
* 骑行开始时间仅骑行订单有效
*/
private LocalDateTime startTime;
/**
* 骑行结束时间仅骑行订单有效
*/
private LocalDateTime endTime;
/**
* 支付成功时间
*/
private LocalDateTime paymentTime;
/**
* 支付方式wechat/alipay/balance
*/
private String paymentMethod;
/**
* 使用卡券ID集合JSON数组
*/
private String couponIds;
/**
* 优惠明细结构化存储便于对账
*/
private String discountDetails;
/**
* 骑行设备编号仅骑行订单有效
*/
private String bikeCode;
/**
* 地理位置GeoHash编码用于区域优惠分析
*/
private String geoHash;
/**
* 创建时间
*/
@Column(onInsertValue = "now()")
private LocalDateTime createdAt;
/**
* 更新时间
*/
@Column(onUpdateValue = "now()")
private LocalDateTime updatedAt;
/**
* 骑行起始点
*/
private String ridePoint;
/**
* 骑行结束点
*/
private String returnPoint;
/**
* 0-未临时锁车 -1临时锁车
*/
private Integer tempLock;
@Column(isLogicDelete = true,onInsertValue = "0")
private Integer isDelete;
}

View File

@ -20,6 +20,7 @@ import java.util.List;
import static com.cdzy.payment.model.entity.table.EbikePaymentTableDef.EBIKE_PAYMENT;
import static com.cdzy.payment.model.entity.table.EbikeRefundTableDef.EBIKE_REFUND;
import static com.cdzy.payment.model.entity.table.EbikeUserOrdersTableDef.EBIKE_USER_ORDERS;
import static com.cdzy.payment.model.entity.table.EbikeUserTableDef.EBIKE_USER;
import static com.cdzy.payment.model.enums.RefundProcessState.*;
import static com.mybatisflex.core.constant.FuncName.*;
@ -41,7 +42,7 @@ public class EbikeRefundServiceImpl extends ServiceImpl<EbikeRefundMapper, Ebike
boolean r = save(ebikeRefund);
// 同步发起退款
if(r)
ordersFeignClient.refund(Long.valueOf(ebikeRefund.getOrderId()));
ordersFeignClient.refundApply(Long.valueOf(ebikeRefund.getOrderId()));
return r;
}
@ -61,21 +62,24 @@ public class EbikeRefundServiceImpl extends ServiceImpl<EbikeRefundMapper, Ebike
// create_time到排序取最新的一条
QueryWrapper query = QueryWrapper.create()
.where(EBIKE_REFUND.ORDER_ID.eq(orderId))
.orderBy(EBIKE_REFUND.CREATE_TIME.desc())
.limit(1);
.orderBy(EBIKE_REFUND.CREATE_TIME.desc());
return getOne(query);
}
@Override
public Boolean updateRefundStatus(Refund refund) {
EbikeRefund ebikeRefund = new EbikeRefund();
ebikeRefund.setRefundId(refund.getOutRefundNo());
EbikeRefund ebikeRefund = getByOrderId(refund.getOutTradeNo());
ebikeRefund.setStatus(String.valueOf(refund.getStatus().ordinal()));
if (Status.SUCCESS.equals(refund.getStatus())) {
ebikeRefund.setRefundTime(LocalDateTime.now());
ebikeRefund.setRefund(refund.getAmount().getRefund().doubleValue() / 100.0);
// 退款成功 更新订单状态
ordersFeignClient.doneRefund(Long.valueOf(refund.getOutTradeNo()));
}
long orderId = Long.parseLong(refund.getOutTradeNo());
// 更新订单退款状态
switch (refund.getStatus()){
case PROCESSING, CLOSED -> ordersFeignClient.refund(orderId);
case SUCCESS -> ordersFeignClient.doneRefund(orderId);
case ABNORMAL -> ordersFeignClient.failRefund(orderId);
}
return updateById(ebikeRefund);
}
@ -91,10 +95,12 @@ public class EbikeRefundServiceImpl extends ServiceImpl<EbikeRefundMapper, Ebike
.when(PayMethod.balance.name()).then("余额").end().as("pay_method"),
EBIKE_PAYMENT.PAYMENT_TIME.as("pay_time"), EBIKE_REFUND.REASON.as("apply_reason"),
QueryMethods.case_(EBIKE_REFUND.SOURCE).when("0").then("用户")
.when("1").then("客服").end().as("source"), EBIKE_USER.NICKNAME.as("applicant")
.when("1").then("客服").end().as("source"), EBIKE_USER.NICKNAME.as("applicant"),
EBIKE_USER_ORDERS.BIKE_CODE.as("ebike_code"),EBIKE_USER_ORDERS.START_TIME.as("start_time"), EBIKE_USER_ORDERS.END_TIME.as("end_time")
)
.leftJoin(EBIKE_PAYMENT).on(EBIKE_PAYMENT.ORDER_ID.eq(EBIKE_REFUND.ORDER_ID))
.leftJoin(EBIKE_USER).on(EBIKE_USER.USER_ID.eq(EBIKE_PAYMENT.USER_ID))
.leftJoin(EBIKE_USER_ORDERS).on(EBIKE_USER_ORDERS.ORDER_ID.eq(EBIKE_REFUND.ORDER_ID))
.where(EBIKE_REFUND.PROCESS_STATE.eq(String.valueOf(applying.ordinal())));
if(refundDto.getPhone() != null && !refundDto.getPhone().isEmpty())
query.and(EBIKE_USER.MOBILE.like(refundDto.getPhone()));
@ -124,10 +130,12 @@ public class EbikeRefundServiceImpl extends ServiceImpl<EbikeRefundMapper, Ebike
.when("2").then("线下退款").end().as("refund_method"),
EBIKE_PAYMENT.PAYMENT_TIME.as("pay_time"), EBIKE_REFUND.REASON.as("apply_reason"),
QueryMethods.case_(EBIKE_REFUND.SOURCE).when("0").then("用户")
.when("1").then("客服").end().as("source"), EBIKE_USER.NICKNAME.as("applicant")
.when("1").then("客服").end().as("source"), EBIKE_USER.NICKNAME.as("applicant"),
EBIKE_USER_ORDERS.BIKE_CODE.as("ebike_code"),EBIKE_USER_ORDERS.START_TIME.as("start_time"), EBIKE_USER_ORDERS.END_TIME.as("end_time")
)
.leftJoin(EBIKE_PAYMENT).on(EBIKE_PAYMENT.ORDER_ID.eq(EBIKE_REFUND.ORDER_ID))
.leftJoin(EBIKE_USER).on(EBIKE_USER.USER_ID.eq(EBIKE_PAYMENT.USER_ID))
.leftJoin(EBIKE_USER_ORDERS).on(EBIKE_USER_ORDERS.ORDER_ID.eq(EBIKE_REFUND.ORDER_ID))
.where(EBIKE_REFUND.PROCESS_STATE.eq(String.valueOf(processing.ordinal())));
if(refundDto.getPhone() != null && !refundDto.getPhone().isEmpty())
query.and(EBIKE_USER.MOBILE.like(refundDto.getPhone()));
@ -162,10 +170,12 @@ public class EbikeRefundServiceImpl extends ServiceImpl<EbikeRefundMapper, Ebike
.when("2").then("线下退款").end().as("refund_method"),
EBIKE_PAYMENT.PAYMENT_TIME.as("pay_time"), EBIKE_REFUND.REASON.as("apply_reason"),
QueryMethods.case_(EBIKE_REFUND.SOURCE).when("0").then("用户")
.when("1").then("客服").end().as("source"), EBIKE_USER.NICKNAME.as("applicant")
.when("1").then("客服").end().as("source"), EBIKE_USER.NICKNAME.as("applicant"),
EBIKE_USER_ORDERS.BIKE_CODE.as("ebike_code"),EBIKE_USER_ORDERS.START_TIME.as("start_time"), EBIKE_USER_ORDERS.END_TIME.as("end_time")
)
.leftJoin(EBIKE_PAYMENT).on(EBIKE_PAYMENT.ORDER_ID.eq(EBIKE_REFUND.ORDER_ID))
.leftJoin(EBIKE_USER).on(EBIKE_USER.USER_ID.eq(EBIKE_PAYMENT.USER_ID))
.leftJoin(EBIKE_USER).on(EBIKE_USER.USER_ID.eq(EBIKE_PAYMENT.USER_ID))
.leftJoin(EBIKE_USER_ORDERS).on(EBIKE_USER_ORDERS.ORDER_ID.eq(EBIKE_REFUND.ORDER_ID))
.where(EBIKE_REFUND.PROCESS_STATE.eq(String.valueOf(processed.ordinal())));
if(refundDto.getPhone() != null && !refundDto.getPhone().isEmpty())
query.and(EBIKE_USER.MOBILE.like(refundDto.getPhone()));
@ -192,10 +202,12 @@ public class EbikeRefundServiceImpl extends ServiceImpl<EbikeRefundMapper, Ebike
.when(PayMethod.balance.name()).then("余额").end().as("pay_method"),
EBIKE_PAYMENT.PAYMENT_TIME.as("pay_time"), EBIKE_REFUND.REASON.as("apply_reason"),
QueryMethods.case_(EBIKE_REFUND.SOURCE).when("0").then("用户")
.when("1").then("客服").end().as("source"), EBIKE_USER.NICKNAME.as("applicant")
.when("1").then("客服").end().as("source"), EBIKE_USER.NICKNAME.as("applicant"),
EBIKE_USER_ORDERS.BIKE_CODE.as("ebike_code"),EBIKE_USER_ORDERS.START_TIME.as("start_time"), EBIKE_USER_ORDERS.END_TIME.as("end_time")
)
.leftJoin(EBIKE_PAYMENT).on(EBIKE_PAYMENT.ORDER_ID.eq(EBIKE_REFUND.ORDER_ID))
.leftJoin(EBIKE_USER).on(EBIKE_USER.USER_ID.eq(EBIKE_PAYMENT.USER_ID))
.leftJoin(EBIKE_USER_ORDERS).on(EBIKE_USER_ORDERS.ORDER_ID.eq(EBIKE_REFUND.ORDER_ID))
.where(EBIKE_REFUND.PROCESS_STATE.eq(String.valueOf(closed.ordinal())));
if(refundDto.getPhone() != null && !refundDto.getPhone().isEmpty())
query.and(EBIKE_USER.MOBILE.like(refundDto.getPhone()));

View File

@ -359,18 +359,17 @@ public class WxPayServiceImpl implements WxPayService {
String outRefundNo = StringUtils.generateSnowflakeId("refundId");
ebikeRefund = new EbikeRefund();
ebikeRefund.setCreateTime(LocalDateTime.now());
ebikeRefund.setRefundId(outRefundNo);
ebikeRefund.setRefundOrder(outRefundNo);
ebikeRefund.setOrderId(outTradeNo);
ebikeRefund.setCurrency(ebikePayment.getCurrency());
ebikeRefund.setTotal(ebikePayment.getCostPrice());
ebikeRefund.setRefundApply(ebikePayment.getTotal());
ebikeRefund.setTransactionId(transactionId);
ebikeRefund.setReason(reason);
ebikeRefund.setStatus(String.valueOf(Status.PROCESSING.ordinal()));
ebikeRefund.setProcessState(String.valueOf(RefundProcessState.applying.ordinal()));
ebikeRefund.setSource(String.valueOf(RefoundApplySource.user.ordinal()));
ebikeRefundService.saveRefundResult(ebikeRefund);
return outRefundNo;
return ebikeRefund.getRefundId();
}
@Override
@ -387,6 +386,11 @@ public class WxPayServiceImpl implements WxPayService {
if (String.valueOf(RefundProcessState.processing.ordinal()).equals(processDto.getOperate())) {
ebikeRefund.setRefund(ebikeRefund.getRefundApply());
ebikeRefund.setRefundMethod(processDto.getMethod());
// 更新订单状态
ordersFeignClient.refund(Long.valueOf(ebikeRefund.getOrderId()));
}else if (String.valueOf(RefundProcessState.closed.ordinal()).equals(processDto.getOperate())) {
// 更新订单状态
ordersFeignClient.rejectRefund(Long.valueOf(ebikeRefund.getOrderId()));
}
return ebikeRefundService.updateById(ebikeRefund);
}
@ -406,6 +410,23 @@ public class WxPayServiceImpl implements WxPayService {
result_.setMessage(String.format("{%s}退款申请不存在", refundDto.getRefundId()));
return result_;
}
// 检查退款状态
if (String.valueOf(Status.SUCCESS.ordinal()).equals(ebikeRefund.getStatus())) {
log.error("退款refund失败{} 退款已经成功,不能重复退款", refundDto.getRefundId());
result_.setMessage(String.format("{%s}退款已经成功,不能重复退款", refundDto.getRefundId()));
return result_;
}
if (String.valueOf(Status.PROCESSING.ordinal()).equals(ebikeRefund.getStatus())) {
log.error("退款refund失败{} 退款中,不能重复退款", refundDto.getRefundId());
result_.setMessage(String.format("{%s}退款中,不能重复退款", refundDto.getRefundId()));
return result_;
}
if (String.valueOf(Status.CLOSED.ordinal()).equals(ebikeRefund.getStatus())||
String.valueOf(Status.ABNORMAL.ordinal()).equals(ebikeRefund.getStatus())) {
//重新发起
String new_order = StringUtils.generateSnowflakeId("refundId");
ebikeRefund.setRefundOrder(new_order);
}
// 查询支付记录
String outTradeNo = ebikeRefund.getOrderId();
EbikePayment ebikePayment = ebikePaymentService.getByOrderId(outTradeNo);
@ -418,7 +439,7 @@ public class WxPayServiceImpl implements WxPayService {
CreateRequest request = new CreateRequest();
request.setTransactionId(transactionId);
request.setOutTradeNo(outTradeNo);
request.setOutRefundNo(ebikeRefund.getRefundId());
request.setOutRefundNo(ebikeRefund.getRefundOrder());
request.setReason(ebikeRefund.getReason());
request.setNotifyUrl(wxPayConfig.getRefundNotifyUrl());
AmountReq amountReq = new AmountReq();
@ -435,12 +456,11 @@ public class WxPayServiceImpl implements WxPayService {
ebikeRefund.setTotal(amount.getTotal());
ebikeRefund.setStatus(String.valueOf(result.getStatus().ordinal()));
ebikeRefund.setCurrency(amount.getCurrency());
if (Status.SUCCESS.equals(result.getStatus())) {
ebikeRefund.setRefund(result.getAmount().getRefund().doubleValue() / 100.0);
ebikeRefund.setRefundTime(LocalDateTime.now());
ebikeRefund.setRemark(refundDto.getRemark());
ebikeRefund.setRefundTransactionId(result.getRefundId());
}
ebikeRefund.setRefund(result.getAmount().getRefund().doubleValue() / 100.0);
ebikeRefund.setRefundTime(LocalDateTime.now());
ebikeRefund.setRemark(refundDto.getRemark());
ebikeRefund.setProcessState(String.valueOf(RefundProcessState.processed.ordinal()));
ebikeRefund.setRefundTransactionId(result.getRefundId());
ebikeRefundService.updateById(ebikeRefund);
result_.setSuccess(true);
result_.setMessage("退款成功");
@ -451,7 +471,12 @@ public class WxPayServiceImpl implements WxPayService {
return result_;
} catch (Exception e) {
String err = logError("退款refund", e);
result_.setMessage(err);
try {
JSONObject json = JSON.parseObject(err);
result_.setMessage(json.getString("message"));
}catch (Exception ex) {
result_.setMessage(err);
}
return result_;
}
}