package com.kmall.common.utils.wechat;
import com.alibaba.druid.support.logging.Log;
import com.alibaba.druid.support.logging.LogFactory;
import com.kmall.common.service.pay.wxpay.CommonWxPayPropertiesBuilder;
import com.kmall.common.utils.CharUtil;
import com.kmall.common.utils.MapUtils;
import com.kmall.common.utils.ResourceUtil;
import com.kmall.common.utils.XmlUtil;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.BasicHttpClientConnectionManager;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.math.MathContext;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.*;
/**
*
Title: 微信退款工具类
* Description: 微信退款工具类,通过充值客户端的不同初始化不同的工具类,得到相应微信退款相关的appid和muchid
*
* @author xubo
* @date 2017年6月6日 下午5:05:03
*/
public class WechatUtil {
private static Log logger = LogFactory.getLog(WechatUtil.class);
/**
* 充值客户端类型--微信公众号
*/
public static Integer CLIENTTYPE_WX = 2;
/**
* 充值客户端类型--app
*/
public static Integer CLIENTTYPE_APP = 1;
private static final String EMPTY = "";
private static final String URL_PARAM_CONNECT_FLAG = "&";
/**
* 方法描述:微信退款逻辑
* 创建时间:2017年4月12日 上午11:04:25
* 作者: xubo
*
* @param
* @return
*/
public static WechatRefundApiResult wxRefund(String out_trade_no, Double orderMoney, Double refundMoney) {
//初始化请求微信服务器的配置信息包括appid密钥等
//转换金钱格式
BigDecimal bdOrderMoney = new BigDecimal(orderMoney, MathContext.DECIMAL32);
BigDecimal bdRefundMoney = new BigDecimal(refundMoney, MathContext.DECIMAL32);
//构建请求参数
Map