退款调试

This commit is contained in:
2023-12-25 08:00:51 +08:00
parent df7eefc754
commit 1a7216a2cc
3 changed files with 99 additions and 1 deletions

View File

@@ -0,0 +1,57 @@
package com.sv.wx;
import com.WeiXinApplication;
import com.sv.dto.api.MemberLessonTicketDetailDTO;
import com.sv.entity.MemberRefund;
import com.sv.entity.Order;
import com.sv.mapper.MemberRefundMapper;
import com.sv.service.api.OrderService;
import com.sv.service.api.config.WechatPayService;
import com.ydd.framework.core.exception.ServiceException;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
@RunWith(SpringRunner.class)
@SpringBootTest(classes={WeiXinApplication.class})
public class WxServiceTest {
@Resource
WechatPayService wechatPayService;
@Resource
OrderService orderService;
@Resource
MemberRefundMapper memberRefundMapper;
@Test
public void refund(){
// wechatPayService.createUnifiedOrder("testlmq20231224",new BigDecimal(0.02),"127.0.0.1","JSAPI", 535);
// 根据orderSn查出对应订单信息
String orderSn = "231224213047442679";
Integer memberId = 535;
Order order = orderService.findOrderSn(orderSn,memberId);
if (order == null){
throw new ServiceException(com.sv.exception.api.ExceptionCodeTemplate.ORDER_ERROR);
}
MemberRefund memberRefund = new MemberRefund();
memberRefund.setMemberId(memberId);
memberRefund.setLessonId(1);
memberRefund.setMoney(order.getPrice());
// memberRefund.setMoney(new BigDecimal(0.01));
memberRefund.setOrderSn(orderSn);
memberRefund.setTransactionId(order.getTradeSn());
memberRefund.setOrderId(order.getId());
memberRefund.setOutRefundNo(orderService.createSn());//商户退款单号
memberRefund.setPlatformId(1);
memberRefundMapper.insert(memberRefund);
wechatPayService.refundInputMoney(memberRefund,new BigDecimal(0.01));
}
}

View File

@@ -156,7 +156,7 @@ public class OrderService extends BaseServiceImpl {
/**
* 根据用户Id订单号查询订单
*/
Order findOrderSn(String orderSn,Integer memberId){
public Order findOrderSn(String orderSn,Integer memberId){
return orderMapper.findOrderSn( orderSn, memberId);
}

View File

@@ -248,6 +248,47 @@ public class WechatPayService extends BaseServiceImpl {
}
}
/**
* 退款接口
*/
public void refundInputMoney(MemberRefund memberRefund,BigDecimal aMoney){
OrderPaySignResponse.WechatPayParam wechatPayParam;
try {
PayConfig payConfig = payConfigService.findKey("face");
Assert.hasText(payConfig.getCert(), "证书找不到");
String nonceStr = CommonUtils.CreateNonceStr(30);
WeChatPayHelper weChatPayHelper = new WeChatPayHelper(payConfig.getCert());
weChatPayHelper.setAppId(payConfig.getAppId());
weChatPayHelper.setMchId(payConfig.getMchId());
weChatPayHelper.setKey(payConfig.getKey());
Integer payMoney = Integer.valueOf(memberRefund.getMoney().multiply(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_HALF_UP).toString());
Integer refundMoney = Integer.valueOf(aMoney.multiply(new BigDecimal(100)).setScale(0, BigDecimal.ROUND_HALF_UP).toString());
weChatPayHelper.setParameter("notify_url", payConfig.getNotifyUrl());
logger.info("申请退款请求参数" + ToStringBuilder.reflectionToString(weChatPayHelper));
// 调用申请退款
// String notifyUrl = "https://api.smartvenue.ydd100.cn//weixin/order/refund";
OrderResponse response = weChatPayHelper.refund("",memberRefund.getOrderSn(),memberRefund.getOutRefundNo(),payMoney,refundMoney,payConfig.getCancel());
logger.info(ToStringBuilder.reflectionToString(response));
System.out.println(ToStringBuilder.reflectionToString(response));
if (response.isSuccess()) {
String refundId = response.getRefundId();
//更新‘用户退款记录表’中微信退款单号
memberRefund.setRefundId(refundId);
memberRefundService.update(memberRefund);
}else{
logger.error("返回的结果为:"+ToStringBuilder.reflectionToString(response));
throw new RuntimeException("申请退款订单创建失败,请重试!");
}
} catch (Exception e) {
e.printStackTrace();
logger.error("申请退款支持订单接口异常", e);
throw new ServiceException("");
}
}
@Transactional
public void notifyRefund(Map<String,String> params,Integer platformId ) throws IOException {
logger.info("微信退款回调参数:" + JsonMapper.nonNullMapper().toJson(params));