@@ -892,44 +892,44 @@ public Map<String, String> getJSSDKPayInfo(Map<String, String> parameters) {
892
892
893
893
@ Override
894
894
public WxMpPayResult getJSSDKPayResult (String transactionId , String outTradeNo ) {
895
- String nonce_str = System .currentTimeMillis () + "" ;
895
+ String nonce_str = System .currentTimeMillis () + "" ;
896
896
897
- SortedMap <String , String > packageParams = new TreeMap <String , String >();
898
- packageParams .put ("appid" , wxMpConfigStorage .getAppId ());
899
- packageParams .put ("mch_id" , wxMpConfigStorage .getPartnerId ());
897
+ SortedMap <String , String > packageParams = new TreeMap <String , String >();
898
+ packageParams .put ("appid" , wxMpConfigStorage .getAppId ());
899
+ packageParams .put ("mch_id" , wxMpConfigStorage .getPartnerId ());
900
+ if (transactionId != null && !"" .equals (transactionId .trim ()))
900
901
packageParams .put ("transaction_id" , transactionId );
902
+ else if (outTradeNo != null && !"" .equals (outTradeNo .trim ()))
901
903
packageParams .put ("out_trade_no" , outTradeNo );
902
- packageParams .put ("nonce_str" , nonce_str );
903
-
904
- String sign = WxCryptUtil .createSign (packageParams , wxMpConfigStorage .getPartnerKey ());
905
- String xml = "<xml>" +
906
- "<appid>" + wxMpConfigStorage .getAppId () + "</appid>" +
907
- "<mch_id>" + wxMpConfigStorage .getPartnerId () + "</mch_id>" +
908
- "<transaction_id>" + transactionId + "</transaction_id>" +
909
- "<out_trade_no>" + outTradeNo + "</out_trade_no>" +
910
- "<nonce_str>" + nonce_str + "</nonce_str>" +
911
- "<sign>" + sign + "</sign>" +
912
- "</xml>" ;
913
-
914
- HttpPost httpPost = new HttpPost ("https://api.mch.weixin.qq.com/pay/orderquery" );
915
- if (httpProxy != null ) {
916
- RequestConfig config = RequestConfig .custom ().setProxy (httpProxy ).build ();
917
- httpPost .setConfig (config );
918
- }
904
+ else
905
+ throw new IllegalArgumentException ("Either 'transactionId' or 'outTradeNo' must be given." );
906
+ packageParams .put ("nonce_str" , nonce_str );
907
+ packageParams .put ("sign" , WxCryptUtil .createSign (packageParams , wxMpConfigStorage .getPartnerKey ()));
919
908
920
- StringEntity entity = new StringEntity (xml , Consts .UTF_8 );
921
- httpPost .setEntity (entity );
922
- try {
923
- CloseableHttpResponse response = httpClient .execute (httpPost );
924
- String responseContent = Utf8ResponseHandler .INSTANCE .handleResponse (response );
925
- XStream xstream = XStreamInitializer .getInstance ();
926
- xstream .alias ("xml" , WxMpPayResult .class );
927
- WxMpPayResult wxMpPayResult = (WxMpPayResult ) xstream .fromXML (responseContent );
928
- return wxMpPayResult ;
929
- } catch (IOException e ) {
930
- e .printStackTrace ();
931
- }
932
- return new WxMpPayResult ();
909
+ StringBuilder request = new StringBuilder ("<xml>" );
910
+ for (Entry <String , String > para : packageParams .entrySet ()) {
911
+ request .append (String .format ("<%s>%s</%s>" , para .getKey (), para .getValue (), para .getKey ()));
912
+ }
913
+ request .append ("</xml>" );
914
+
915
+ HttpPost httpPost = new HttpPost ("https://api.mch.weixin.qq.com/pay/orderquery" );
916
+ if (httpProxy != null ) {
917
+ RequestConfig config = RequestConfig .custom ().setProxy (httpProxy ).build ();
918
+ httpPost .setConfig (config );
919
+ }
920
+
921
+ StringEntity entity = new StringEntity (request .toString (), Consts .UTF_8 );
922
+ httpPost .setEntity (entity );
923
+ try {
924
+ CloseableHttpResponse response = httpClient .execute (httpPost );
925
+ String responseContent = Utf8ResponseHandler .INSTANCE .handleResponse (response );
926
+ XStream xstream = XStreamInitializer .getInstance ();
927
+ xstream .alias ("xml" , WxMpPayResult .class );
928
+ WxMpPayResult wxMpPayResult = (WxMpPayResult ) xstream .fromXML (responseContent );
929
+ return wxMpPayResult ;
930
+ } catch (IOException e ) {
931
+ throw new RuntimeException ("Failed to query order due to IO exception." , e );
932
+ }
933
933
}
934
934
935
935
@ Override
0 commit comments