diff --git a/pay-java-common/src/main/java/com/egzosn/pay/common/http/ClientHttpRequest.java b/pay-java-common/src/main/java/com/egzosn/pay/common/http/ClientHttpRequest.java index bfc799b..f1b0aba 100644 --- a/pay-java-common/src/main/java/com/egzosn/pay/common/http/ClientHttpRequest.java +++ b/pay-java-common/src/main/java/com/egzosn/pay/common/http/ClientHttpRequest.java @@ -38,6 +38,7 @@ import static com.egzosn.pay.common.http.UriVariables.getMapToParameters; public class ClientHttpRequest extends HttpEntityEnclosingRequestBase implements org.apache.http.client.ResponseHandler { protected static final Log LOG = LogFactory.getLog(ClientHttpRequest.class); public static final ContentType APPLICATION_FORM_URLENCODED_UTF_8 = ContentType.create("application/x-www-form-urlencoded", Consts.UTF_8); + public static final ContentType APPLICATION_XML_UTF_8 = ContentType.create("application/xml", Consts.UTF_8); /** diff --git a/pay-java-wx/src/main/java/com/egzosn/pay/wx/api/WxPayService.java b/pay-java-wx/src/main/java/com/egzosn/pay/wx/api/WxPayService.java index 9d86e36..ce72660 100644 --- a/pay-java-wx/src/main/java/com/egzosn/pay/wx/api/WxPayService.java +++ b/pay-java-wx/src/main/java/com/egzosn/pay/wx/api/WxPayService.java @@ -1,30 +1,69 @@ package com.egzosn.pay.wx.api; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URLEncoder; +import java.security.GeneralSecurityException; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.SortedMap; +import java.util.TreeMap; +import java.util.zip.GZIPInputStream; + +import static com.egzosn.pay.wx.api.WxConst.APPID; +import static com.egzosn.pay.wx.api.WxConst.CIPHER_ALGORITHM; +import static com.egzosn.pay.wx.api.WxConst.FAIL; +import static com.egzosn.pay.wx.api.WxConst.FAILURE; +import static com.egzosn.pay.wx.api.WxConst.HMACSHA256; +import static com.egzosn.pay.wx.api.WxConst.HMAC_SHA256; +import static com.egzosn.pay.wx.api.WxConst.MCH_ID; +import static com.egzosn.pay.wx.api.WxConst.NONCE_STR; +import static com.egzosn.pay.wx.api.WxConst.OUT_TRADE_NO; +import static com.egzosn.pay.wx.api.WxConst.RESULT_CODE; +import static com.egzosn.pay.wx.api.WxConst.RETURN_CODE; +import static com.egzosn.pay.wx.api.WxConst.RETURN_MSG_CODE; +import static com.egzosn.pay.wx.api.WxConst.SANDBOXNEW; +import static com.egzosn.pay.wx.api.WxConst.SIGN; +import static com.egzosn.pay.wx.api.WxConst.SUCCESS; +import static com.egzosn.pay.wx.api.WxConst.URI; +import static com.egzosn.pay.wx.bean.WxTransferType.GETTRANSFERINFO; +import static com.egzosn.pay.wx.bean.WxTransferType.QUERY_BANK; +import static com.egzosn.pay.wx.bean.WxTransferType.TRANSFERS; + import com.alibaba.fastjson.JSONObject; import com.egzosn.pay.common.api.BasePayService; -import com.egzosn.pay.common.bean.*; +import com.egzosn.pay.common.bean.MethodType; +import com.egzosn.pay.common.bean.PayMessage; +import com.egzosn.pay.common.bean.PayOrder; +import com.egzosn.pay.common.bean.PayOutMessage; +import com.egzosn.pay.common.bean.RefundOrder; +import com.egzosn.pay.common.bean.SignType; +import com.egzosn.pay.common.bean.TransactionType; +import com.egzosn.pay.common.bean.TransferOrder; import com.egzosn.pay.common.bean.result.PayException; import com.egzosn.pay.common.exception.PayErrorException; +import com.egzosn.pay.common.http.ClientHttpRequest; import com.egzosn.pay.common.http.HttpConfigStorage; +import com.egzosn.pay.common.http.HttpStringEntity; import com.egzosn.pay.common.util.DateUtils; import com.egzosn.pay.common.util.Util; import com.egzosn.pay.common.util.XML; import com.egzosn.pay.common.util.sign.SignUtils; import com.egzosn.pay.common.util.sign.encrypt.RSA2; import com.egzosn.pay.common.util.str.StringUtils; -import com.egzosn.pay.wx.bean.*; - -import java.io.*; -import java.net.URLEncoder; -import java.security.GeneralSecurityException; -import java.util.*; -import java.util.zip.GZIPInputStream; -import java.util.zip.GZIPOutputStream; -import java.util.zip.ZipEntry; -import java.util.zip.ZipInputStream; - -import static com.egzosn.pay.wx.api.WxConst.*; -import static com.egzosn.pay.wx.bean.WxTransferType.*; +import com.egzosn.pay.wx.bean.RedpackOrder; +import com.egzosn.pay.wx.bean.WxPayError; +import com.egzosn.pay.wx.bean.WxPayMessage; +import com.egzosn.pay.wx.bean.WxRefundResult; +import com.egzosn.pay.wx.bean.WxSendredpackType; +import com.egzosn.pay.wx.bean.WxTransactionType; +import com.egzosn.pay.wx.bean.WxTransferType; /** * 微信支付服务 @@ -305,7 +344,8 @@ public class WxPayService extends BasePayService implements String sign = createSign(SignUtils.parameterText(parameters, "&", SIGN, "appId"), payConfigStorage.getInputCharset(), false); parameters.put(SIGN, sign); - JSONObject result = requestTemplate.postForObject(getReqUrl(WxTransactionType.GETSIGNKEY), XML.getMap2Xml(parameters), JSONObject.class); + HttpStringEntity entity = new HttpStringEntity(XML.getMap2Xml(parameters), ClientHttpRequest.APPLICATION_XML_UTF_8); + JSONObject result = requestTemplate.postForObject(getReqUrl(WxTransactionType.GETSIGNKEY), entity, JSONObject.class); if (SUCCESS.equals(result.get(RETURN_CODE))) { return result.getString("sandbox_signkey"); }