Commit 0d60ea3a authored by 胡建龙's avatar 胡建龙

20220426 记录订单状态及日志

parent cdcd1d18
......@@ -8,7 +8,9 @@ import com.chinapay.secss.LogUtil;
import com.chinapay.service.IHlsEbankCcbTransactionService;
import com.chinapay.util.StringUtil;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.hand.app.cmb.dto.HlsEbankCmbTransqry;
import com.hand.app.cmb.dto.Ld037;
import com.hand.app.cmb.mapper.HlsEbankCmbTransqryMapper;
import com.hand.app.cmb.mapper.Ld037Mapper;
import com.hand.app.cmb.service.HclcCmbPolyService;
import com.hand.app.cmb.util.MD5Utils;
......@@ -536,6 +538,10 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
result.put("tradeState",hlsEbankCcbTransaction.getOrderStatus());
return result;
}
hlsEbankCmbTransqry.setOrderId(hlsEbankCcbTransaction.getCmbOrderId());
hlsEbankCmbTransqry.setTxnAmt(Math.round(hlsEbankCcbTransaction.getAmount()*100));
Map<String,String> responseMap = null;
ObjectMapper mapper =null;
HlsWsRequests hlsWsRequests = null;
......@@ -563,6 +569,7 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
apiHeader.put("timestamp", "" + currentTimeMills);
apiHeader.put("apisign", apiSignString);
hlsWsRequests = logInterfaceRequest(queryQrState, url, mapper.writeValueAsString(apiHeader), hlsEbankCcbTransaction.getTransactionId());
//发送http请求
responseMap = Utils.postForEntity(url,signResult,apiHeader);
......@@ -585,23 +592,36 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
//数据验签成功 if (checkResponse) {
//获取返回码,返回码不为SUCCESS表示报文内的字段不符合规范
String returnCode = responseMap.get("returnCode");
hlsEbankCmbTransqry.setReturnCode(returnCode);
if ("SUCCESS".equalsIgnoreCase(returnCode)) {
//响应码
String respCode = responseMap.get("returnCode");
if ("SUCCESS".equalsIgnoreCase(respCode)) {
//成功拿到订单状态请求的响应
hlsEbankCmbTransqry.setCmbOrderId(responseMap.get("cmbOrderId"));
hlsEbankCmbTransqry.setTxnTime(responseMap.get("txnTime"));
hlsEbankCmbTransqry.setPayType(responseMap.get("payType"));
hlsEbankCmbTransqry.setPayBank(responseMap.get("payBank"));
hlsEbankCmbTransqry.setTradeState(responseMap.get("tradeState"));
hlsEbankCmbTransqry.setEndDate(responseMap.get("endDate"));
hlsEbankCmbTransqry.setEndTime(responseMap.get("endTime"));
resultType = "1";
} else {
if ("SYSTERM_ERROR".equalsIgnoreCase(responseMap.get("errcode"))){
hlsEbankCmbTransqry.setReturnCode(respCode);
resultType = "6";
}else{
//请求成功,但是响应结果为失败,传给前端失败原因就行
hlsEbankCmbTransqry.setErrCode(responseMap.get("errCode"));
hlsEbankCmbTransqry.setRespMsg(responseMap.get("respMsg"));
resultType = "2";
}
}
} else {
//返回码都失败
hlsEbankCmbTransqry.setErrCode(responseMap.get("errCode"));
hlsEbankCmbTransqry.setRespMsg(responseMap.get("respMsg"));
resultType = "3";
}
......@@ -621,6 +641,7 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
hlsWsRequests.setReturnStatus("E");
hlsWsRequests.setResponsedDate(new Date());
}
hlsEbankCmbTransqryMapper.updateByPrimaryKey(hlsEbankCmbTransqry);
hlsWsRequestsMapper.updateByPrimaryKeySelective(hlsWsRequests);
hlsEbankCcbTransaction = setEbankTransactionQR(hlsEbankCcbTransaction, responseMap, resultType);
hlsEbankCcbTransactionMapper.updateByPrimaryKeySelective(hlsEbankCcbTransaction);
......@@ -875,94 +896,114 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
//开始封装请求部分
String signResult = getOrderQueryParameter(hlsEbankCcbTransaction);
ObjectMapper mapper = new ObjectMapper();
Map<String,String> signResultMap = null;
Map<String, String> apiHeader = null;
try {
signResultMap = mapper.readValue(signResult, Map.class);
} catch (IOException e) {
/// resultType = "5";
e.printStackTrace();
}
long currentTimeMills = System.currentTimeMillis() / 1000;
Map<String,String> signResultMap = mapper.readValue(signResult, Map.class);
long currentTimeMills = System.currentTimeMillis() / 1000;
// 组apiSign加密Map
Map<String,String> apiSign = new TreeMap<>();
apiSign.put("appid", appId);
apiSign.put("secret", appSecret);
apiSign.put("sign", signResultMap.get("sign"));
apiSign.put("timestamp", "" + currentTimeMills);
// 组apiSign加密Map
Map<String,String> apiSign = new TreeMap<>();
apiSign.put("appid", appId);
apiSign.put("secret", appSecret);
apiSign.put("sign", signResultMap.get("sign"));
apiSign.put("timestamp", "" + currentTimeMills);
// MD5加密
String MD5Content = SignatureUtil.getSignContent(apiSign);
String apiSignString = MD5Utils.getMD5Content(MD5Content).toLowerCase();
// MD5加密
String MD5Content = SignatureUtil.getSignContent(apiSign);
String apiSignString = MD5Utils.getMD5Content(MD5Content).toLowerCase();
// 组request头部Map
Map<String, String> apiHeader = new HashMap<>();
apiHeader.put("appid", appId);
apiHeader.put("timestamp", "" + currentTimeMills);
apiHeader.put("apisign", apiSignString);
// 组request头部Map
apiHeader = new HashMap<>();
apiHeader.put("appid", appId);
apiHeader.put("timestamp", "" + currentTimeMills);
apiHeader.put("apisign", apiSignString);
Map<String,String> responseMap = Utils.postForEntity(closeUrl,signResult,apiHeader);
//处理响应报文
Boolean checkResponse = null;
hlsEbankCmbTransqry.setOrderId(hlsEbankCcbTransaction.getCmbOrderId());
hlsEbankCmbTransqry.setTxnAmt(Math.round(hlsEbankCcbTransaction.getAmount()*100));
} catch (IOException e) {
/// resultType = "5";
e.printStackTrace();
}
HlsWsRequests hlsWsRequests = null;
try {
checkResponse = checkSign(mapper.writeValueAsString(responseMap));
hlsWsRequests = logInterfaceRequest(queryQrState, url, mapper.writeValueAsString(apiHeader), hlsEbankCcbTransaction.getTransactionId());
Map<String,String> responseMap = Utils.postForEntity(closeUrl,signResult,apiHeader);
//处理响应报文
Boolean checkResponse = checkSign(mapper.writeValueAsString(responseMap));
//数据验签成功
if (checkResponse) {
hlsWsRequests.setResponseClob(mapper.writeValueAsString(responseMap));
hlsWsRequests.setReturnStatus("S");
hlsWsRequests.setResponsedDate(new Date());
//获取返回码,返回码不为SUCCESS表示报文内的字段不符合规范
String returnCode = responseMap.get("returnCode");
hlsEbankCmbTransqry.setReturnCode(returnCode);
if ("SUCCESS".equalsIgnoreCase(returnCode)) {
//响应码
String respCode = responseMap.get("respCode");
hlsEbankCmbTransqry.setRespCode(respCode);
hlsEbankCmbTransqry.setOrderId(responseMap.get("origOrderId"));
if ("ORDER_PAID".equalsIgnoreCase(respCode)){
//需要调用退款接口
result.put(Constants.RESP_CODE, "E");
result.put("respMsg", "需要调用退款接口!");
return result;
}
else if ("SUCCESS".equalsIgnoreCase(respCode)) {
//订单关闭成功
hlsEbankCmbTransqry.setTradeState(responseMap.get("closeState"));
hlsEbankCmbTransqry.setTxnTime(responseMap.get("txnTime"));
if ("C".equalsIgnoreCase(responseMap.get("closeState"))){
hlsEbankCcbTransaction.setStatus(transClose);
hlsEbankCcbTransaction.setOrderStatus("C");
result.put(Constants.RESP_CODE, responseMap.get("respCode"));
result.put(Constants.RESP_MSG, "请求成功");
result.put("cmborderid",responseMap.get("origOrderId"));
result.put("closeState",responseMap.get("closeState"));
result.put("txnTime",responseMap.get("txnTime"));
}
//关单失败处理
else{
hlsEbankCcbTransaction.setOrderStatus("F");
result.put(Constants.RESP_CODE, responseMap.get("respCode"));
result.put(Constants.RESP_MSG, "请求成功");
result.put("cmborderid",responseMap.get("origOrderId"));
result.put("closeState",responseMap.get("closeState"));
result.put("txnTime",responseMap.get("txnTime"));
}
} else if ("SYSTERM_ERROR".equalsIgnoreCase(respCode)){
//请求成功,但是响应结果为失败,传给前端失败原因就行
result.put(Constants.RESP_CODE, "E");
result.put("respMsg", "需要重新调用查询接口!");
}
else if ("FAIL".equalsIgnoreCase(respCode)){
hlsEbankCmbTransqry.setErrCode(responseMap.get("errCode"));
hlsEbankCmbTransqry.setRespMsg(responseMap.get("respMsg"));
result.put("errCode", responseMap.get("errCode"));
result.put("respMsg", responseMap.get("respMsg"));
}
} else {
//返回码都失败
hlsEbankCmbTransqry.setErrCode(responseMap.get("errCode"));
hlsEbankCmbTransqry.setRespMsg(responseMap.get("respMsg"));
result.put("errCode", responseMap.get("errCode"));
result.put("respMsg", responseMap.get("respMsg"));
}
}
} catch (JsonProcessingException e) {
result.put(Constants.RESP_CODE, "E");
result.put("respMsg", "数据验签失败");
hlsWsRequests.setReturnStatus("E");
hlsWsRequests.setResponsedDate(new Date());
e.printStackTrace();
}
//数据验签成功 if (checkResponse) {
//获取返回码,返回码不为SUCCESS表示报文内的字段不符合规范
String returnCode = responseMap.get("returnCode");
if ("SUCCESS".equalsIgnoreCase(returnCode)) {
//响应码
String respCode = responseMap.get("returnCode");
if ("ORDER_PAID".equalsIgnoreCase(respCode)){
//需要调用退款接口
result.put(Constants.RESP_CODE, "E");
result.put("respMsg", "需要调用退款接口!");
return result;
}
else if ("SUCCESS".equalsIgnoreCase(respCode)) {
//订单关闭成功
if ("C".equalsIgnoreCase(responseMap.get("closeState"))){
hlsEbankCcbTransaction.setStatus(transClose);
hlsEbankCcbTransaction.setOrderStatus("C");
result.put(Constants.RESP_CODE, responseMap.get("respCode"));
result.put(Constants.RESP_MSG, "请求成功");
result.put("cmborderid",responseMap.get("origOrderId"));
result.put("closeState",responseMap.get("closeState"));
result.put("txnTime",responseMap.get("txnTime"));
}
//关单失败处理
else{
hlsEbankCcbTransaction.setOrderStatus("F");
result.put(Constants.RESP_CODE, responseMap.get("respCode"));
result.put(Constants.RESP_MSG, "请求成功");
result.put("cmborderid",responseMap.get("origOrderId"));
result.put("closeState",responseMap.get("closeState"));
result.put("txnTime",responseMap.get("txnTime"));
}
} else if ("SYSTERM_ERROR".equalsIgnoreCase(respCode)){
//请求成功,但是响应结果为失败,传给前端失败原因就行
result.put(Constants.RESP_CODE, "E");
result.put("respMsg", "需要重新调用查询接口!");
}
else if ("FAIL".equalsIgnoreCase(respCode)){
result.put("errCode", responseMap.get("errCode"));
result.put("respMsg", responseMap.get("respMsg"));
}
} else {
//返回码都失败
result.put("errCode", responseMap.get("errCode"));
result.put("respMsg", responseMap.get("respMsg"));
}
hlsEbankCmbTransqryMapper.updateByPrimaryKey(hlsEbankCmbTransqry);
hlsWsRequestsMapper.updateByPrimaryKey(hlsWsRequests);
hlsEbankCcbTransactionMapper.updateByPrimaryKey(hlsEbankCcbTransaction);
return result;
}
private Map<String, String> str2Map(String str) {
Map<String, String> result = new HashMap<>();
String[] results = str.split("&");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment