yanghui
2022-11-17 c2dcf4d9ee2b576603514285b45b06c87f7bc4ea
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/utlis/WxPayUtils.java
@@ -1,10 +1,12 @@
package com.panzhihua.common.utlis;
import java.math.BigDecimal;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
import com.panzhihua.common.utlis.wx.WXPayUtil;
import org.json.XML;
import com.alibaba.fastjson.JSON;
@@ -138,4 +140,31 @@
        return result.toJSONString();
    }
    public static String refund(String appid,String mchId,String orderNo,BigDecimal totalFee,BigDecimal refundFee,String refundNo,Boolean isTest) throws Exception {
        //创建请求地址
        String url = PayCpmstant.REFUND_URL;
        Map<String, String> paramMap = new LinkedHashMap<>();
        paramMap.put("appid",appid);
        paramMap.put("mch_id",mchId);
        paramMap.put("nonce_str", WXPayUtil.generateNonceStr());
        paramMap.put("out_refund_no",refundNo);
        paramMap.put("out_trade_no",orderNo);
        paramMap.put("refund_fee",String.valueOf(refundFee.multiply(BigDecimal.valueOf(100)).longValue()));
        paramMap.put("total_fee",String.valueOf(totalFee.multiply(BigDecimal.valueOf(100)).longValue()));
        paramMap.put("sign",WXPayUtil.generateSignature(paramMap,PayCpmstant.REFUND_KEY));
        log.info("微信退款请求参数:{},{},{},{}",url,WXPayUtil.mapToXml(paramMap),mchId,isTest);
        //接收请求返回值
        String content = HttpClientUtil.doRefund(url,WXPayUtil.mapToXml(paramMap),mchId,isTest);
        log.info("微信退款返回字符串:{}",content);
        Map<String, String> resultMap = WXPayUtil.xmlToMap(content);
        if (PayCpmstant.RETURN_CODE.equals(resultMap.get(PayCpmstant.RETURN_CODE_CODE))
                && PayCpmstant.RETURN_CODE.equals(resultMap.get(PayCpmstant.RESULT_CODE_CODE))) {
            log.info("调用微信退款申请接口成功");
            return JSONObject.toJSONString(resultMap);
        }else{
            log.error("调用微信退款申请接口失败");
            return "";
        }
    }
}