退款调试
This commit is contained in:
57
api/src/test/java/com/sv/wx/WxServiceTest.java
Normal file
57
api/src/test/java/com/sv/wx/WxServiceTest.java
Normal 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));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user