package com.doumee.config.wx;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.doumee.biz.system.SystemDictDataBiz;
|
import com.doumee.core.constants.Constants;
|
import com.doumee.core.constants.ResponseStatus;
|
import com.doumee.core.exception.BusinessException;
|
import com.doumee.core.utils.DateUtil;
|
import com.doumee.core.utils.HttpsUtil;
|
import com.doumee.dao.business.WithdrawalOrdersMapper;
|
import com.doumee.dao.business.model.Orders;
|
import com.doumee.dao.business.model.WithdrawalOrders;
|
import com.doumee.dao.system.model.SystemDictData;
|
import com.wechat.pay.java.service.refund.model.AmountReq;
|
import com.wechat.pay.java.service.refund.model.CreateRequest;
|
import com.wechat.pay.java.service.refund.model.QueryByOutRefundNoRequest;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.io.ByteArrayInputStream;
|
import java.io.File;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.math.BigDecimal;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.Map;
|
import java.util.Objects;
|
|
/**
|
* 微信小程序-公共方法
|
*/
|
@Service
|
@Slf4j
|
public class WxMiniUtilService {
|
|
@Autowired
|
private WithdrawalOrdersMapper withdrawalOrdersMapper;
|
|
@Autowired
|
private SystemDictDataBiz systemDictDataBiz;
|
|
@Autowired
|
private WxPayProperties wxPayProperties;
|
|
@Transactional(rollbackFor = {BusinessException.class,Exception.class})
|
public boolean wxRefund(WithdrawalOrders withdrawalOrders,Orders orders) {
|
// 发送退款请求
|
withdrawalOrders.setCreateTime(new Date());
|
withdrawalOrdersMapper.insert(withdrawalOrders);
|
CreateRequest request = new CreateRequest();
|
request.setOutTradeNo(orders.getCode());
|
request.setOutRefundNo(withdrawalOrders.getId().toString());
|
request.setSubMchid(WxMiniConfig.wxProperties.getSubMchId());
|
request.setNotifyUrl(WxMiniConfig.wxProperties.getRefundNotifyUrl());
|
AmountReq amountReq = new AmountReq();
|
amountReq.setTotal(withdrawalOrders.getAmount());
|
amountReq.setRefund(withdrawalOrders.getAmount());
|
amountReq.setCurrency("CNY");
|
request.setAmount(amountReq);
|
try {
|
log.error("=============="+JSONObject.toJSONString(request));
|
com.wechat.pay.java.service.refund.model.Refund response = WxMiniConfig.refundService.create(request);
|
log.error("=============="+JSONObject.toJSONString(response));
|
if ("SUCCESS".equals(response.getStatus().name())
|
|| "PROCESSING".equals(response.getStatus().name()) ) {
|
return true;
|
}else{
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,退款申请失败哦!");
|
}
|
}catch (Exception e){
|
e.printStackTrace();
|
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,退款申请失败!");
|
}
|
}
|
|
|
|
}
|