@@ -52,6 +52,14 @@ private WxMpConfigStorage getConfig() {
5252 return wxMpService .getWxMpConfigStorage ();
5353 }
5454
55+ private String getPayBaseUrl (){
56+ if (this .getConfig ().useSandboxForWxPay ()){
57+ return PAY_BASE_URL + "/sandboxnew" ;
58+ }
59+
60+ return PAY_BASE_URL ;
61+ }
62+
5563 @ Override
5664 public WxPayRefundResult refund (WxPayRefundRequest request ) throws WxErrorException {
5765 this .initRequest (request );
@@ -61,7 +69,7 @@ public WxPayRefundResult refund(WxPayRefundRequest request) throws WxErrorExcept
6169 this .checkParameters (request );
6270 request .setSign (this .createSign (request ));
6371
64- String url = PAY_BASE_URL + "/secapi/pay/refund" ;
72+ String url = this . getPayBaseUrl () + "/secapi/pay/refund" ;
6573 String responseContent = this .executeWithKey (url , request .toXML ());
6674 WxPayRefundResult result = WxPayRefundResult .fromXML (responseContent , WxPayRefundResult .class );
6775 this .checkResult (result );
@@ -83,7 +91,7 @@ public WxPayRefundQueryResult refundQuery(String transactionId, String outTradeN
8391 request .setRefundId (StringUtils .trimToNull (refundId ));
8492 request .setSign (this .createSign (request ));
8593
86- String url = PAY_BASE_URL + "/pay/refundquery" ;
94+ String url = this . getPayBaseUrl () + "/pay/refundquery" ;
8795 String responseContent = this .executeRequest (url , request .toXML ());
8896 WxPayRefundQueryResult result = WxPayRefundQueryResult .fromXML (responseContent , WxPayRefundQueryResult .class );
8997 result .composeRefundRecords ();
@@ -150,10 +158,10 @@ public WxPaySendRedpackResult sendRedpack(WxPaySendRedpackRequest request)
150158 this .initRequest (request );
151159 request .setSign (this .createSign (request ));
152160
153- String url = PAY_BASE_URL + "/mmpaymkttransfers/sendredpack" ;
161+ String url = this . getPayBaseUrl () + "/mmpaymkttransfers/sendredpack" ;
154162 if (request .getAmtType () != null ) {
155163 //裂变红包
156- url = PAY_BASE_URL + "/mmpaymkttransfers/sendgroupredpack" ;
164+ url = this . getPayBaseUrl () + "/mmpaymkttransfers/sendgroupredpack" ;
157165 }
158166 String responseContent = this .executeWithKey (url , request .toXML ());
159167 WxPaySendRedpackResult result = WxPaySendRedpackResult .fromXML (responseContent , WxPaySendRedpackResult .class );
@@ -169,7 +177,7 @@ public WxPayRedpackQueryResult queryRedpack(String mchBillNo) throws WxErrorExce
169177 initRequest (request );
170178 request .setSign (this .createSign (request ));
171179
172- String url = PAY_BASE_URL + "/mmpaymkttransfers/gethbinfo" ;
180+ String url = this . getPayBaseUrl () + "/mmpaymkttransfers/gethbinfo" ;
173181 String responseContent = this .executeWithKey (url , request .toXML ());
174182 WxPayRedpackQueryResult result = WxPayRedpackQueryResult .fromXML (responseContent , WxPayRedpackQueryResult .class );
175183 this .checkResult (result );
@@ -189,7 +197,7 @@ public WxPayOrderQueryResult queryOrder(String transactionId, String outTradeNo)
189197 initRequest (request );
190198 request .setSign (this .createSign (request ));
191199
192- String url = PAY_BASE_URL + "/pay/orderquery" ;
200+ String url = this . getPayBaseUrl () + "/pay/orderquery" ;
193201 String responseContent = this .executeRequest (url , request .toXML ());
194202 WxPayOrderQueryResult result = WxPayOrderQueryResult .fromXML (responseContent , WxPayOrderQueryResult .class );
195203 result .composeCoupons ();
@@ -208,7 +216,7 @@ public WxPayOrderCloseResult closeOrder(String outTradeNo) throws WxErrorExcepti
208216 initRequest (request );
209217 request .setSign (this .createSign (request ));
210218
211- String url = PAY_BASE_URL + "/pay/closeorder" ;
219+ String url = this . getPayBaseUrl () + "/pay/closeorder" ;
212220 String responseContent = this .executeRequest (url , request .toXML ());
213221 WxPayOrderCloseResult result = WxPayOrderCloseResult .fromXML (responseContent , WxPayOrderCloseResult .class );
214222 this .checkResult (result );
@@ -230,7 +238,7 @@ public WxPayUnifiedOrderResult unifiedOrder(WxPayUnifiedOrderRequest request)
230238 checkParameters (request );//校验参数
231239 request .setSign (this .createSign (request ));
232240
233- String url = PAY_BASE_URL + "/pay/unifiedorder" ;
241+ String url = this . getPayBaseUrl () + "/pay/unifiedorder" ;
234242 String xmlParam = request .toXML ();
235243 log .debug ("微信统一下单接口,URL:{},参数:{}" , url , xmlParam );
236244
@@ -298,7 +306,7 @@ public WxEntPayResult entPay(WxEntPayRequest request) throws WxErrorException {
298306 BeanUtils .checkRequiredFields (request );
299307 request .setSign (this .createSign (request ));
300308
301- String url = PAY_BASE_URL + "/mmpaymkttransfers/promotion/transfers" ;
309+ String url = this . getPayBaseUrl () + "/mmpaymkttransfers/promotion/transfers" ;
302310
303311 String responseContent = this .executeWithKey (url , request .toXML ());
304312 WxEntPayResult result = WxEntPayResult .fromXML (responseContent , WxEntPayResult .class );
@@ -312,7 +320,7 @@ public WxEntPayQueryResult queryEntPay(String partnerTradeNo) throws WxErrorExce
312320 this .initRequest (request );
313321 request .setSign (this .createSign (request ));
314322
315- String url = PAY_BASE_URL + "/mmpaymkttransfers/gettransferinfo" ;
323+ String url = this . getPayBaseUrl () + "/mmpaymkttransfers/gettransferinfo" ;
316324 String responseContent = this .executeWithKey (url , request .toXML ());
317325 WxEntPayQueryResult result = WxEntPayQueryResult .fromXML (responseContent , WxEntPayQueryResult .class );
318326 this .checkResult (result );
@@ -359,9 +367,9 @@ public void report(WxPayReportRequest request) throws WxErrorException {
359367 this .initRequest (request );
360368 request .setSign (this .createSign (request ));
361369
362- String url = PAY_BASE_URL + "/payitil/report" ;
370+ String url = this . getPayBaseUrl () + "/payitil/report" ;
363371 String responseContent = this .wxMpService .post (url , request .toXML ());
364- WxPayBaseResult result = WxPayBaseResult .fromXML (responseContent , WxPayBaseResult .class );
372+ WxPayCommonResult result = WxPayBaseResult .fromXML (responseContent , WxPayCommonResult .class );
365373 this .checkResult (result );
366374 }
367375
@@ -435,6 +443,11 @@ public String createSign(Map<String, String> params) {
435443
436444 @ Override
437445 public String createSign (Map <String , String > params , String signKey ) {
446+ if (this .getConfig ().useSandboxForWxPay ()){
447+ //使用仿真测试环境
448+ return "ABCDEFGHIJKLMNOPQRSTUVWXYZ123456" ;
449+ }
450+
438451 SortedMap <String , String > sortedMap = new TreeMap <>(params );
439452
440453 StringBuilder toSign = new StringBuilder ();
0 commit comments