| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -72,12 +72,12 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  @Override | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  public WxPayRefundResult refund(WxPayRefundRequest request) throws WxPayException { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String url = this.getPayBaseUrl() + "/secapi/pay/refund"; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String responseContent = this.post(url, request.toXML(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    WxPayRefundResult result = WxPayBaseResult.fromXML(responseContent, WxPayRefundResult.class); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, request.getSignType(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return result; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -90,13 +90,13 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.setOutRefundNo(StringUtils.trimToNull(outRefundNo)); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.setRefundId(StringUtils.trimToNull(refundId)); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String url = this.getPayBaseUrl() + "/pay/refundquery"; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String responseContent = this.post(url, request.toXML(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    WxPayRefundQueryResult result = WxPayBaseResult.fromXML(responseContent, WxPayRefundQueryResult.class); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.composeRefundRecords(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, request.getSignType(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return result; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -112,7 +112,7 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      log.debug("微信支付异步通知请求参数:{}", xmlData); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      WxPayOrderNotifyResult result = WxPayOrderNotifyResult.fromXML(xmlData); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      log.debug("微信支付异步通知请求解析后的对象:{}", result); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      result.checkResult(this, false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      result.checkResult(this, null, false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return result; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } catch (WxPayException e) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      log.error(e.getMessage(), e); | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -138,7 +138,7 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  @Override | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  public WxPaySendRedpackResult sendRedpack(WxPaySendRedpackRequest request) throws WxPayException { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String url = this.getPayBaseUrl() + "/mmpaymkttransfers/sendredpack"; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (request.getAmtType() != null) { | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -156,12 +156,12 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    WxPayRedpackQueryRequest request = new WxPayRedpackQueryRequest(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.setMchBillNo(mchBillNo); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.setBillType(BillType.MCHT); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String url = this.getPayBaseUrl() + "/mmpaymkttransfers/gethbinfo"; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String responseContent = this.post(url, request.toXML(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    WxPayRedpackQueryResult result = WxPayBaseResult.fromXML(responseContent, WxPayRedpackQueryResult.class); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, request.getSignType(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return result; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -170,7 +170,7 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    WxPayOrderQueryRequest request = new WxPayOrderQueryRequest(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.setOutTradeNo(StringUtils.trimToNull(outTradeNo)); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.setTransactionId(StringUtils.trimToNull(transactionId)); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String url = this.getPayBaseUrl() + "/pay/orderquery"; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String responseContent = this.post(url, request.toXML(), false); | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -180,7 +180,7 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    WxPayOrderQueryResult result = WxPayBaseResult.fromXML(responseContent, WxPayOrderQueryResult.class); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.composeCoupons(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, request.getSignType(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return result; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -192,12 +192,12 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    WxPayOrderCloseRequest request = new WxPayOrderCloseRequest(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.setOutTradeNo(StringUtils.trimToNull(outTradeNo)); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String url = this.getPayBaseUrl() + "/pay/closeorder"; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String responseContent = this.post(url, request.toXML(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    WxPayOrderCloseResult result = WxPayBaseResult.fromXML(responseContent, WxPayOrderCloseResult.class); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, request.getSignType(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return result; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -236,7 +236,7 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        configMap.put("appid", appId); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        payResult = WxPayAppOrderResult.builder() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          .sign(SignUtils.createSign(configMap, this.getConfig().getMchKey(), null)) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          .sign(SignUtils.createSign(configMap, null, this.getConfig().getMchKey(), false)) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          .prepayId(prepayId) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          .partnerId(partnerId) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          .appId(appId) | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -255,9 +255,12 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          .signType(SignType.MD5) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          .build(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ((WxPayMpOrderResult) payResult) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          .setPaySign(SignUtils.createSign(payResult, this.getConfig().getMchKey(), null)); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          .setPaySign(SignUtils.createSign(payResult, null, this.getConfig().getMchKey(), false)); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        break; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      default: { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        throw new WxPayException("该交易类型暂不支持"); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return (T) payResult; | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -265,12 +268,12 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  @Override | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  public WxPayUnifiedOrderResult unifiedOrder(WxPayUnifiedOrderRequest request) throws WxPayException { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String url = this.getPayBaseUrl() + "/pay/unifiedorder"; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String responseContent = this.post(url, request.toXML(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    WxPayUnifiedOrderResult result = WxPayBaseResult.fromXML(responseContent, WxPayUnifiedOrderResult.class); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, request.getSignType(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return result; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -303,7 +306,7 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      configMap.put("noncestr", nonceStr); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      configMap.put("appid", appId); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      // 此map用于客户端与微信服务器交互 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      payInfo.put("sign", SignUtils.createSign(configMap, this.getConfig().getMchKey(), null)); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      payInfo.put("sign", SignUtils.createSign(configMap, null, this.getConfig().getMchKey(), false)); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      payInfo.put("prepayId", prepayId); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      payInfo.put("partnerId", partnerId); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      payInfo.put("appId", appId); | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -317,7 +320,7 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      payInfo.put("nonceStr", nonceStr); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      payInfo.put("package", "prepay_id=" + prepayId); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      payInfo.put("signType", SignType.MD5); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      payInfo.put("paySign", SignUtils.createSign(payInfo, this.getConfig().getMchKey(), null)); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      payInfo.put("paySign", SignUtils.createSign(payInfo, null, this.getConfig().getMchKey(), false)); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return payInfo; | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -325,12 +328,12 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  @Override | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  public WxEntPayResult entPay(WxEntPayRequest request) throws WxPayException { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String url = this.getPayBaseUrl() + "/mmpaymkttransfers/promotion/transfers"; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String responseContent = this.post(url, request.toXML(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    WxEntPayResult result = WxPayBaseResult.fromXML(responseContent, WxEntPayResult.class); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, request.getSignType(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return result; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -338,12 +341,12 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  public WxEntPayQueryResult queryEntPay(String partnerTradeNo) throws WxPayException { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    WxEntPayQueryRequest request = new WxEntPayQueryRequest(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.setPartnerTradeNo(partnerTradeNo); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String url = this.getPayBaseUrl() + "/mmpaymkttransfers/gettransferinfo"; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String responseContent = this.post(url, request.toXML(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    WxEntPayQueryResult result = WxPayBaseResult.fromXML(responseContent, WxEntPayQueryResult.class); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, request.getSignType(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return result; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -364,7 +367,7 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    params.put("time_stamp", String.valueOf(System.currentTimeMillis() / 1000));//这里需要秒,10位数字 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    params.put("nonce_str", String.valueOf(System.currentTimeMillis())); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String sign = SignUtils.createSign(params, this.getConfig().getMchKey(), null); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String sign = SignUtils.createSign(params, null, this.getConfig().getMchKey(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    params.put("sign", sign); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    for (String key : params.keySet()) { | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -389,13 +392,14 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return QrcodeUtils.createQrcode(content, sideLength, logoFile); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  @Override | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  public void report(WxPayReportRequest request) throws WxPayException { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String url = this.getPayBaseUrl() + "/payitil/report"; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String responseContent = this.post(url, request.toXML(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    WxPayCommonResult result = WxPayBaseResult.fromXML(responseContent, WxPayCommonResult.class); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, request.getSignType(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  @Override | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -406,7 +410,7 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.setTarType(tarType); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.setDeviceInfo(deviceInfo); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String url = this.getPayBaseUrl() + "/pay/downloadbill"; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String responseContent = this.post(url, request.toXML(), false); | 
		
		
	
	
		
			
				| 
				
					
				
				
					
				
				
				 | 
			
			 | 
			@@ -488,34 +492,34 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  @Override | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  public WxPayMicropayResult micropay(WxPayMicropayRequest request) throws WxPayException { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String url = this.getPayBaseUrl() + "/pay/micropay"; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String responseContent = this.post(url, request.toXML(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    WxPayMicropayResult result = WxPayBaseResult.fromXML(responseContent, WxPayMicropayResult.class); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, request.getSignType(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return result; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  @Override | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  public WxPayOrderReverseResult reverseOrder(WxPayOrderReverseRequest request) throws WxPayException { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String url = this.getPayBaseUrl() + "/secapi/pay/reverse"; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String responseContent = this.post(url, request.toXML(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    WxPayOrderReverseResult result = WxPayBaseResult.fromXML(responseContent, WxPayOrderReverseResult.class); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, request.getSignType(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return result; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  @Override | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  public String shorturl(WxPayShorturlRequest request) throws WxPayException { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String url = this.getPayBaseUrl() + "/tools/shorturl"; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String responseContent = this.post(url, request.toXML(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    WxPayShorturlResult result = WxPayBaseResult.fromXML(responseContent, WxPayShorturlResult.class); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, request.getSignType(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return result.getShortUrl(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -526,12 +530,12 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  @Override | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  public String authcode2Openid(WxPayAuthcode2OpenidRequest request) throws WxPayException { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String url = this.getPayBaseUrl() + "/tools/authcodetoopenid"; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String responseContent = this.post(url, request.toXML(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    WxPayAuthcode2OpenidResult result = WxPayBaseResult.fromXML(responseContent, WxPayAuthcode2OpenidResult.class); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, request.getSignType(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return result.getOpenid(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -543,45 +547,45 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  @Override | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  public String getSandboxSignKey() throws WxPayException { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    WxPayDefaultRequest request = new WxPayDefaultRequest(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String url = "https://api.mch.weixin.qq.com/sandboxnew/pay/getsignkey"; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String responseContent = this.post(url, request.toXML(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    WxPaySandboxSignKeyResult result = WxPayBaseResult.fromXML(responseContent, WxPaySandboxSignKeyResult.class); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, request.getSignType(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return result.getSandboxSignKey(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  @Override | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  public WxPayCouponSendResult sendCoupon(WxPayCouponSendRequest request) throws WxPayException { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String url = this.getPayBaseUrl() + "/mmpaymkttransfers/send_coupon"; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String responseContent = this.post(url, request.toXML(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    WxPayCouponSendResult result = WxPayBaseResult.fromXML(responseContent, WxPayCouponSendResult.class); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, request.getSignType(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return result; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  @Override | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  public WxPayCouponStockQueryResult queryCouponStock(WxPayCouponStockQueryRequest request) throws WxPayException { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String url = this.getPayBaseUrl() + "/mmpaymkttransfers/query_coupon_stock"; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String responseContent = this.post(url, request.toXML(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    WxPayCouponStockQueryResult result = WxPayBaseResult.fromXML(responseContent, WxPayCouponStockQueryResult.class); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, request.getSignType(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return result; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  @Override | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  public WxPayCouponInfoQueryResult queryCouponInfo(WxPayCouponInfoQueryRequest request) throws WxPayException { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String url = this.getPayBaseUrl() + "/mmpaymkttransfers/querycouponsinfo"; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String responseContent = this.post(url, request.toXML(), false); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    WxPayCouponInfoQueryResult result = WxPayBaseResult.fromXML(responseContent, WxPayCouponInfoQueryResult.class); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    result.checkResult(this, request.getSignType(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return result; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
				
				
					
				
				 | 
			
			 | 
			@@ -605,7 +609,7 @@ public abstract class WxPayServiceAbstractImpl implements WxPayService { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.setLimit(limit); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.setSignType(SignType.HMAC_SHA256); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig()); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    request.checkAndSign(this.getConfig(), true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    String url = this.getPayBaseUrl() + "/billcommentsp/batchquerycomment"; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
				| 
				
					
				
				
				
				 | 
			
			 | 
			
  |