lyhzzz 2 lat temu
rodzic
commit
6baa74cf2f

+ 2 - 2
src/main/java/com/fdkankan/pay/util/wx/WXPay.java

@@ -347,7 +347,7 @@ public class WXPay {
      * @return API返回数据
      * @return API返回数据
      * @throws Exception
      * @throws Exception
      */
      */
-    public Map<String, String> orderQuery(Map<String, String> reqData, String appId,String mchId,String mchKey) throws Exception {
+    public static Map<String, String> orderQuery(Map<String, String> reqData, String appId,String mchId,String mchKey) throws Exception {
         return orderQuery(reqData,appId,mchId,mchKey, httpConnectTimeoutMs, httpReadTimeoutMs);
         return orderQuery(reqData,appId,mchId,mchKey, httpConnectTimeoutMs, httpReadTimeoutMs);
     }
     }
 
 
@@ -361,7 +361,7 @@ public class WXPay {
      * @return API返回数据
      * @return API返回数据
      * @throws Exception
      * @throws Exception
      */
      */
-    public Map<String, String> orderQuery(Map<String, String> reqData, String appId,String mchId,String mchKey,
+    public static Map<String, String> orderQuery(Map<String, String> reqData, String appId,String mchId,String mchKey,
                                           int connectTimeoutMs, int readTimeoutMs) throws Exception {
                                           int connectTimeoutMs, int readTimeoutMs) throws Exception {
         String url;
         String url;
         if (useSandbox) {
         if (useSandbox) {

+ 51 - 47
src/main/java/com/fdkankan/pay/util/wx/WechatPayService.java

@@ -190,59 +190,63 @@ public class WechatPayService {
                 log.error("wx-callBack--wxConfig-notexist");
                 log.error("wx-callBack--wxConfig-notexist");
                 return false;
                 return false;
             }
             }
+            Map<String, String> data = new HashMap<String, String>();
+            data.put("out_trade_no", order.getOrderSn());
+            Map<String, String> resp = WXPay.orderQuery(data,wxConfig.getAppid(),wxConfig.getMchId(),wxConfig.getMchKey());
+            log.info("wx-callBack-queryOrder--req:{},resp:{}",data,resp);
+
+            if (resp.get("trade_state") != null && resp.get("trade_state").equals(WXPayConstants.SUCCESS)) {
+                payFlag = true;
+                return true;
+            }
+
             String inputLine = "";
             String inputLine = "";
             String notifyXml = "";
             String notifyXml = "";
-
-            JSONObject jsonObject = JSONObject.parseObject(ReadAsChars(request));
-            log.info("wx-callBack--msgJson:{}",jsonObject);
-            if(request.getContentType().contains("application/json")){
-
-            }else {
-                while((inputLine = request.getReader().readLine()) != null){
-                    notifyXml += inputLine;
-                }
-                //关闭流
-                request.getReader().close();
-                log.info("wx-callBack--msgXml:{}",notifyXml);
-                Map<String,String> map = WXPayUtil.xmlToMap(notifyXml);
-                //解析成Map
-
-                if (WXPayUtil.isSignatureValid(map,wxConfig.getMchKey(), WXPayConstants.SignType.MD5)
-                        || WXPayUtil.isSignatureValid(map, wxConfig.getMchKey(), WXPayConstants.SignType.HMACSHA256)) {
-                    //判断 支付是否成功
-                    if("SUCCESS".equals(map.get("result_code"))){
-                        //获得 返回的商户订单号
-                        String out_trade_no = map.get("out_trade_no");
-                        trade_no = map.get("transaction_id");
-                        openId = map.get("openid");
-                        log.info("微信回调返回商户订单号:out_trade_no:{},transaction_id:{},openid:{}" , out_trade_no,trade_no,openId);
-                        //修改订单状态
-                        //todo 支付成功
-                        if(!out_trade_no.equals(order.getOrderSn())){
-                            log.error("wx-call-back error :orderSn:{},out_trade_no:{}" ,order.getOrderSn(), out_trade_no);
-                            return false;
-                        }
-                        payFlag = true;
-
-                        log.info("微信支付成功,订单号:"  + out_trade_no);
-                        //通知微信服务器已经支付成功
-                        notifyXml = "<xml><return_code><![CDATA[SUCCESS]]></return_code>"
-                                + "<return_msg><![CDATA[OK]]></return_msg></xml> ";
-                    }else{
-                        notifyXml = "<xml><return_code><![CDATA[FAIL]]></return_code>"
-                                + "<return_msg><![CDATA[报文为空]]></return_msg></xml> ";
+            while((inputLine = request.getReader().readLine()) != null){
+                notifyXml += inputLine;
+            }
+            //关闭流
+            request.getReader().close();
+            log.info("wx-callBack--msgXml:{}",notifyXml);
+            Map<String,String> map = WXPayUtil.xmlToMap(notifyXml);
+            //解析成Map
+
+            if (WXPayUtil.isSignatureValid(map,wxConfig.getMchKey(), WXPayConstants.SignType.MD5)
+                    || WXPayUtil.isSignatureValid(map, wxConfig.getMchKey(), WXPayConstants.SignType.HMACSHA256)) {
+                //判断 支付是否成功
+                if("SUCCESS".equals(map.get("result_code"))){
+                    //获得 返回的商户订单号
+                    String out_trade_no = map.get("out_trade_no");
+                    trade_no = map.get("transaction_id");
+                    openId = map.get("openid");
+                    log.info("微信回调返回商户订单号:out_trade_no:{},transaction_id:{},openid:{}" , out_trade_no,trade_no,openId);
+                    //修改订单状态
+                    //todo 支付成功
+                    if(!out_trade_no.equals(order.getOrderSn())){
+                        log.error("wx-call-back error :orderSn:{},out_trade_no:{}" ,order.getOrderSn(), out_trade_no);
+                        return false;
                     }
                     }
-                } else{
-                    log.error("签名验证错误");
+                    payFlag = true;
+
+                    log.info("微信支付成功,订单号:"  + out_trade_no);
+                    //通知微信服务器已经支付成功
+                    notifyXml = "<xml><return_code><![CDATA[SUCCESS]]></return_code>"
+                            + "<return_msg><![CDATA[OK]]></return_msg></xml> ";
+                }else{
                     notifyXml = "<xml><return_code><![CDATA[FAIL]]></return_code>"
                     notifyXml = "<xml><return_code><![CDATA[FAIL]]></return_code>"
-                            + "<return_msg><![CDATA[签名验证错误]]></return_msg></xml>";
+                            + "<return_msg><![CDATA[报文为空]]></return_msg></xml> ";
                 }
                 }
-                BufferedOutputStream out = new BufferedOutputStream(
-                        response.getOutputStream());
-                out.write(notifyXml.getBytes());
-                out.flush();
-                out.close();
+            } else{
+                log.error("签名验证错误");
+                notifyXml = "<xml><return_code><![CDATA[FAIL]]></return_code>"
+                        + "<return_msg><![CDATA[签名验证错误]]></return_msg></xml>";
             }
             }
+            BufferedOutputStream out = new BufferedOutputStream(
+                    response.getOutputStream());
+            out.write(notifyXml.getBytes());
+            out.flush();
+            out.close();
+
 
 
         } catch (Exception e) {
         } catch (Exception e) {
             log.error("微信支付回调数据异常, error:", e);
             log.error("微信支付回调数据异常, error:", e);