项目中抽出来的,改改就能用。
public HttpResult refundAfterSaleOrder(TCourseOrder courseOrder) throws WxPayException {
if (courseRefund(courseOrder)){ //退款成功
courseOrderLogRepository.save(TCourseOrderLog.builder() //记录订单操作日志
.orderId(courseOrder.getOrderId())
.createTime(new Date())
.gkId(courseOrder.getGkId())
.scUserId(courseOrder.getScUserId())
.courseType(courseOrder.getCourseType())
.remark("平台退款")
.delFlag(0)
.build());
return HttpResult.ok();
}else {
return HttpResult.build(6002,"数据操作失败");
}
}
private boolean courseRefund(TCourseOrder courseOrder) {
String reason = "平台退款";
String moneyTmp = courseOrder.getPayMoney()
.multiply(new BigDecimal("100")).stripTrailingZeros().toPlainString();
Integer amountMoney = Integer.parseInt(moneyTmp);
WxPayRefundRequest.WxPayRefundRequestBuilder builder = WxPayRefundRequest.newBuilder();
WxPayRefundRequest refundRequest = builder
.transactionId(courseOrder.getWxTransactionId())
.outRefundNo(courseOrder.getOrderId())
.totalFee(amountMoney)
.refundFee(amountMoney)
.refundDesc(reason).build();
refundRequest.setSignType("MD5");
//refundRequest.setNotifyUrl("https://*****/***/ListenDelCourseMarketRefund"); //监听退款回调通知
try {
WxStoreAndCoachPayConfiguration sc = new WxStoreAndCoachPayConfiguration();
WxPayRefundResult wxPayRefundResult = sc.wxService().refund(refundRequest);
if (wxPayRefundResult.getResultCode().equals("SUCCESS")) {
//修改状态为退款中
courseOrderRepository.updateRefundStatusByOrderId(courseOrder.getOrderId(),courseOrder.getWxRealPayAmount());
}
return true;
} catch (WxPayException e) {
// e.getStackTrace();
e.printStackTrace();
//log.debug(e.getCustomErrorMsg());
return false;
}
}
1.需要使用依赖,需要的东西和小程序支付一样。(退款需要证书)
https://blog.csdn.net/qq_38314062/article/details/120222120?spm=1001.2014.3001.5501
<!--支付sdk依赖-->
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>wx-java-pay-spring-boot-starter</artifactId>
<version>4.0.0</version>
</dependency>