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.getOutTradeNo()); 
 | 
        request.setOutRefundNo(withdrawalOrders.getId().toString()); 
 | 
        request.setSubMchid(WxMiniConfig.wxProperties.getSubMchId()); 
 | 
        request.setNotifyUrl(WxMiniConfig.wxProperties.getRefundNotifyUrl()); 
 | 
        AmountReq amountReq = new AmountReq(); 
 | 
        amountReq.setTotal(1L);//withdrawalOrders.getAmount()); 
 | 
        amountReq.setRefund(1L);//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(),"对不起,退款申请失败!"); 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
} 
 |