| @@ -57,7 +57,7 @@ public class WxPayServiceImpl implements WxPayService { | |||||
| request.checkAndSign(this.getConfig()); | request.checkAndSign(this.getConfig()); | ||||
| String url = this.getPayBaseUrl() + "/secapi/pay/refund"; | String url = this.getPayBaseUrl() + "/secapi/pay/refund"; | ||||
| String responseContent = this.postWithKey(url, request.toXML()); | |||||
| String responseContent = this.post(url, request.toXML(), true); | |||||
| WxPayRefundResult result = WxPayBaseResult.fromXML(responseContent, WxPayRefundResult.class); | WxPayRefundResult result = WxPayBaseResult.fromXML(responseContent, WxPayRefundResult.class); | ||||
| result.checkResult(this); | result.checkResult(this); | ||||
| return result; | return result; | ||||
| @@ -75,7 +75,7 @@ public class WxPayServiceImpl implements WxPayService { | |||||
| request.checkAndSign(this.getConfig()); | request.checkAndSign(this.getConfig()); | ||||
| String url = this.getPayBaseUrl() + "/pay/refundquery"; | String url = this.getPayBaseUrl() + "/pay/refundquery"; | ||||
| String responseContent = this.post(url, request.toXML()); | |||||
| String responseContent = this.post(url, request.toXML(), false); | |||||
| WxPayRefundQueryResult result = WxPayBaseResult.fromXML(responseContent, WxPayRefundQueryResult.class); | WxPayRefundQueryResult result = WxPayBaseResult.fromXML(responseContent, WxPayRefundQueryResult.class); | ||||
| result.composeRefundRecords(); | result.composeRefundRecords(); | ||||
| result.checkResult(this); | result.checkResult(this); | ||||
| @@ -109,7 +109,7 @@ public class WxPayServiceImpl implements WxPayService { | |||||
| url = this.getPayBaseUrl() + "/mmpaymkttransfers/sendgroupredpack"; | url = this.getPayBaseUrl() + "/mmpaymkttransfers/sendgroupredpack"; | ||||
| } | } | ||||
| String responseContent = this.postWithKey(url, request.toXML()); | |||||
| String responseContent = this.post(url, request.toXML(), true); | |||||
| WxPaySendRedpackResult result = WxPayBaseResult.fromXML(responseContent, WxPaySendRedpackResult.class); | WxPaySendRedpackResult result = WxPayBaseResult.fromXML(responseContent, WxPaySendRedpackResult.class); | ||||
| //毋须校验,因为没有返回签名信息 | //毋须校验,因为没有返回签名信息 | ||||
| // this.checkResult(result); | // this.checkResult(result); | ||||
| @@ -124,7 +124,7 @@ public class WxPayServiceImpl implements WxPayService { | |||||
| request.checkAndSign(this.getConfig()); | request.checkAndSign(this.getConfig()); | ||||
| String url = this.getPayBaseUrl() + "/mmpaymkttransfers/gethbinfo"; | String url = this.getPayBaseUrl() + "/mmpaymkttransfers/gethbinfo"; | ||||
| String responseContent = this.postWithKey(url, request.toXML()); | |||||
| String responseContent = this.post(url, request.toXML(), true); | |||||
| WxPayRedpackQueryResult result = WxPayBaseResult.fromXML(responseContent, WxPayRedpackQueryResult.class); | WxPayRedpackQueryResult result = WxPayBaseResult.fromXML(responseContent, WxPayRedpackQueryResult.class); | ||||
| result.checkResult(this); | result.checkResult(this); | ||||
| return result; | return result; | ||||
| @@ -138,7 +138,7 @@ public class WxPayServiceImpl implements WxPayService { | |||||
| request.checkAndSign(this.getConfig()); | request.checkAndSign(this.getConfig()); | ||||
| String url = this.getPayBaseUrl() + "/pay/orderquery"; | String url = this.getPayBaseUrl() + "/pay/orderquery"; | ||||
| String responseContent = this.post(url, request.toXML()); | |||||
| String responseContent = this.post(url, request.toXML(), false); | |||||
| if (StringUtils.isBlank(responseContent)) { | if (StringUtils.isBlank(responseContent)) { | ||||
| throw new WxPayException("无响应结果"); | throw new WxPayException("无响应结果"); | ||||
| } | } | ||||
| @@ -160,7 +160,7 @@ public class WxPayServiceImpl implements WxPayService { | |||||
| request.checkAndSign(this.getConfig()); | request.checkAndSign(this.getConfig()); | ||||
| String url = this.getPayBaseUrl() + "/pay/closeorder"; | String url = this.getPayBaseUrl() + "/pay/closeorder"; | ||||
| String responseContent = this.post(url, request.toXML()); | |||||
| String responseContent = this.post(url, request.toXML(), false); | |||||
| WxPayOrderCloseResult result = WxPayBaseResult.fromXML(responseContent, WxPayOrderCloseResult.class); | WxPayOrderCloseResult result = WxPayBaseResult.fromXML(responseContent, WxPayOrderCloseResult.class); | ||||
| result.checkResult(this); | result.checkResult(this); | ||||
| @@ -172,7 +172,7 @@ public class WxPayServiceImpl implements WxPayService { | |||||
| request.checkAndSign(this.getConfig()); | request.checkAndSign(this.getConfig()); | ||||
| String url = this.getPayBaseUrl() + "/pay/unifiedorder"; | String url = this.getPayBaseUrl() + "/pay/unifiedorder"; | ||||
| String responseContent = this.post(url, request.toXML()); | |||||
| String responseContent = this.post(url, request.toXML(), false); | |||||
| WxPayUnifiedOrderResult result = WxPayBaseResult.fromXML(responseContent, WxPayUnifiedOrderResult.class); | WxPayUnifiedOrderResult result = WxPayBaseResult.fromXML(responseContent, WxPayUnifiedOrderResult.class); | ||||
| result.checkResult(this); | result.checkResult(this); | ||||
| return result; | return result; | ||||
| @@ -227,7 +227,7 @@ public class WxPayServiceImpl implements WxPayService { | |||||
| request.checkAndSign(this.getConfig()); | request.checkAndSign(this.getConfig()); | ||||
| String url = this.getPayBaseUrl() + "/mmpaymkttransfers/promotion/transfers"; | String url = this.getPayBaseUrl() + "/mmpaymkttransfers/promotion/transfers"; | ||||
| String responseContent = this.postWithKey(url, request.toXML()); | |||||
| String responseContent = this.post(url, request.toXML(), true); | |||||
| WxEntPayResult result = WxPayBaseResult.fromXML(responseContent, WxEntPayResult.class); | WxEntPayResult result = WxPayBaseResult.fromXML(responseContent, WxEntPayResult.class); | ||||
| result.checkResult(this); | result.checkResult(this); | ||||
| return result; | return result; | ||||
| @@ -240,7 +240,7 @@ public class WxPayServiceImpl implements WxPayService { | |||||
| request.checkAndSign(this.getConfig()); | request.checkAndSign(this.getConfig()); | ||||
| String url = this.getPayBaseUrl() + "/mmpaymkttransfers/gettransferinfo"; | String url = this.getPayBaseUrl() + "/mmpaymkttransfers/gettransferinfo"; | ||||
| String responseContent = this.postWithKey(url, request.toXML()); | |||||
| String responseContent = this.post(url, request.toXML(), true); | |||||
| WxEntPayQueryResult result = WxPayBaseResult.fromXML(responseContent, WxEntPayQueryResult.class); | WxEntPayQueryResult result = WxPayBaseResult.fromXML(responseContent, WxEntPayQueryResult.class); | ||||
| result.checkResult(this); | result.checkResult(this); | ||||
| return result; | return result; | ||||
| @@ -293,7 +293,7 @@ public class WxPayServiceImpl implements WxPayService { | |||||
| request.checkAndSign(this.getConfig()); | request.checkAndSign(this.getConfig()); | ||||
| String url = this.getPayBaseUrl() + "/payitil/report"; | String url = this.getPayBaseUrl() + "/payitil/report"; | ||||
| String responseContent = this.post(url, request.toXML()); | |||||
| String responseContent = this.post(url, request.toXML(), false); | |||||
| WxPayCommonResult result = WxPayBaseResult.fromXML(responseContent, WxPayCommonResult.class); | WxPayCommonResult result = WxPayBaseResult.fromXML(responseContent, WxPayCommonResult.class); | ||||
| result.checkResult(this); | result.checkResult(this); | ||||
| } | } | ||||
| @@ -309,7 +309,7 @@ public class WxPayServiceImpl implements WxPayService { | |||||
| request.checkAndSign(this.getConfig()); | request.checkAndSign(this.getConfig()); | ||||
| String url = this.getPayBaseUrl() + "/pay/downloadbill"; | String url = this.getPayBaseUrl() + "/pay/downloadbill"; | ||||
| String responseContent = this.post(url, request.toXML()); | |||||
| String responseContent = this.post(url, request.toXML(), false); | |||||
| if (responseContent.startsWith("<")) { | if (responseContent.startsWith("<")) { | ||||
| WxPayCommonResult result = WxPayBaseResult.fromXML(responseContent, WxPayCommonResult.class); | WxPayCommonResult result = WxPayBaseResult.fromXML(responseContent, WxPayCommonResult.class); | ||||
| result.checkResult(this); | result.checkResult(this); | ||||
| @@ -396,7 +396,7 @@ public class WxPayServiceImpl implements WxPayService { | |||||
| request.checkAndSign(this.getConfig()); | request.checkAndSign(this.getConfig()); | ||||
| String url = this.getPayBaseUrl() + "/pay/micropay"; | String url = this.getPayBaseUrl() + "/pay/micropay"; | ||||
| String responseContent = this.post(url, request.toXML()); | |||||
| String responseContent = this.post(url, request.toXML(), false); | |||||
| WxPayMicropayResult result = WxPayBaseResult.fromXML(responseContent, WxPayMicropayResult.class); | WxPayMicropayResult result = WxPayBaseResult.fromXML(responseContent, WxPayMicropayResult.class); | ||||
| result.checkResult(this); | result.checkResult(this); | ||||
| return result; | return result; | ||||
| @@ -407,7 +407,7 @@ public class WxPayServiceImpl implements WxPayService { | |||||
| request.checkAndSign(this.getConfig()); | request.checkAndSign(this.getConfig()); | ||||
| String url = this.getPayBaseUrl() + "/secapi/pay/reverse"; | String url = this.getPayBaseUrl() + "/secapi/pay/reverse"; | ||||
| String responseContent = this.postWithKey(url, request.toXML()); | |||||
| String responseContent = this.post(url, request.toXML(), true); | |||||
| WxPayOrderReverseResult result = WxPayBaseResult.fromXML(responseContent, WxPayOrderReverseResult.class); | WxPayOrderReverseResult result = WxPayBaseResult.fromXML(responseContent, WxPayOrderReverseResult.class); | ||||
| result.checkResult(this); | result.checkResult(this); | ||||
| return result; | return result; | ||||
| @@ -418,7 +418,7 @@ public class WxPayServiceImpl implements WxPayService { | |||||
| request.checkAndSign(this.getConfig()); | request.checkAndSign(this.getConfig()); | ||||
| String url = this.getPayBaseUrl() + "/tools/shorturl"; | String url = this.getPayBaseUrl() + "/tools/shorturl"; | ||||
| String responseContent = this.post(url, request.toXML()); | |||||
| String responseContent = this.post(url, request.toXML(), false); | |||||
| WxPayShorturlResult result = WxPayBaseResult.fromXML(responseContent, WxPayShorturlResult.class); | WxPayShorturlResult result = WxPayBaseResult.fromXML(responseContent, WxPayShorturlResult.class); | ||||
| result.checkResult(this); | result.checkResult(this); | ||||
| return result.getShortUrl(); | return result.getShortUrl(); | ||||
| @@ -434,7 +434,7 @@ public class WxPayServiceImpl implements WxPayService { | |||||
| request.checkAndSign(this.getConfig()); | request.checkAndSign(this.getConfig()); | ||||
| String url = this.getPayBaseUrl() + "/tools/authcodetoopenid"; | String url = this.getPayBaseUrl() + "/tools/authcodetoopenid"; | ||||
| String responseContent = this.post(url, request.toXML()); | |||||
| String responseContent = this.post(url, request.toXML(), false); | |||||
| WxPayAuthcode2OpenidResult result = WxPayBaseResult.fromXML(responseContent, WxPayAuthcode2OpenidResult.class); | WxPayAuthcode2OpenidResult result = WxPayBaseResult.fromXML(responseContent, WxPayAuthcode2OpenidResult.class); | ||||
| result.checkResult(this); | result.checkResult(this); | ||||
| return result.getOpenid(); | return result.getOpenid(); | ||||
| @@ -451,57 +451,42 @@ public class WxPayServiceImpl implements WxPayService { | |||||
| request.checkAndSign(this.getConfig()); | request.checkAndSign(this.getConfig()); | ||||
| String url = "https://api.mch.weixin.qq.com/sandboxnew/pay/getsignkey"; | String url = "https://api.mch.weixin.qq.com/sandboxnew/pay/getsignkey"; | ||||
| String responseContent = this.post(url, request.toXML()); | |||||
| String responseContent = this.post(url, request.toXML(), false); | |||||
| WxPaySandboxSignKeyResult result = WxPayBaseResult.fromXML(responseContent, WxPaySandboxSignKeyResult.class); | WxPaySandboxSignKeyResult result = WxPayBaseResult.fromXML(responseContent, WxPaySandboxSignKeyResult.class); | ||||
| result.checkResult(this); | result.checkResult(this); | ||||
| return result.getSandboxSignKey(); | return result.getSandboxSignKey(); | ||||
| } | } | ||||
| /** | /** | ||||
| * 执行post请求 | |||||
| * | |||||
| * @param url 请求地址 | |||||
| * @param xmlParam 请求字符串 | |||||
| * @return 返回请求结果 | |||||
| */ | |||||
| private String post(String url, String xmlParam) throws WxPayException { | |||||
| HttpRequest request = HttpRequest | |||||
| .post(url) | |||||
| .timeout(this.config.getHttpTimeout()) | |||||
| .connectionTimeout(this.config.getHttpConnectionTimeout()) | |||||
| .body(new String(xmlParam.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1)); | |||||
| String responseString = this.getResponseString(request.send()); | |||||
| this.log.info("\n【请求地址】: {}\n【请求参数】:{}\n【响应数据】:{}", url, xmlParam, responseString); | |||||
| return responseString; | |||||
| } | |||||
| /** | |||||
| * 带证书发送post请求 | |||||
| * 发送post请求 | |||||
| * | * | ||||
| * @param url 请求地址 | * @param url 请求地址 | ||||
| * @param requestStr 请求信息 | * @param requestStr 请求信息 | ||||
| * @param useKey 是否使用证书 | |||||
| * @return 返回请求结果字符串 | |||||
| */ | */ | ||||
| private String postWithKey(String url, String requestStr) throws WxPayException { | |||||
| private String post(String url, String requestStr, boolean useKey) throws WxPayException { | |||||
| try { | try { | ||||
| SSLContext sslContext = this.getConfig().getSslContext(); | |||||
| if (null == sslContext) { | |||||
| sslContext = this.getConfig().initSSLContext(); | |||||
| } | |||||
| HttpRequest request = HttpRequest | HttpRequest request = HttpRequest | ||||
| .post(url) | .post(url) | ||||
| .timeout(this.config.getHttpTimeout()) | .timeout(this.config.getHttpTimeout()) | ||||
| .connectionTimeout(this.config.getHttpConnectionTimeout()) | .connectionTimeout(this.config.getHttpConnectionTimeout()) | ||||
| .withConnectionProvider(new SSLSocketHttpConnectionProvider(sslContext)) | |||||
| .bodyText(requestStr); | .bodyText(requestStr); | ||||
| if (useKey) { | |||||
| SSLContext sslContext = this.getConfig().getSslContext(); | |||||
| if (null == sslContext) { | |||||
| sslContext = this.getConfig().initSSLContext(); | |||||
| } | |||||
| request.withConnectionProvider(new SSLSocketHttpConnectionProvider(sslContext)); | |||||
| } | |||||
| String responseString = this.getResponseString(request.send()); | String responseString = this.getResponseString(request.send()); | ||||
| this.log.info("\n【请求地址】: {}\n【请求参数】:{}\n【响应数据】:{}", url, requestStr, responseString); | |||||
| this.log.info("\n【请求地址】:{}\n【请求数据】:{}\n【响应数据】:{}", url, requestStr, responseString); | |||||
| return responseString; | return responseString; | ||||
| } catch (Exception e) { | } catch (Exception e) { | ||||
| this.log.error("\n【请求地址】: {}\n【请求参数】:{}\n【异常信息】:{}", url, requestStr, e.getMessage()); | |||||
| this.log.error("\n【请求地址】:{}\n【请求数据】:{}\n【异常信息】:{}", url, requestStr, e.getMessage()); | |||||
| throw new WxPayException(e.getMessage(), e); | throw new WxPayException(e.getMessage(), e); | ||||
| } | } | ||||
| } | } | ||||