@@ -916,44 +916,44 @@ public Map<String, String> getJSSDKPayInfo(Map<String, String> parameters) {
916
916
917
917
@ Override
918
918
public WxMpPayResult getJSSDKPayResult (String transactionId , String outTradeNo ) {
919
- String nonce_str = System .currentTimeMillis () + "" ;
919
+ String nonce_str = System .currentTimeMillis () + "" ;
920
920
921
- SortedMap <String , String > packageParams = new TreeMap <String , String >();
922
- packageParams .put ("appid" , wxMpConfigStorage .getAppId ());
923
- packageParams .put ("mch_id" , wxMpConfigStorage .getPartnerId ());
921
+ SortedMap <String , String > packageParams = new TreeMap <String , String >();
922
+ packageParams .put ("appid" , wxMpConfigStorage .getAppId ());
923
+ packageParams .put ("mch_id" , wxMpConfigStorage .getPartnerId ());
924
+ if (transactionId != null && !"" .equals (transactionId .trim ()))
924
925
packageParams .put ("transaction_id" , transactionId );
926
+ else if (outTradeNo != null && !"" .equals (outTradeNo .trim ()))
925
927
packageParams .put ("out_trade_no" , outTradeNo );
926
- packageParams .put ("nonce_str" , nonce_str );
927
-
928
- String sign = WxCryptUtil .createSign (packageParams , wxMpConfigStorage .getPartnerKey ());
929
- String xml = "<xml>" +
930
- "<appid>" + wxMpConfigStorage .getAppId () + "</appid>" +
931
- "<mch_id>" + wxMpConfigStorage .getPartnerId () + "</mch_id>" +
932
- "<transaction_id>" + transactionId + "</transaction_id>" +
933
- "<out_trade_no>" + outTradeNo + "</out_trade_no>" +
934
- "<nonce_str>" + nonce_str + "</nonce_str>" +
935
- "<sign>" + sign + "</sign>" +
936
- "</xml>" ;
937
-
938
- HttpPost httpPost = new HttpPost ("https://api.mch.weixin.qq.com/pay/orderquery" );
939
- if (httpProxy != null ) {
940
- RequestConfig config = RequestConfig .custom ().setProxy (httpProxy ).build ();
941
- httpPost .setConfig (config );
942
- }
928
+ else
929
+ throw new IllegalArgumentException ("Either 'transactionId' or 'outTradeNo' must be given." );
930
+ packageParams .put ("nonce_str" , nonce_str );
931
+ packageParams .put ("sign" , WxCryptUtil .createSign (packageParams , wxMpConfigStorage .getPartnerKey ()));
943
932
944
- StringEntity entity = new StringEntity (xml , Consts .UTF_8 );
945
- httpPost .setEntity (entity );
946
- try {
947
- CloseableHttpResponse response = httpClient .execute (httpPost );
948
- String responseContent = Utf8ResponseHandler .INSTANCE .handleResponse (response );
949
- XStream xstream = XStreamInitializer .getInstance ();
950
- xstream .alias ("xml" , WxMpPayResult .class );
951
- WxMpPayResult wxMpPayResult = (WxMpPayResult ) xstream .fromXML (responseContent );
952
- return wxMpPayResult ;
953
- } catch (IOException e ) {
954
- e .printStackTrace ();
955
- }
956
- return new WxMpPayResult ();
933
+ StringBuilder request = new StringBuilder ("<xml>" );
934
+ for (Entry <String , String > para : packageParams .entrySet ()) {
935
+ request .append (String .format ("<%s>%s</%s>" , para .getKey (), para .getValue (), para .getKey ()));
936
+ }
937
+ request .append ("</xml>" );
938
+
939
+ HttpPost httpPost = new HttpPost ("https://api.mch.weixin.qq.com/pay/orderquery" );
940
+ if (httpProxy != null ) {
941
+ RequestConfig config = RequestConfig .custom ().setProxy (httpProxy ).build ();
942
+ httpPost .setConfig (config );
943
+ }
944
+
945
+ StringEntity entity = new StringEntity (request .toString (), Consts .UTF_8 );
946
+ httpPost .setEntity (entity );
947
+ try {
948
+ CloseableHttpResponse response = httpClient .execute (httpPost );
949
+ String responseContent = Utf8ResponseHandler .INSTANCE .handleResponse (response );
950
+ XStream xstream = XStreamInitializer .getInstance ();
951
+ xstream .alias ("xml" , WxMpPayResult .class );
952
+ WxMpPayResult wxMpPayResult = (WxMpPayResult ) xstream .fromXML (responseContent );
953
+ return wxMpPayResult ;
954
+ } catch (IOException e ) {
955
+ throw new RuntimeException ("Failed to query order due to IO exception." , e );
956
+ }
957
957
}
958
958
959
959
@ Override
0 commit comments