Browse Source

[车流][整理]:etcp异常结果处理

release_toaliyun_real
Stormeye Wu 7 years ago
parent
commit
e5cb62a2e6
2 changed files with 170 additions and 47 deletions
  1. +60
    -11
      mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java
  2. +110
    -36
      mallinkService/src/main/java/com/iformall/utils/ETCPUtil.java

+ 60
- 11
mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java View File

@@ -10,6 +10,7 @@ import com.iformall.domain.po.*;
import com.iformall.domain.vo.WxCouponOrderCarCVo;
import com.iformall.domain.vo.WxMerchantVo;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.service.*;
import com.iformall.utils.ETCPUtil;
import com.iformall.utils.TJDCarUtil;
@@ -109,16 +110,26 @@ public class WxCarController extends BaseController {
String merchantKey = objParams.getString("merchantKey");
String version = objParams.getString("version");

String ret = etcp.userSignin(url, appId, merchantNo, merchantKey, version, phone);
String ret = "";
try {
ret = etcp.userSignin(url, appId, merchantNo, merchantKey, version, phone);
} catch (MallinkException e) {
logger.error("ETCP fail: " + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
}
JSONObject retObj = JSON.parseObject(ret);
if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) {
// 获取绑定的车牌
JSONObject dataObj = retObj.getJSONObject("data");
dataObj.put("vendor", EnumCarVendor.CAR_ETCP.getCode());
String etcpToken = dataObj.getString("token");
JSONObject dataObj1 = syncCarNumbers(user.getId(), user.getTenantId(), park.getVendorType(),
url, merchantNo, merchantKey, version,
etcpToken);
try {
JSONObject dataObj1 = syncCarNumbers(user.getId(), user.getTenantId(), park.getVendorType(),
url, merchantNo, merchantKey, version,
etcpToken);
} catch (MallinkException e) {
logger.error("ETCP cmd error: " + e.getMessage());
}
// c端必须保存此token
return new ResultData(dataObj);
} else {
@@ -152,8 +163,12 @@ public class WxCarController extends BaseController {
String etcpToken) {
String ret;
JSONObject retObj;
ret = etcp.carNum(url, merchantNo, merchantKey, version, etcpToken);
/*{"code": 0,"msg": "ok","data": {"number": 3,"carList": ["晋 BMZ105","云 C12345"]}} */
try {
ret = etcp.carNum(url, merchantNo, merchantKey, version, etcpToken);
} catch (MallinkException e) {
throw new MallinkException(e.getErrorCode(), e.getMessage());
}
retObj = JSON.parseObject(ret);
JSONObject dataObj1 = retObj.getJSONObject("data");
dataObj1.put("vendor", iVendorType);
@@ -251,7 +266,13 @@ public class WxCarController extends BaseController {
String merchantKey = objParams.getString("merchantKey");
String version = objParams.getString("version");

String ret = etcp.bindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber, null);
String ret = "";
try {
ret = etcp.bindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber, null);
} catch (MallinkException e) {
logger.error("ETCP fail: " + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
}
JSONObject retObj = JSON.parseObject(ret);
if (retObj.getIntValue("code") == 0) {
// 插入车牌
@@ -375,7 +396,14 @@ public class WxCarController extends BaseController {
String merchantKey = objParams.getString("merchantKey");
String version = objParams.getString("version");

String ret = etcp.unbindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber);
String ret = "";
try {
ret = etcp.unbindCar(url, merchantNo, merchantKey, version, etcpToken, carNumber);
} catch (MallinkException e) {
logger.error("ETCP fail: " + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
}

JSONObject retObj = JSON.parseObject(ret);
if (retObj.getIntValue("code") == 0) {
try {
@@ -497,7 +525,14 @@ public class WxCarController extends BaseController {
String merchantKey = objParams.getString("merchantKey");
String version = objParams.getString("version");

String ret = etcp.orderUnpay(url, appId, merchantNo, merchantKey, version, etcpToken, carNumber);
String ret = "";
try {
ret = etcp.orderUnpay(url, appId, merchantNo, merchantKey, version, etcpToken, carNumber);
} catch (MallinkException e) {
logger.error("ETCP failed: " + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
}

JSONObject retObj = JSON.parseObject(ret);
if (retObj.getIntValue("code") == 0) {
JSONObject feeObj = retObj.getJSONArray("data").getJSONObject(0);
@@ -667,8 +702,14 @@ public class WxCarController extends BaseController {
businessId = objParams.getString("businessId");
}

String ret = etcp.bCouponRecord(url, merchantNo, merchantKey, version,
etcpToken, park.getParkId(), businessId, carNumber, String.valueOf(userCar.getCouponFreeId()));
String ret = "";
try {
ret = etcp.bCouponRecord(url, merchantNo, merchantKey, version,
etcpToken, park.getParkId(), businessId, carNumber, String.valueOf(userCar.getCouponFreeId()));
} catch (MallinkException e) {
logger.error("ETCP failed: " + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
}
JSONObject retObj = JSON.parseObject(ret);
if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) {

@@ -732,6 +773,7 @@ public class WxCarController extends BaseController {
String version = objParams.getString("version");
if (park.getParkingId() == null) {
// those code is not supported
/*
String lat = objParams.getString("lat");
String lon = objParams.getString("lon");
String radius = objParams.getString("radius");
@@ -755,10 +797,17 @@ public class WxCarController extends BaseController {
}
}
}
*/
}

if (park.getParkingId() != null) {
String ret = etcp.parkingStatus(url, merchantNo, merchantKey, version, park.getParkingId());
String ret = "";
try {
ret = etcp.parkingStatus(url, merchantNo, merchantKey, version, park.getParkingId());
} catch (MallinkException e) {
logger.error("ETCP failed: " + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
}

JSONObject retObj = JSON.parseObject(ret);
if (retObj.getIntValue("code") == EnumETCPCode.SUCCESS.getCode()) {


+ 110
- 36
mallinkService/src/main/java/com/iformall/utils/ETCPUtil.java View File

@@ -3,6 +3,8 @@ package com.iformall.utils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.iformall.common.ErrorCode;
import com.iformall.exception.MallinkException;
import okhttp3.*;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
@@ -306,7 +308,7 @@ public class ETCPUtil {
* }
*/
public String userSignin(String baseUrl, String appId, String merchantNo, String merchantKey, String version,
String mobilePhone) {
String mobilePhone) throws MallinkException {
JSONObject jsonObject = new JSONObject();
jsonObject.put("appId", appId);
jsonObject.put("mobilePhone", mobilePhone);
@@ -315,8 +317,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp);

return doPost(baseUrl + userSigninUrl.replaceAll("\\{version}", version), data, sign,
String respStr = doPost(baseUrl + userSigninUrl.replaceAll("\\{version}", version), data, sign,
timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
}

/**
@@ -333,7 +339,7 @@ public class ETCPUtil {
*/
public String bindCar(String baseUrl, String merchantNo, String merchantKey, String version,
String etcpToken,
String plateNumber, String plateColor) {
String plateNumber, String plateColor) throws MallinkException {
JSONObject jsonObject = new JSONObject();
jsonObject.put("token", etcpToken);
jsonObject.put("plateNumber", plateNumber);
@@ -346,8 +352,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp);

return doPost(baseUrl + bindCarUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + bindCarUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
}

/**
@@ -363,7 +373,7 @@ public class ETCPUtil {
*/
public String unbindCar(String baseUrl, String merchantNo, String merchantKey, String version,
String etcpToken,
String plateNumber) {
String plateNumber) throws MallinkException {
JSONObject jsonObject = new JSONObject();
jsonObject.put("token", etcpToken);
jsonObject.put("plateNumber", plateNumber);
@@ -372,8 +382,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp);

return doPost(baseUrl + unbindCarUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + unbindCarUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
}

/**
@@ -392,7 +406,7 @@ public class ETCPUtil {
public String carAuth(String baseUrl, String merchantNo, String merchantKey, String version,
String etcpToken,
String carFrameNum, String plateNumber, String carEngineNum
) {
) throws MallinkException {
JSONObject jsonObject = new JSONObject();
jsonObject.put("token", etcpToken);
jsonObject.put("carFrameNum", carFrameNum);
@@ -403,8 +417,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp);

return doPost(baseUrl + carAuthUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + carAuthUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
}

/**
@@ -423,7 +441,7 @@ public class ETCPUtil {
*/
public String carRetrieve(String baseUrl, String merchantNo, String merchantKey, String version,
String etcpToken,
String carFrameNum, String plateNumber, String carEngineNum, String plateColor ) {
String carFrameNum, String plateNumber, String carEngineNum, String plateColor ) throws MallinkException {
JSONObject jsonObject = new JSONObject();
jsonObject.put("token", etcpToken);
jsonObject.put("carFrameNum", carFrameNum);
@@ -436,8 +454,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp);

return doPost(baseUrl + carRetrieveUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + carRetrieveUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
}

/**
@@ -458,7 +480,7 @@ public class ETCPUtil {
* }
*/
public String carNum(String baseUrl, String merchantNo, String merchantKey, String version,
String etcpToken) {
String etcpToken) throws MallinkException {
JSONObject jsonObject = new JSONObject();
jsonObject.put("token", etcpToken);

@@ -466,8 +488,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp);

return doGet(baseUrl + carNumUrl.replaceAll("\\{version}", version),
String respStr = doGet(baseUrl + carNumUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
}

/**
@@ -481,7 +507,7 @@ public class ETCPUtil {
public String orderUnpay(String baseUrl,
String appId, String merchantNo, String merchantKey, String version,
String etcpToken,
String plateNumber) {
String plateNumber) throws MallinkException {
JSONObject jsonObject = new JSONObject();
jsonObject.put("token", etcpToken);
jsonObject.put("plateNumber", plateNumber);
@@ -493,8 +519,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp);

return doGet(baseUrl + orderUnpayUrl.replaceAll("\\{version}", version),
String respStr = doGet(baseUrl + orderUnpayUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
}

/**
@@ -508,7 +538,7 @@ public class ETCPUtil {
public String couponList(String baseUrl,
String merchantNo, String merchantKey, String version,
String etcpToken,
String lastCode, String pageSize) {
String lastCode, String pageSize) throws MallinkException {
JSONObject jsonObject = new JSONObject();
jsonObject.put("token", etcpToken);
if (!StringUtils.isBlank(lastCode))
@@ -519,8 +549,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp);

return doGet(baseUrl + couponListUrl.replaceAll("\\{version}", version),
String respStr = doGet(baseUrl + couponListUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
}

/**
@@ -531,7 +565,7 @@ public class ETCPUtil {
*/
public String orderHistory(String baseUrl,
String merchantNo, String merchantKey, String version,
String etcpToken) {
String etcpToken) throws MallinkException {
JSONObject jsonObject = new JSONObject();
jsonObject.put("token", etcpToken);

@@ -539,8 +573,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp);

return doGet(baseUrl + orderHistoryUrl.replaceAll("\\{version}", version),
String respStr = doGet(baseUrl + orderHistoryUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
}

/**
@@ -555,7 +593,7 @@ public class ETCPUtil {
public String orderPay(String baseUrl,
String merchantNo, String merchantKey, String version,
String etcpToken, String orderId,
String returnUrl, String couponCode) {
String returnUrl, String couponCode) throws MallinkException {
// payType 支付方式(1 微信公众号内支付 2 支付宝 H5 支付 3 微信二维码 4 支付宝二维码 5 微信 H5)(非空)
int payType = 1;
JSONObject jsonObject = new JSONObject();
@@ -571,8 +609,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp);

return doPost(baseUrl + orderpayUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + orderpayUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
}

/**
@@ -591,7 +633,7 @@ public class ETCPUtil {
String appId, String merchantNo, String merchantKey, String version,
String etcpToken,
String orderId, String externalOrderId,
BigDecimal payment, String payTime, String verificationInfo) {
BigDecimal payment, String payTime, String verificationInfo) throws MallinkException {
JSONObject jsonObject = new JSONObject();
jsonObject.put("token", etcpToken);
jsonObject.put("orderId", orderId);
@@ -607,8 +649,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp);

return doPost(baseUrl + orderPaidUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + orderPaidUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
}

/**
@@ -619,7 +665,7 @@ public class ETCPUtil {
*/
public String parkingInfo(String baseUrl,
String merchantNo, String merchantKey, String version,
String lat, String lon, String radius) {
String lat, String lon, String radius) throws MallinkException {
JSONObject jsonObject = new JSONObject();
jsonObject.put("lat", lat);
jsonObject.put("lon", lon);
@@ -630,8 +676,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp);

return doPost(baseUrl + parkingInfoUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + parkingInfoUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
}

/**
@@ -642,7 +692,7 @@ public class ETCPUtil {
*/
public String parkingStatus(String baseUrl,
String merchantNo, String merchantKey, String version,
String parkingId) {
String parkingId) throws MallinkException {
JSONObject jsonObject = new JSONObject();
jsonObject.put("parkingId", parkingId);

@@ -650,8 +700,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp);

return doPost(baseUrl + parkingStatusUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + parkingStatusUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
}

/**
@@ -662,7 +716,7 @@ public class ETCPUtil {
*/
public String getDebt(String baseUrl,
String appId, String merchantNo, String merchantKey, String version,
String etcpToken, String carNumber) {
String etcpToken, String carNumber) throws MallinkException {
JSONObject jsonObject = new JSONObject();
jsonObject.put("token", etcpToken);
jsonObject.put("appId", appId);
@@ -672,8 +726,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp);

return doPost(baseUrl + parkingStatusUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + parkingStatusUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
}

/**
@@ -686,7 +744,7 @@ public class ETCPUtil {
*/
public String repayDebt(String baseUrl,
String merchantNo, String merchantKey, String version,
String etcpToken, String returnUrl) {
String etcpToken, String returnUrl) throws MallinkException {
// payType(1:支付宝 2:微信H5)
int payType = 2;
JSONObject jsonObject = new JSONObject();
@@ -698,8 +756,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp);

return doPost(baseUrl + parkingStatusUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + parkingStatusUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
}

/**
@@ -709,7 +771,7 @@ public class ETCPUtil {
*/
public String getBCouponList(String baseUrl,
String merchantNo, String merchantKey, String version,
String parkId, String businessId) {
String parkId, String businessId) throws MallinkException {
JSONObject jsonObject = new JSONObject();
jsonObject.put("parkId", parkId);
jsonObject.put("businessId", businessId);
@@ -718,8 +780,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp);

return doPost(baseUrl + bCouponListUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + bCouponListUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
}

/**
@@ -731,7 +797,7 @@ public class ETCPUtil {
public String bCouponRecord(String baseUrl,
String merchantNo, String merchantKey, String version,
String etcpToken,
String parkId, String businessId, String carNumber, String couponFreeId) {
String parkId, String businessId, String carNumber, String couponFreeId) throws MallinkException {
JSONObject jsonObject = new JSONObject();
jsonObject.put("token", etcpToken);
jsonObject.put("parkId", parkId);
@@ -743,8 +809,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp);

return doPost(baseUrl + bCouponRecordUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + bCouponRecordUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
}

/**
@@ -755,7 +825,7 @@ public class ETCPUtil {
*/
public String carSimulation(String baseUrl,
String appId, String merchantNo, String merchantKey, String version,
String plateNumber) {
String plateNumber) throws MallinkException {
JSONObject jsonObject = new JSONObject();
jsonObject.put("appId", appId);
jsonObject.put("plateNumber", plateNumber);
@@ -764,8 +834,12 @@ public class ETCPUtil {
String timeStamp = dateTimeFormatter.format(LocalDateTime.now());
String sign = genSign(data, merchantKey, timeStamp);

return doPost(baseUrl + bCarSimulationUrl.replaceAll("\\{version}", version),
String respStr = doPost(baseUrl + bCarSimulationUrl.replaceAll("\\{version}", version),
data, sign, timeStamp, merchantNo);
if(respStr.startsWith("<html>")) {
throw new MallinkException(ErrorCode.ETCP_CMD_FAIL);
}
return respStr;
}

private String doPost(String url, String data, String sign, String timeStamp, String merchantNo) {


Loading…
Cancel
Save