| 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(),"对不起,退款申请失败!"); | 
|         } | 
|     } | 
|   | 
|   | 
|   | 
| } |