退款调试
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,订单号查询订单
|
* 根据用户Id,订单号查询订单
|
||||||
*/
|
*/
|
||||||
Order findOrderSn(String orderSn,Integer memberId){
|
public Order findOrderSn(String orderSn,Integer memberId){
|
||||||
return orderMapper.findOrderSn( orderSn, 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
|
@Transactional
|
||||||
public void notifyRefund(Map<String,String> params,Integer platformId ) throws IOException {
|
public void notifyRefund(Map<String,String> params,Integer platformId ) throws IOException {
|
||||||
logger.info("微信退款回调参数:" + JsonMapper.nonNullMapper().toJson(params));
|
logger.info("微信退款回调参数:" + JsonMapper.nonNullMapper().toJson(params));
|
||||||
|
|||||||
Reference in New Issue
Block a user