Browse Source

查询支付结果网银独立接口

zhijiezhao 3 năm trước cách đây
mục cha
commit
1b73ce8634

+ 2 - 2
src/main/java/com/caimei365/order/components/OnlinePostFormUtil.java

@@ -44,7 +44,7 @@ public class OnlinePostFormUtil {
         }
         if (!response.isSuccessful()) {
             try {
-                System.out.println(response.body().string());
+                log.info(response.body().string());
             } catch (IOException e) {
                 e.printStackTrace();
             }
@@ -61,7 +61,7 @@ public class OnlinePostFormUtil {
         JSONObject res = JSON.parseObject(content);
         //网银查询回调
         if (!"SUCCESS".equals(res.getString("rt10_orderStatus"))) {
-            log.info(res.toString());
+            log.info("网银查询成功结果------->"+res.toString());
         }
         /** rt4_success 为 true,需验签  **/
         return res.toJavaObject(clazz);

+ 22 - 1
src/main/java/com/caimei365/order/controller/HeliPayApi.java

@@ -188,7 +188,7 @@ public class HeliPayApi {
     @ApiImplicitParams({
             @ApiImplicitParam(required = true, name = "mbOrderId", value = "平台唯一流水号"),
             @ApiImplicitParam(required = true, name = "orderFlag", value = "订单标识:0非订单,1订单"),
-            @ApiImplicitParam(required = false, name = "orderFlag", value = "订单标识:0非订单,1订单"),
+            @ApiImplicitParam(required = false, name = "shopOrderId", value = "子订单Id")
     })
     @GetMapping("/result/json")
     public ResponseJson<JSONObject> getPayOrderResult(String mbOrderId,Integer orderFlag,Integer shopOrderId) throws IntrospectionException, InvocationTargetException, IllegalAccessException {
@@ -201,6 +201,27 @@ public class HeliPayApi {
         return heliPayService.getPayOrderResult(mbOrderId, orderFlag,shopOrderId);
     }
 
+    /**
+     * 查询网银本次支付订单结果
+     *
+     * @param mbOrderId 平台唯一流水号
+     */
+    @ApiOperation("查询网银本次支付订单结果(旧:/PayOrder/findOrderStatus)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = true, name = "mbOrderId", value = "平台唯一流水号"),
+            @ApiImplicitParam(required = true, name = "orderFlag", value = "订单标识:0非订单,1订单"),
+            @ApiImplicitParam(required = false, name = "shopOrderId", value = "子订单Id")
+    })
+    @GetMapping("/result/union")
+    public ResponseJson<JSONObject> getUnionResult(String mbOrderId,Integer orderFlag,Integer shopOrderId) throws IntrospectionException, InvocationTargetException, IllegalAccessException {
+        if (null == mbOrderId) {
+            return ResponseJson.error("平台唯一流水号不能为空!", null);
+        }
+        if (null == orderFlag) {
+            return ResponseJson.error("订单标识不能为空!", null);
+        }
+        return heliPayService.getUnionResult(mbOrderId, orderFlag,shopOrderId);
+    }
     /**
      * 合利宝pc支付宝二维码
      */

+ 2 - 0
src/main/java/com/caimei365/order/service/HeliPayService.java

@@ -50,4 +50,6 @@ public interface HeliPayService {
     String unionCallback(UnionResVo res) throws IntrospectionException, InvocationTargetException, IllegalAccessException;
 
     ResponseJson<List<ShopOrderVo>> getShopOrders(Integer orderId);
+
+    ResponseJson<JSONObject> getUnionResult(String mbOrderId, Integer orderFlag, Integer shopOrderId);
 }

+ 87 - 86
src/main/java/com/caimei365/order/service/impl/HeliPayServiceImpl.java

@@ -850,101 +850,55 @@ public class HeliPayServiceImpl implements HeliPayService {
     public ResponseJson<JSONObject> getPayOrderResult(String mbOrderId, Integer orderFlag, Integer shopOrderId) throws IntrospectionException, InvocationTargetException, IllegalAccessException {
         log.info("--------进入交易订单查询接口----------");
         //区分网银和其他产品
-        String payType = baseMapper.findType(mbOrderId);
-        if ("12".equals(payType) || "17".equals(payType)) {
-            String customerNumber = "";
-            if (0 == orderFlag) {
-                customerNumber = Constant.CUSTOMERNUM;
-            } else {
-                if (null == shopOrderId) {
-                    return ResponseJson.error("子订单Id不能为空!", null);
-                }
-                String splitCode = payOrderMapper.getSplitCodeByShopOrderId(shopOrderId);
-                if (null == splitCode) {
-                    return ResponseJson.error("订单信息不正确!", null);
-                }
-                customerNumber = splitCode;
-            }
-            Map<String, String> sPara = new HashMap<String, String>();
-            sPara.put("P1_bizType", "OnlineQuery");
-            sPara.put("P2_orderId", mbOrderId);
-            sPara.put("P3_customerNumber", customerNumber);
-            StringBuffer sb = new StringBuffer();
-            sb.append("&").append("OnlineQuery").append("&").append(mbOrderId).append("&")
-                    .append(customerNumber).append("&").append(WANGYIN);
-            String sign = Disguiser.disguiseMD5(sb.toString());
-            sPara.put("sign", sign);
-            try {
-                OnlineCheckVo on= OnlinePostFormUtil.postForm(sPara, YL, sign, OnlineCheckVo.class);
-                JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(on), JSONObject.class);
-                if (!"0000".equals(on.getRt2_retCode())) {
-                    log.info("查询失败:" + on.toString());
-                    return ResponseJson.error("查询失败",jsonObject);
-                } else {
-                    String assemblyRespOriSign = MyBeanUtils.getSignedByPresetParameter(on, OnlineCheckVo.NEED_SIGN_PARAMS);
-                    log.info("组装返回结果签名串:" + assemblyRespOriSign);
-                    assemblyRespOriSign += Constant.SPLIT + WANGYIN;
-                    String checkSign = Disguiser.disguiseMD5(assemblyRespOriSign.trim());
-                    if(!checkSign.equals(on.getSign())){
-                        return ResponseJson.error("验签失败",jsonObject);
-                    }else{
-                        return ResponseJson.success("查询成功",jsonObject);
-                    }
-                }
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
+        QueryOrderVo queryOrderVo = new QueryOrderVo();
+        queryOrderVo.setP1_bizType("AppPayQuery");
+        queryOrderVo.setP2_orderId(mbOrderId);
+        if (0 == orderFlag) {
+            queryOrderVo.setP3_customerNumber(Constant.CUSTOMERNUM);
         } else {
-            QueryOrderVo queryOrderVo = new QueryOrderVo();
-            queryOrderVo.setP1_bizType("AppPayQuery");
-            queryOrderVo.setP2_orderId(mbOrderId);
-            if (0 == orderFlag) {
-                queryOrderVo.setP3_customerNumber(Constant.CUSTOMERNUM);
-            } else {
-                if (null == shopOrderId) {
-                    return ResponseJson.error("子订单Id不能为空!", null);
-                }
-                String splitCode = payOrderMapper.getSplitCodeByShopOrderId(shopOrderId);
-                if (null == splitCode) {
-                    return ResponseJson.error("订单信息不正确!", null);
-                }
-                queryOrderVo.setP3_customerNumber(splitCode);
+            if (null == shopOrderId) {
+                return ResponseJson.error("子订单Id不能为空!", null);
             }
+            String splitCode = payOrderMapper.getSplitCodeByShopOrderId(shopOrderId);
+            if (null == splitCode) {
+                return ResponseJson.error("订单信息不正确!", null);
+            }
+            queryOrderVo.setP3_customerNumber(splitCode);
+        }
 
-            Map<String, String> map = MyBeanUtils.convertBean(queryOrderVo, new LinkedHashMap());
-            String oriMessage = MyBeanUtils.getSignedByPresetParameter(map, QueryOrderVo.NEED_SIGN_PARAMS);
-            oriMessage += Constant.SPLIT + Constant.SAOMA;
-            log.info("签名原文串:" + oriMessage);
-            String sign = Disguiser.disguiseMD5(oriMessage.trim());
-            log.info("md5加密签名串:" + sign);
-            map.put("sign", sign);
-            log.info("发送参数:" + map);
-            Map<String, Object> resultMap = HttpClientService.getHttpResp(map, Constant.REQUEST_URL);
-            log.info("响应结果:" + resultMap);
-            if ((Integer) resultMap.get("statusCode") == HttpStatus.SC_OK) {
-                String resultMsg = (String) resultMap.get("response");
-                QueryOrderResponseVo queryOrderResponseVo = JSONObject.parseObject(resultMsg, QueryOrderResponseVo.class);
-                String assemblyRespOriSign = MyBeanUtils.getSignedByPresetParameter(queryOrderResponseVo, QueryOrderResponseVo.NEED_SIGN_PARAMS);
-                log.info("组装返回结果签名串:" + assemblyRespOriSign);
-                assemblyRespOriSign += Constant.SPLIT + Constant.SAOMA;
-                String responseSign = queryOrderResponseVo.getSign();
-                log.info("响应签名:" + responseSign);
-                String checkSign = Disguiser.disguiseMD5(assemblyRespOriSign.trim());
-                if (checkSign.equals(responseSign)) {
-                    if ("0000".equals(queryOrderResponseVo.getRt2_retCode())) {
-                        JSONObject jsonObject = JSONObject.parseObject(resultMsg, JSONObject.class);
-                        return ResponseJson.success("查询成功", jsonObject);
-                    } else {
-                        return ResponseJson.error("验签失败", null);
-                    }
+        Map<String, String> map = MyBeanUtils.convertBean(queryOrderVo, new LinkedHashMap());
+        String oriMessage = MyBeanUtils.getSignedByPresetParameter(map, QueryOrderVo.NEED_SIGN_PARAMS);
+        oriMessage += Constant.SPLIT + Constant.SAOMA;
+        log.info("签名原文串:" + oriMessage);
+        String sign = Disguiser.disguiseMD5(oriMessage.trim());
+        log.info("md5加密签名串:" + sign);
+        map.put("sign", sign);
+        log.info("发送参数:" + map);
+        Map<String, Object> resultMap = HttpClientService.getHttpResp(map, Constant.REQUEST_URL);
+        log.info("响应结果:" + resultMap);
+        if ((Integer) resultMap.get("statusCode") == HttpStatus.SC_OK) {
+            String resultMsg = (String) resultMap.get("response");
+            QueryOrderResponseVo queryOrderResponseVo = JSONObject.parseObject(resultMsg, QueryOrderResponseVo.class);
+            String assemblyRespOriSign = MyBeanUtils.getSignedByPresetParameter(queryOrderResponseVo, QueryOrderResponseVo.NEED_SIGN_PARAMS);
+            log.info("组装返回结果签名串:" + assemblyRespOriSign);
+            assemblyRespOriSign += Constant.SPLIT + Constant.SAOMA;
+            String responseSign = queryOrderResponseVo.getSign();
+            log.info("响应签名:" + responseSign);
+            String checkSign = Disguiser.disguiseMD5(assemblyRespOriSign.trim());
+            if (checkSign.equals(responseSign)) {
+                if ("0000".equals(queryOrderResponseVo.getRt2_retCode())) {
+                    JSONObject jsonObject = JSONObject.parseObject(resultMsg, JSONObject.class);
+                    return ResponseJson.success("查询成功", jsonObject);
                 } else {
                     return ResponseJson.error("验签失败", null);
                 }
             } else {
-                return ResponseJson.error("查询失败", null);
+                return ResponseJson.error("验签失败", null);
             }
+        } else {
+            return ResponseJson.error("查询失败", null);
         }
-        return null;
+
     }
 
 
@@ -1225,6 +1179,53 @@ public class HeliPayServiceImpl implements HeliPayService {
         return ResponseJson.success(shopOrderList);
     }
 
+    @Override
+    public ResponseJson<JSONObject> getUnionResult(String mbOrderId, Integer orderFlag, Integer shopOrderId) {
+        String customerNumber = "";
+        if (0 == orderFlag) {
+            customerNumber = Constant.CUSTOMERNUM;
+        } else {
+            if (null == shopOrderId) {
+                return ResponseJson.error("子订单Id不能为空!", null);
+            }
+            String splitCode = payOrderMapper.getSplitCodeByShopOrderId(shopOrderId);
+            if (null == splitCode) {
+                return ResponseJson.error("订单信息不正确!", null);
+            }
+            customerNumber = splitCode;
+        }
+        Map<String, String> sPara = new HashMap<String, String>();
+        sPara.put("P1_bizType", "OnlineQuery");
+        sPara.put("P2_orderId", mbOrderId);
+        sPara.put("P3_customerNumber", customerNumber);
+        StringBuffer sb = new StringBuffer();
+        sb.append("&").append("OnlineQuery").append("&").append(mbOrderId).append("&")
+                .append(customerNumber).append("&").append(WANGYIN);
+        String sign = Disguiser.disguiseMD5(sb.toString());
+        sPara.put("sign", sign);
+        try {
+            OnlineCheckVo on = OnlinePostFormUtil.postForm(sPara, YL, sign, OnlineCheckVo.class);
+            JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(on), JSONObject.class);
+            if (!"0000".equals(on.getRt2_retCode())) {
+                log.info("查询失败:" + on.toString());
+                return ResponseJson.error("查询失败", jsonObject);
+            } else {
+                String assemblyRespOriSign = MyBeanUtils.getSignedByPresetParameter(on, OnlineCheckVo.NEED_SIGN_PARAMS);
+                log.info("组装返回结果签名串:" + assemblyRespOriSign);
+                assemblyRespOriSign += Constant.SPLIT + WANGYIN;
+                String checkSign = Disguiser.disguiseMD5(assemblyRespOriSign.trim());
+                if (!checkSign.equals(on.getSign())) {
+                    return ResponseJson.error("验签失败", jsonObject);
+                } else {
+                    return ResponseJson.success("查询成功", jsonObject);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
     public static <T> T postForm(Map<String, String> params, String url, String sign, Class<T> clazz) {
         FormBody.Builder builder = new FormBody.Builder();
         for (Map.Entry<String, String> entry : params.entrySet()) {