Commit ae5c4915 authored by 5359's avatar 5359

订单结果查询接口代码调整

parent e4df144b
...@@ -80,6 +80,8 @@ public class HlsEbankCcbTransaction extends BaseDTO { ...@@ -80,6 +80,8 @@ public class HlsEbankCcbTransaction extends BaseDTO {
private String txnTime; private String txnTime;
private Date successDate;
public Long getTransactionId() { public Long getTransactionId() {
return transactionId; return transactionId;
} }
...@@ -279,4 +281,12 @@ public class HlsEbankCcbTransaction extends BaseDTO { ...@@ -279,4 +281,12 @@ public class HlsEbankCcbTransaction extends BaseDTO {
public void setTxnTime(String txnTime) { public void setTxnTime(String txnTime) {
this.txnTime = txnTime; this.txnTime = txnTime;
} }
public Date getSuccessDate() {
return successDate;
}
public void setSuccessDate(Date successDate) {
this.successDate = successDate;
}
} }
\ No newline at end of file
...@@ -33,9 +33,9 @@ public class HlsEbankCmbTransqry { ...@@ -33,9 +33,9 @@ public class HlsEbankCmbTransqry {
private String errDescription; private String errDescription;
private Long txnAmt; private String txnAmt;
private Long dscAmt; private String dscAmt;
private String currencyCode; private String currencyCode;
...@@ -69,6 +69,10 @@ public class HlsEbankCmbTransqry { ...@@ -69,6 +69,10 @@ public class HlsEbankCmbTransqry {
private Long lastUpdatedBy; private Long lastUpdatedBy;
private String status;
private String queryCategory;
public Long getTransqryId() { public Long getTransqryId() {
return transqryId; return transqryId;
} }
...@@ -149,19 +153,19 @@ public class HlsEbankCmbTransqry { ...@@ -149,19 +153,19 @@ public class HlsEbankCmbTransqry {
this.errDescription = errDescription; this.errDescription = errDescription;
} }
public Long getTxnAmt() { public String getTxnAmt() {
return txnAmt; return txnAmt;
} }
public void setTxnAmt(Long txnAmt) { public void setTxnAmt(String txnAmt) {
this.txnAmt = txnAmt; this.txnAmt = txnAmt;
} }
public Long getDscAmt() { public String getDscAmt() {
return dscAmt; return dscAmt;
} }
public void setDscAmt(Long dscAmt) { public void setDscAmt(String dscAmt) {
this.dscAmt = dscAmt; this.dscAmt = dscAmt;
} }
...@@ -292,4 +296,21 @@ public class HlsEbankCmbTransqry { ...@@ -292,4 +296,21 @@ public class HlsEbankCmbTransqry {
public void setLastUpdatedBy(Long lastUpdatedBy) { public void setLastUpdatedBy(Long lastUpdatedBy) {
this.lastUpdatedBy = lastUpdatedBy; this.lastUpdatedBy = lastUpdatedBy;
} }
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getQueryCategory() {
return queryCategory;
}
public void setQueryCategory(String queryCategory) {
this.queryCategory = queryCategory;
}
} }
...@@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONObject; ...@@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONObject;
import com.chinapay.comm.Constants; import com.chinapay.comm.Constants;
import com.chinapay.dto.HlsEbankCcbTransaction; import com.chinapay.dto.HlsEbankCcbTransaction;
import com.chinapay.mapper.HlsEbankCcbTransactionMapper; import com.chinapay.mapper.HlsEbankCcbTransactionMapper;
import com.chinapay.secss.LogUtil;
import com.chinapay.service.IHlsEbankCcbTransactionService; import com.chinapay.service.IHlsEbankCcbTransactionService;
import com.chinapay.util.StringUtil; import com.chinapay.util.StringUtil;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
...@@ -18,16 +17,21 @@ import com.hand.app.cmb.util.SM2Util; ...@@ -18,16 +17,21 @@ import com.hand.app.cmb.util.SM2Util;
import com.hand.app.cmb.util.SignatureUtil; import com.hand.app.cmb.util.SignatureUtil;
import com.hand.app.cmb.util.Utils; import com.hand.app.cmb.util.Utils;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.hand.app.esignHclc.utils.SignHclcUtils;
import com.hand.app.zhongDengWang.dto.HlsWsRequests; import com.hand.app.zhongDengWang.dto.HlsWsRequests;
import com.hand.app.zhongDengWang.mapper.HlsWsRequestsMapper; import com.hand.app.zhongDengWang.mapper.HlsWsRequestsMapper;
import com.hand.hap.core.IRequest; import com.hand.hap.core.IRequest;
import com.hand.hap.intergration.dto.HapInterfaceHeader;
import com.hand.hap.intergration.service.IHapInterfaceHeaderService;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;
import java.io.FileInputStream;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
...@@ -36,20 +40,23 @@ import java.util.stream.Collectors; ...@@ -36,20 +40,23 @@ import java.util.stream.Collectors;
@Service @Service
public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
static{
private static Properties pro = null;
static {
String path = Thread.currentThread().getContextClassLoader().getResource("").getPath().substring(1); String path = Thread.currentThread().getContextClassLoader().getResource("").getPath().substring(1);
Properties pro = Utils.loadProp(path + "cmb.properties"); pro = Utils.loadProp(path + "cmb.properties");
if (Objects.isNull(pro)){ if (Objects.isNull(pro)) {
LoggerFactory.getLogger(HclcCmbPolyServiceImpl.class).error("配置文件初始化异常"); LoggerFactory.getLogger(HclcCmbPolyServiceImpl.class).error("配置文件初始化异常");
} }
} }
/*接口区分*/ /*接口区分*/
public static final String getQrCode = "GET_QR_CODE"; public static final String getQrCode = "GET_QR_CODE";
public static final String queryQrState = "QUERY_QR_STATE"; public static final String queryQrState = "QUERY_QR_STATE";
public static final String closeOrder="CLOSE_ORDER"; public static final String closeOrder = "CLOSE_ORDER";
/*代扣交易状态*/ /*交易订单事务状态*/
public static final String tranSuccess = "SUCCESS"; public static final String tranSuccess = "SUCCESS";
public static final String transNew = "NEW"; public static final String transNew = "NEW";
public static final String transDeal = "DEAL"; public static final String transDeal = "DEAL";
...@@ -62,6 +69,7 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -62,6 +69,7 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
public static final String orderDelete = "D"; public static final String orderDelete = "D";
public static final String orderCancel = "C"; public static final String orderCancel = "C";
public static final String orderPass = "P"; public static final String orderPass = "P";
public static final String orderNo = "N";
@Autowired @Autowired
...@@ -74,16 +82,18 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -74,16 +82,18 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
private Ld037Mapper ld037Mapper; private Ld037Mapper ld037Mapper;
@Autowired @Autowired
private HlsEbankCmbTransqryMapper hlsEbankCmbTransqryMapper; private HlsEbankCmbTransqryMapper hlsEbankCmbTransqryMapper;
@Autowired
IHapInterfaceHeaderService headerService;
@Autowired
private DataSourceTransactionManager transactionManager;
private Logger logger = LoggerFactory.getLogger(getClass()); private Logger logger = LoggerFactory.getLogger(getClass());
private static Properties pro = null;
@Override @Override
public JSONObject getQrcode(IRequest iRequest, JSONObject params) { public JSONObject getQrcode(IRequest iRequest, JSONObject params) {
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
String resultType = "-1"; String resultType = "-1";
String errorCd = null; String errorCd = null;
HlsEbankCmbTransqry hlsEbankCmbTransqry = new HlsEbankCmbTransqry();
if (Objects.isNull(params.get("recamt_id"))) { if (Objects.isNull(params.get("recamt_id"))) {
result.put(Constants.RESP_CODE, "E"); result.put(Constants.RESP_CODE, "E");
...@@ -111,21 +121,15 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -111,21 +121,15 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
String dateString = formatter.format(new Date()); String dateString = formatter.format(new Date());
hlsEbankCcbTransaction.setTransactionNumber(dateString + String.format("%08d", hlsEbankCcbTransaction.getTransactionId())); hlsEbankCcbTransaction.setTransactionNumber(dateString + String.format("%08d", hlsEbankCcbTransaction.getTransactionId()));
// Map<String, String> requestPublicParams = JSONObject.parseObject(params.toJSONString(), Map.class); Map<String, String> response = null;
try {
// 组装requestBody并加签 // 组装requestBody并加签
String signResult = getQrRequestParams(hlsEbankCcbTransaction, ld037); String signResult = getQrRequestParams(hlsEbankCcbTransaction, ld037);
if (Objects.isNull(signResult)) { if (Objects.isNull(signResult)) {
result.put(Constants.RESP_CODE, "E"); throw new Exception("加签发生异常");
result.put(Constants.RESP_MSG, "收款码申请加签发生异常,请检查!");
return result;
} }
hlsEbankCmbTransqry.setOrderId(hlsEbankCcbTransaction.getCmbOrderId());
hlsEbankCmbTransqry.setTxnAmt(Math.round(hlsEbankCcbTransaction.getAmount()*100));
Map<String, String> response = null;
try {
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
Map<String, String> signResultMap = mapper.readValue(signResult, Map.class); Map<String, String> signResultMap = mapper.readValue(signResult, Map.class);
long currentTimeMills = System.currentTimeMillis() / 1000; long currentTimeMills = System.currentTimeMillis() / 1000;
...@@ -148,12 +152,12 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -148,12 +152,12 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
apiHeader.put("apisign", apiSignString); apiHeader.put("apisign", apiSignString);
//初始化日志 //初始化日志
HlsWsRequests hlsWsRequests = logInterfaceRequest(getQrCode, pro.getProperty("qrCodeapplyUrl"), mapper.writeValueAsString(apiHeader), hlsEbankCcbTransaction.getTransactionId()); HlsWsRequests hlsWsRequests = logInterfaceRequest(getQrCode, pro.getProperty("cmb.qrCodeapplyUrl"), mapper.writeValueAsString(apiHeader), hlsEbankCcbTransaction.getTransactionId());
logger.info("发送收款码申请请求,请求参数: {}", mapper.writeValueAsString(apiHeader)); logger.info("发送收款码申请请求,请求参数: {}", mapper.writeValueAsString(apiHeader));
try { try {
// 发送HTTP post请求 // 发送HTTP post请求
response = Utils.postForEntity( pro.getProperty("cmb.qrCodeapplyUrl"), signResult, apiHeader); response = Utils.postForEntity(pro.getProperty("cmb.qrCodeapplyUrl"), signResult, apiHeader);
//处理接口日志 //处理接口日志
logger.info("收款码申请返回结果:" + mapper.writeValueAsString(response)); logger.info("收款码申请返回结果:" + mapper.writeValueAsString(response));
...@@ -168,24 +172,16 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -168,24 +172,16 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
if (checkResult1) { if (checkResult1) {
//获取返回码,返回码不为SUCCESS表示报文内的字段不符合规范 //获取返回码,返回码不为SUCCESS表示报文内的字段不符合规范
String returnCode = response.get("returnCode"); String returnCode = response.get("returnCode");
hlsEbankCmbTransqry.setReturnCode(returnCode);
if ("SUCCESS".equalsIgnoreCase(returnCode)) { if ("SUCCESS".equalsIgnoreCase(returnCode)) {
//响应码 //响应码
String respCode = response.get("respCode"); String respCode = response.get("respCode");
hlsEbankCmbTransqry.setRespCode(respCode);
if ("SUCCESS".equalsIgnoreCase(respCode)) { if ("SUCCESS".equalsIgnoreCase(respCode)) {
resultType = "1"; resultType = "1";
hlsEbankCmbTransqry.setCmbOrderId(response.get("cmbOrderId"));
hlsEbankCmbTransqry.setTxnTime(response.get("txnTime"));
} else { } else {
resultType = "2"; resultType = "2";
hlsEbankCmbTransqry.setErrCode(response.get("errCode"));
hlsEbankCmbTransqry.setRespMsg(response.get("respMsg"));
} }
} else { } else {
resultType = "3"; resultType = "3";
hlsEbankCmbTransqry.setErrCode(response.get("errCode"));
hlsEbankCmbTransqry.setRespMsg(response.get("respMsg"));
} }
if (!"1".equalsIgnoreCase(resultType)) { if (!"1".equalsIgnoreCase(resultType)) {
...@@ -213,21 +209,19 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -213,21 +209,19 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
hlsWsRequests.setResponsedDate(new Date()); hlsWsRequests.setResponsedDate(new Date());
//请求批次事务表状态更新失败处理 //请求批次事务表状态更新失败处理
hlsEbankCcbTransaction.setReturnMsg(e.getMessage()); hlsEbankCcbTransaction.setReturnMsg("发送请求异常,请查看日志");
result.put(Constants.RESP_MSG, "发送请求异常:" + e.getMessage()); result.put(Constants.RESP_MSG, "发送请求异常,请查看日志!");
resultType = "5"; resultType = "5";
} }
hlsWsRequestsMapper.updateByPrimaryKeySelective(hlsWsRequests); hlsWsRequestsMapper.updateByPrimaryKeySelective(hlsWsRequests);
hlsEbankCmbTransqryMapper.updateByPrimaryKey(hlsEbankCmbTransqry);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
logger.info("组装请求报文信息失败: {} ", e.getMessage()); logger.info("组装请求报文信息失败: {} ", e.getMessage());
//请求批次事务表状态更新失败处理 //请求批次事务表状态更新失败处理
hlsEbankCcbTransaction.setReturnMsg("组装请求报文信息失败:" + e.getMessage()); hlsEbankCcbTransaction.setReturnMsg("组装请求报文信息失败,请查看日志");
result.put(Constants.RESP_MSG, "组装请求报文信息失败:" + e.getMessage()); result.put(Constants.RESP_MSG, "组装请求报文信息失败,请查看日志!");
errorCd = "MESSAGE_ERROR"; errorCd = "MESSAGE_ERROR";
resultType = "5"; resultType = "5";
...@@ -255,17 +249,12 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -255,17 +249,12 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
result.put(Constants.RESP_CODE, response.get("returnCode")); result.put(Constants.RESP_CODE, response.get("returnCode"));
result.put(Constants.RESP_MSG, "请求成功"); result.put(Constants.RESP_MSG, "请求成功");
//测试环境处理,生产需要还原 //测试环境处理,生产需要还原
result.put("qrcode", bizContent.getString("qrCode").replace("https://qr.95516.com/","http://payment-uat.cs.cmburl.cn/")); result.put("qrCode", bizContent.getString("qrCode").replace("https://qr.95516.com/", "http://payment-uat.cs.cmburl.cn/"));
result.put("cmborderid", bizContent.getString("cmbOrderId")); result.put("cmbOrderId", bizContent.getString("cmbOrderId"));
result.put("txnTime", bizContent.getString("txnTime")); result.put("txnTime", bizContent.getString("txnTime"));
} }
//接口返回成功,响应失败 //接口返回成功,响应失败
else if ("2".equalsIgnoreCase(type)) { else if ("2".equalsIgnoreCase(type) || "3".equalsIgnoreCase(type)) {
result.put(Constants.RESP_CODE, response.get("errCode"));
result.put(Constants.RESP_MSG, response.get("respMsg"));
}
//接口返回失败
else if ("3".equalsIgnoreCase(type)) {
result.put(Constants.RESP_CODE, response.get("errCode")); result.put(Constants.RESP_CODE, response.get("errCode"));
result.put(Constants.RESP_MSG, response.get("respMsg")); result.put(Constants.RESP_MSG, response.get("respMsg"));
} }
...@@ -292,34 +281,34 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -292,34 +281,34 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
hlsEbankCcbTransaction.setQrCode(bizContent.getString("qrCode")); hlsEbankCcbTransaction.setQrCode(bizContent.getString("qrCode"));
hlsEbankCcbTransaction.setCmbOrderId(bizContent.getString("cmbOrderId")); hlsEbankCcbTransaction.setCmbOrderId(bizContent.getString("cmbOrderId"));
hlsEbankCcbTransaction.setTxnTime(bizContent.getString("txnTime")); hlsEbankCcbTransaction.setTxnTime(bizContent.getString("txnTime"));
hlsEbankCcbTransaction.setOrderStatus("0000"); hlsEbankCcbTransaction.setOrderStatus(orderPass);
} }
//接口返回成功,响应失败 //接口返回成功,响应失败
else if ("2".equalsIgnoreCase(type)) { else if ("2".equalsIgnoreCase(type)) {
hlsEbankCcbTransaction.setStatus(transFail); hlsEbankCcbTransaction.setStatus(transFail);
hlsEbankCcbTransaction.setReturnCode(response.get("errCode")); hlsEbankCcbTransaction.setReturnCode(response.get("errCode"));
hlsEbankCcbTransaction.setReturnMsg(response.get("respMsg")); hlsEbankCcbTransaction.setReturnMsg(response.get("respMsg"));
hlsEbankCcbTransaction.setOrderStatus("0000"); hlsEbankCcbTransaction.setOrderStatus(orderFail);
} }
//接口返回失败 //接口返回失败
else if ("3".equalsIgnoreCase(type)) { else if ("3".equalsIgnoreCase(type)) {
hlsEbankCcbTransaction.setStatus(transFail); hlsEbankCcbTransaction.setStatus(transFail);
hlsEbankCcbTransaction.setReturnCode(response.get("errCode")); hlsEbankCcbTransaction.setReturnCode(response.get("errCode"));
hlsEbankCcbTransaction.setReturnMsg(response.get("respMsg")); hlsEbankCcbTransaction.setReturnMsg(response.get("respMsg"));
hlsEbankCcbTransaction.setOrderStatus("0003"); hlsEbankCcbTransaction.setOrderStatus(orderFail);
} }
//验签失败 //验签失败
else if ("4".equalsIgnoreCase(type)) { else if ("4".equalsIgnoreCase(type)) {
hlsEbankCcbTransaction.setStatus(transFail); hlsEbankCcbTransaction.setStatus(transFail);
hlsEbankCcbTransaction.setReturnCode("SIGN_ERROR"); hlsEbankCcbTransaction.setReturnCode("SIGN_ERROR");
hlsEbankCcbTransaction.setReturnMsg("接口请求验签失败"); hlsEbankCcbTransaction.setReturnMsg("接口请求验签失败");
hlsEbankCcbTransaction.setOrderStatus("0003"); hlsEbankCcbTransaction.setOrderStatus(orderFail);
} }
//组装请求报文信息失败 //组装请求报文信息失败
else if ("5".equalsIgnoreCase(type)) { else if ("5".equalsIgnoreCase(type)) {
hlsEbankCcbTransaction.setStatus(transFail); hlsEbankCcbTransaction.setStatus(transFail);
hlsEbankCcbTransaction.setReturnCode("SEND_ERROR"); hlsEbankCcbTransaction.setReturnCode("SEND_ERROR");
hlsEbankCcbTransaction.setOrderStatus("0003"); hlsEbankCcbTransaction.setOrderStatus(orderFail);
} }
return hlsEbankCcbTransaction; return hlsEbankCcbTransaction;
} }
...@@ -358,7 +347,7 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -358,7 +347,7 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
return hlsEbankCcbTransactionMapper.selectByPrimaryKey(ccbTransaction); return hlsEbankCcbTransactionMapper.selectByPrimaryKey(ccbTransaction);
} }
private String getQrRequestParams(HlsEbankCcbTransaction hlsEbankCcbTransaction,Ld037 ld037) { private String getQrRequestParams(HlsEbankCcbTransaction hlsEbankCcbTransaction, Ld037 ld037) {
Map<String, String> requestPublicParams = new TreeMap<>(); Map<String, String> requestPublicParams = new TreeMap<>();
String requestStr = null; String requestStr = null;
try { try {
...@@ -375,13 +364,13 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -375,13 +364,13 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
// requestTransactionParams.put("termId", "00774411"); //终端号 // requestTransactionParams.put("termId", "00774411"); //终端号
requestTransactionParams.put("payValidTime", pro.getProperty("cmb.payValidTime")); //支付有效时间,默认15分钟 requestTransactionParams.put("payValidTime", pro.getProperty("cmb.payValidTime")); //支付有效时间,默认15分钟
requestTransactionParams.put("notifyUrl", pro.getProperty("cmb.notifyUrl")); //交易通知地址(必传) requestTransactionParams.put("notifyUrl", pro.getProperty("cmb.notifyUrl")); //交易通知地址(必传)
requestTransactionParams.put("mchReserved", ld037.getId().toString()); //保留字段 requestTransactionParams.put("mchReserved", "{\"recamt_id\":" + ld037.getId() + "}"); //保留字段
BigDecimal a1 = new BigDecimal(Double.toString(hlsEbankCcbTransaction.getAmount())); BigDecimal a1 = new BigDecimal(Double.toString(hlsEbankCcbTransaction.getAmount()));
BigDecimal b1 = new BigDecimal(Double.toString(100)); BigDecimal b1 = new BigDecimal(Double.toString(100));
requestTransactionParams.put("txnAmt", a1.multiply(b1).stripTrailingZeros().toPlainString()); //交易金额,单位为分(必传) requestTransactionParams.put("txnAmt", a1.multiply(b1).stripTrailingZeros().toPlainString()); //交易金额,单位为分(必传)
requestTransactionParams.put("currencyCode", pro.getProperty("cmb.currencyCode")); //交易币种,默认156,目前只支持人民币(156) requestTransactionParams.put("currencyCode", pro.getProperty("cmb.currencyCode")); //交易币种,默认156,目前只支持人民币(156)
// requestTransactionParams.put("body", "聚合支付测试"); //商户号(必传) requestTransactionParams.put("body", "聚合支付测试"); //商户号(必传)
//商户保留域 //商户保留域
JSONObject mchReserved = new JSONObject(); JSONObject mchReserved = new JSONObject();
...@@ -409,65 +398,11 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -409,65 +398,11 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
} }
} }
private Boolean checkSign(String string) {
System.out.println("要验签的报文内容:" + string);
try {
//验签
ObjectMapper objectMapper = new ObjectMapper();
Map<String, String> responseBodyMap = objectMapper.readValue(string, Map.class);
String sign = responseBodyMap.remove("sign");
String contentStr = SignatureUtil.getSignContent(responseBodyMap);
boolean result = SM2Util.sm2Check(contentStr, sign, pro.getProperty("cmb.publicKey"));
if (result) {
System.out.println("报文验签成功!");
} else {
System.out.println("报文验签失败!");
}
return result;
} catch (Exception e) {
System.out.println("验签发生异常!");
e.printStackTrace();
return false;
}
}
public HlsWsRequests logInterfaceRequest(String functionName, String url, String request, Long pkValue) {
HlsWsRequests hlsWsRequests = new HlsWsRequests();
hlsWsRequests.setRequestDate(new Date());
hlsWsRequests.setRequestWsdlUrl(url);
hlsWsRequests.setFunctionName(functionName);
String tableName = getTableName(functionName);
hlsWsRequests.setTableName(tableName);
hlsWsRequests.setStatusCode("1");
hlsWsRequests.setStatusDate(new Date());
hlsWsRequests.setPkValue(pkValue);
hlsWsRequests.setRequestClob(request);
hlsWsRequestsMapper.insertSelective(hlsWsRequests);
return hlsWsRequests;
}
private String getTableName(String functionName) {
String tableName = "";
if ("GET_QR_CODE".equalsIgnoreCase(functionName)) {
tableName = "HLS_EBANK_CCB_TRANSACTION";
} else if ("QUERY_PAY_RESULT".equalsIgnoreCase(functionName)) {
tableName = "HLS_EBANK_CMB_QUERY";
}
return tableName;
}
@Override @Override
public JSONObject queryOrderStatus(IRequest iRequest, JSONObject params){ public JSONObject queryOrderStatus(IRequest iRequest, JSONObject params) {
//返回结果标志 //返回结果标志
String resultType = null; String resultType = null;
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
HlsEbankCmbTransqry hlsEbankCmbTransqry = new HlsEbankCmbTransqry();
//去ld037中查找对应的记录的receiptcfmstatus, //去ld037中查找对应的记录的receiptcfmstatus,
if (Objects.isNull(params.get("recamt_id"))) { if (Objects.isNull(params.get("recamt_id"))) {
result.put(Constants.RESP_CODE, "E"); result.put(Constants.RESP_CODE, "E");
...@@ -484,35 +419,56 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -484,35 +419,56 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
//与查询二维码有区别,查询二维码时订单并未创建,但查询订单状态时,订单记录已经在数据库中有记录, //与查询二维码有区别,查询二维码时订单并未创建,但查询订单状态时,订单记录已经在数据库中有记录,
// 所以只需要通过recamt_id在ld037表中查到对应的订单记录, // 所以只需要通过recamt_id在ld037表中查到对应的订单记录,
// 然后通过ld037表中的transaction_id找到对应的hlsEbankCcbTransaction对象 // 然后通过ld037表中的transaction_id找到对应的hlsEbankCcbTransaction对象
HlsEbankCcbTransaction hlsEbankCcbTransaction = hlsEbankCcbTransactionMapper.selectByPrimaryKey(ld037.getTransactionId()); HlsEbankCcbTransaction hlsEbankCcbTransaction = new HlsEbankCcbTransaction();
// HlsEbankCcbTransaction hlsEbankCcbTransaction = createTransaction(ld037) hlsEbankCcbTransaction.setTransactionId(ld037.getTransactionId());
String signResult = getOrderQueryParameter(hlsEbankCcbTransaction); hlsEbankCcbTransaction = hlsEbankCcbTransactionMapper.selectByPrimaryKey(hlsEbankCcbTransaction);
if (hlsEbankCcbTransaction.getOrderStatus().equals(tranSuccess)){
result.put(Constants.RESP_CODE, hlsEbankCcbTransaction.getReturnCode()); if (Objects.isNull(hlsEbankCcbTransaction) || "CMB".equalsIgnoreCase(hlsEbankCcbTransaction.getBankType())) {
result.put(Constants.RESP_MSG, hlsEbankCcbTransaction.getReturnMsg()); result.put(Constants.RESP_CODE, "S");
result.put(Constants.RESP_MSG, "订单不存在");
//给到前端订单的状态
result.put("tradeState", orderNo);
return result;
}
if (!transDeal.equalsIgnoreCase(hlsEbankCcbTransaction.getStatus())) {
result.put(Constants.RESP_CODE, "S");
result.put(Constants.RESP_MSG, "查询成功");
//给到前端订单的状态 //给到前端订单的状态
result.put("tradeState",hlsEbankCcbTransaction.getOrderStatus()); result.put("tradeState", hlsEbankCcbTransaction.getOrderStatus());
return result; return result;
} }
hlsEbankCmbTransqry.setOrderId(hlsEbankCcbTransaction.getCmbOrderId()); DefaultTransactionDefinition def = new DefaultTransactionDefinition();
hlsEbankCmbTransqry.setTxnAmt(Math.round(hlsEbankCcbTransaction.getAmount()*100)); // 事务隔离级别:开启新事务
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
//对于每次请求都开启一个事物
TransactionStatus transactionStatus = transactionManager.getTransaction(def);
Map<String,String> responseMap = null; //创建订单查询记录
ObjectMapper mapper =null; HlsEbankCmbTransqry hlsEbankCmbTransqry = createTransqry(hlsEbankCcbTransaction.getTransactionId(), "GET");
HlsWsRequests hlsWsRequests = null;
try{
mapper = new ObjectMapper();
Map<String,String> signResultMap = mapper.readValue(signResult, Map.class);
long currentTimeMills = System.currentTimeMillis() / 1000; //生成单据编号 日期+id
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
String dateString = formatter.format(new Date());
hlsEbankCmbTransqry.setTransqryNumber(dateString + String.format("%08d", hlsEbankCcbTransaction.getTransactionId()));
Map<String, String> responseMap = null;
try {
String signResult = getOrderQueryParameter(hlsEbankCcbTransaction);
if (Objects.isNull(signResult)) {
throw new Exception("加签发生异常");
}
ObjectMapper mapper = new ObjectMapper();
Map<String, String> signResultMap = mapper.readValue(signResult, Map.class);
// 组apiSign加密Map // 组apiSign加密Map
Map<String,String> apiSign = new TreeMap<>(); Map<String, String> apiSign = new TreeMap<>();
apiSign.put("appid", pro.getProperty("cmb.appId")); apiSign.put("appid", pro.getProperty("cmb.appId"));
apiSign.put("secret", pro.getProperty("cmb.appSecret")); apiSign.put("secret", pro.getProperty("cmb.appSecret"));
apiSign.put("sign", signResultMap.get("sign")); apiSign.put("sign", signResultMap.get("sign"));
long currentTimeMills = System.currentTimeMillis() / 1000;
apiSign.put("timestamp", "" + currentTimeMills); apiSign.put("timestamp", "" + currentTimeMills);
// MD5加密 // MD5加密
...@@ -525,92 +481,208 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -525,92 +481,208 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
apiHeader.put("timestamp", "" + currentTimeMills); apiHeader.put("timestamp", "" + currentTimeMills);
apiHeader.put("apisign", apiSignString); apiHeader.put("apisign", apiSignString);
//初始化日志
hlsWsRequests = logInterfaceRequest(queryQrState, pro.getProperty("cmb.orderQueryUrl"), mapper.writeValueAsString(apiHeader), hlsEbankCcbTransaction.getTransactionId()); HlsWsRequests hlsWsRequests = logInterfaceRequest(queryQrState, pro.getProperty("cmb.orderQueryUrl"), mapper.writeValueAsString(apiHeader), hlsEbankCcbTransaction.getTransactionId());
try {
//发送http请求 //发送http请求
responseMap = Utils.postForEntity(queryQrState,signResult,apiHeader); responseMap = Utils.postForEntity(pro.getProperty("cmb.orderQueryUrl"), signResult, apiHeader);
if( null == responseMap){ //处理接口日志
resultType="3"; logger.info("收款码申请返回结果:" + mapper.writeValueAsString(responseMap));
logger.info("响应的内容为空");
return result;
}
hlsWsRequests.setResponseClob(mapper.writeValueAsString(responseMap)); hlsWsRequests.setResponseClob(mapper.writeValueAsString(responseMap));
hlsWsRequests.setReturnStatus("S"); hlsWsRequests.setReturnStatus("S");
hlsWsRequests.setResponsedDate(new Date());
//处理响应报文 //处理响应报文
Boolean checkResponse = null; Boolean checkResponse = checkSign(mapper.writeValueAsString(responseMap));
try {
checkResponse = checkSign(mapper.writeValueAsString(responseMap)); //数据验签成功
} catch (JsonProcessingException e) { if (checkResponse) {
resultType = "4";
e.printStackTrace();
}
//数据验签成功 if (checkResponse) {
//获取返回码,返回码不为SUCCESS表示报文内的字段不符合规范 //获取返回码,返回码不为SUCCESS表示报文内的字段不符合规范
String returnCode = responseMap.get("returnCode"); String returnCode = responseMap.get("returnCode");
hlsEbankCmbTransqry.setReturnCode(returnCode);
if ("SUCCESS".equalsIgnoreCase(returnCode)) { if ("SUCCESS".equalsIgnoreCase(returnCode)) {
//响应码 //响应码
String respCode = responseMap.get("returnCode"); String respCode = responseMap.get("respCode");
if ("SUCCESS".equalsIgnoreCase(respCode)) { if ("SUCCESS".equalsIgnoreCase(respCode)) {
//成功拿到订单状态请求的响应 //成功拿到订单状态请求的响应
hlsEbankCmbTransqry.setCmbOrderId(responseMap.get("cmbOrderId")); hlsEbankCmbTransqry = finishTransaction(responseMap, hlsEbankCcbTransaction, hlsEbankCmbTransqry);
hlsEbankCmbTransqry.setTxnTime(responseMap.get("txnTime")); resultType = "7";
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 { } else {
if ("SYSTERM_ERROR".equalsIgnoreCase(responseMap.get("errcode"))){ //ORDERID_INVALID 停止发起查询,调起关单
hlsEbankCmbTransqry.setReturnCode(respCode); if ("ORDERID_INVALID".equalsIgnoreCase(responseMap.get("errCode"))) {
JSONObject closeResult = closeOrder(iRequest, params);
//订单关闭成功
if (tranSuccess.equalsIgnoreCase(closeResult.getString("respCode"))) {
resultType = "1";
}
//订单关闭失败
else {
resultType = "6"; resultType = "6";
}else{ }
} else {
//请求成功,但是响应结果为失败,传给前端失败原因就行 //请求成功,但是响应结果为失败,传给前端失败原因就行
hlsEbankCmbTransqry.setErrCode(responseMap.get("errCode"));
hlsEbankCmbTransqry.setRespMsg(responseMap.get("respMsg"));
resultType = "2"; resultType = "2";
} }
} }
} else { } else {
//返回码都失败 //返回码都失败
hlsEbankCmbTransqry.setErrCode(responseMap.get("errCode"));
hlsEbankCmbTransqry.setRespMsg(responseMap.get("respMsg"));
resultType = "3"; resultType = "3";
} }
if (!"1".equalsIgnoreCase(resultType)) {
//更新现金事务表ld037失败处理
updateLd037Fail(ld037, responseMap.get("errCode"));
} }
//数据验签失败 //数据验签失败
else { else {
//更新现金事务表ld037失败处理
updateLd037Fail(ld037, "SIGN_ERROR");
//直接返回前端验签失败信息,重发或者直接告诉前端发送失败 //直接返回前端验签失败信息,重发或者直接告诉前端发送失败
resultType = "4"; resultType = "4";
} }
} catch (Exception e) {
e.printStackTrace();
logger.info("发送请求异常: {} ", e.getMessage());
}catch(Exception e){ //处理接口日志
hlsWsRequests.setReturnStatus("E"); hlsWsRequests.setReturnStatus("E");
hlsWsRequests.setResponsedDate(new Date());
//请求批次事务表状态更新失败处理
hlsEbankCmbTransqry.setRespMsg("发送请求异常,请查看日志");
result.put(Constants.RESP_MSG, "发送请求异常,请查看日志!");
resultType = "5";
} }
hlsEbankCmbTransqryMapper.updateByPrimaryKey(hlsEbankCmbTransqry);
//更新log日志表
hlsWsRequests.setResponsedDate(new Date());
hlsWsRequestsMapper.updateByPrimaryKeySelective(hlsWsRequests); hlsWsRequestsMapper.updateByPrimaryKeySelective(hlsWsRequests);
hlsEbankCcbTransaction = setEbankTransactionQR(hlsEbankCcbTransaction, responseMap, resultType);
hlsEbankCcbTransactionMapper.updateByPrimaryKeySelective(hlsEbankCcbTransaction); } catch (Exception e) {
result = putResult(result, responseMap, resultType); e.printStackTrace();
logger.info("组装请求报文信息失败: {} ", e.getMessage());
//请求查询订单状态失败处理
hlsEbankCmbTransqry.setRespMsg("组装请求报文信息失败,请查看日志");
result.put(Constants.RESP_MSG, "组装请求报文信息失败,请查看日志!");
resultType = "5";
}
//设置查询失败结果信息
hlsEbankCmbTransqry = setEbankTransqry(hlsEbankCmbTransqry, responseMap, resultType);
hlsEbankCmbTransqryMapper.updateByPrimaryKeySelective(hlsEbankCmbTransqry);
//状态刷新
transactionStatus.flush();
//事务提交
transactionManager.commit(transactionStatus);
result = putResultQR(result, responseMap, resultType);
if ("7".equalsIgnoreCase(resultType)) {
JSONObject ld037Param = new JSONObject();
ld037Param.put("transaction_id", hlsEbankCcbTransaction.getTransactionId());
postWriteLd037(ld037Param);
}
return result; return result;
} }
//生成招行扫码交易业务批次数据
private HlsEbankCmbTransqry createTransqry(Long transactionId, String queryCategory) {
HlsEbankCmbTransqry cmbTransqry = new HlsEbankCmbTransqry();
cmbTransqry.setMerId(pro.getProperty("cmb.mer.id"));
cmbTransqry.setVersion(pro.getProperty("cmb.version"));
cmbTransqry.setTransactionId(transactionId);
cmbTransqry.setStatus(transNew);
cmbTransqry.setCreatedBy(1L);
cmbTransqry.setCreationDate(new Date());
cmbTransqry.setLastUpdatedBy(1L);
cmbTransqry.setQueryCategory(queryCategory);
hlsEbankCmbTransqryMapper.insert(cmbTransqry);
return hlsEbankCmbTransqryMapper.selectByPrimaryKey(cmbTransqry);
}
private String postWriteLd037(JSONObject params) {
String sysName = "HCL_UPLOAD_FILE";
String apiName = "writeOffLd037";
try {
//初始化接口信息
HapInterfaceHeader headerAndLineDTO = headerService.getHeaderAndLine(sysName, apiName);
if (headerAndLineDTO == null) {
logger.info("headerAndLineDTO is null, apiName:{}, sysName:{}", apiName, sysName);
return "N";
}
String url = headerAndLineDTO.getDomainUrl() + headerAndLineDTO.getIftUrl();
Map<String, String> headInfo = new HashMap<String, String>();
headInfo.put("Content-Type", "application/x-www-form-urlencoded");
JSONObject requestData = new JSONObject();
requestData.put("requestData", params.toString());
//发送http请求
SignHclcUtils signHclcUtils1 = new SignHclcUtils();
String stringResult = signHclcUtils1.postString(url, requestData, headInfo, signHclcUtils1.APPLICATION_FORM_URLENCODED);
//解析返回结果
JSONObject jsonResult = JSONObject.parseObject(stringResult);
if ("S".equalsIgnoreCase(jsonResult.getString("respCode"))) {
return "Y";
} else {
return "N";
}
} catch (Exception e) {
e.printStackTrace();
return "N";
}
}
//订单完成通用接口
private HlsEbankCmbTransqry finishTransaction(Map<String, String> responseMap, HlsEbankCcbTransaction hlsEbankCcbTransaction, HlsEbankCmbTransqry hlsEbankCmbTransqry) {
//更新交易事务表数据
JSONObject bizContent = JSONObject.parseObject(responseMap.get("biz_content"));
if (Objects.nonNull(bizContent.getString("tradeState"))) {
if (!"P".equalsIgnoreCase(bizContent.getString("tradeState"))) {
hlsEbankCcbTransaction.setStatus(tranSuccess);
hlsEbankCcbTransaction.setSuccessDate(new Date());
}
if ("S".equalsIgnoreCase(bizContent.getString("tradeState"))) {
hlsEbankCcbTransaction.setSuccessAmount(hlsEbankCcbTransaction.getAmount());
hlsEbankCcbTransaction.setSuccessCount(hlsEbankCcbTransaction.getCount());
}
}
hlsEbankCcbTransaction.setOrderStatus(bizContent.getString("tradeState"));
hlsEbankCcbTransactionMapper.updateByPrimaryKeySelective(hlsEbankCcbTransaction);
//更新查询表数据
hlsEbankCmbTransqry.setReturnCode(responseMap.get("respCode"));
hlsEbankCmbTransqry.setOrderId(bizContent.getString("orderId"));
hlsEbankCmbTransqry.setCmbOrderId(bizContent.getString("cmbOrderId"));
hlsEbankCmbTransqry.setRespCode(responseMap.get("respCode"));
hlsEbankCmbTransqry.setTxnAmt(bizContent.getString("txnAmt"));
hlsEbankCmbTransqry.setDscAmt(bizContent.getString("dscAmt"));
hlsEbankCmbTransqry.setCurrencyCode(bizContent.getString("currencyCode"));
hlsEbankCmbTransqry.setPayType(bizContent.getString("payType"));
hlsEbankCmbTransqry.setOpenId(bizContent.getString("openId"));
hlsEbankCmbTransqry.setPayBank(bizContent.getString("payBank"));
hlsEbankCmbTransqry.setThirdOrderId(bizContent.getString("thirdOrderId"));
hlsEbankCmbTransqry.setBuyerLogonId(bizContent.getString("buyerLogonId"));
hlsEbankCmbTransqry.setTradeState(bizContent.getString("tradeState"));
hlsEbankCmbTransqry.setTxnTime(bizContent.getString("txnTime"));
hlsEbankCmbTransqry.setEndDate(bizContent.getString("endDate"));
hlsEbankCmbTransqry.setEndTime(bizContent.getString("endTime"));
hlsEbankCmbTransqry.setStatus("0000");
return hlsEbankCmbTransqry;
}
/** /**
* 封装请求参数,其中包含商户订单号,作为招行收到请求定位到对应订单的条件 * 封装请求参数,其中包含商户订单号,作为招行收到请求定位到对应订单的条件
*
* @param hlsEbankCcbTransaction * @param hlsEbankCcbTransaction
* @return * @return
*/ */
private static String getOrderQueryParameter(HlsEbankCcbTransaction hlsEbankCcbTransaction){ private String getOrderQueryParameter(HlsEbankCcbTransaction hlsEbankCcbTransaction) {
Map<String, String> requestPublicParams = new TreeMap<>(); Map<String, String> requestPublicParams = new TreeMap<>();
String requestStr = null; String requestStr = null;
try { try {
...@@ -622,94 +694,83 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -622,94 +694,83 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
Map<String, String> requestTransactionParams = new HashMap<>(); Map<String, String> requestTransactionParams = new HashMap<>();
requestTransactionParams.put("merId", hlsEbankCcbTransaction.getMerId()); //商户号(必传) requestTransactionParams.put("merId", hlsEbankCcbTransaction.getMerId()); //商户号(必传)
requestTransactionParams.put("orderId", hlsEbankCcbTransaction.getTransactionNumber()); //商户订单号(必传) requestTransactionParams.put("orderId", hlsEbankCcbTransaction.getTransactionNumber()); //商户订单号(必传)
requestTransactionParams.put("cmbOrderId", hlsEbankCcbTransaction.getCmbOrderId()); //商户订单号(必传)
requestTransactionParams.put("userId", hlsEbankCcbTransaction.getUserId()); //收银员 requestTransactionParams.put("userId", hlsEbankCcbTransaction.getUserId()); //收银员
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
requestPublicParams.put("biz_content", mapper.writeValueAsString(requestTransactionParams)); requestPublicParams.put("biz_content", mapper.writeValueAsString(requestTransactionParams));
/*冗余列,因为关闭订单中的请求参数名称与其余请求的参数名称不同*/
requestTransactionParams.put("origOrderId", hlsEbankCcbTransaction.getTransactionNumber()); //商户订单号(必传)
System.out.println("加签前的报文内容:" + mapper.writeValueAsString(requestPublicParams)); logger.info("加签前的报文内容:" + mapper.writeValueAsString(requestPublicParams));
//对待加签内容进行排序拼接 //对待加签内容进行排序拼接
String signContent= SignatureUtil.getSignContent(requestPublicParams); String signContent = SignatureUtil.getSignContent(requestPublicParams);
//加签 //加签
requestPublicParams.put("sign", SM2Util.sm2Sign(signContent, pro.getProperty("cmb.privateKey"))); requestPublicParams.put("sign", SM2Util.sm2Sign(signContent, pro.getProperty("cmb.privateKey")));
requestStr = mapper.writeValueAsString(requestPublicParams); requestStr = mapper.writeValueAsString(requestPublicParams);
System.out.println("加签后的报文内容:" + requestStr); logger.info("加签后的报文内容:" + requestStr);
return requestStr;
}catch (Exception e){ } catch (Exception e) {
System.out.println("加签发生异常!"); logger.info("加签发生异常!" + e.getMessage());
e.printStackTrace(); e.printStackTrace();
return requestStr;
} }
return requestStr;
} }
/** /**
* 封装交易表批次信息表 * 封装交易表批次信息表
* @param hlsEbankCcbTransaction *
* @param hlsEbankCmbTransqry
* @param response * @param response
* @param type * @param type
* @return * @return
*/ */
private HlsEbankCcbTransaction setEbankTransactionQR(HlsEbankCcbTransaction hlsEbankCcbTransaction, Map<String, String> response, String type) { private HlsEbankCmbTransqry setEbankTransqry(HlsEbankCmbTransqry hlsEbankCmbTransqry, Map<String, String> response, String type) {
// // C - 订单已关闭
//接口请求成功 // D - 交易已撤销
if ("1".equalsIgnoreCase(type)) { // P - 交易在进行
if (response.get("tradeState").equalsIgnoreCase("P")){ // F - 交易失败
hlsEbankCcbTransaction.setStatus(transDeal); // S - 交易成功
hlsEbankCcbTransaction.setOrderStatus("P"); // R - 转入退款
}
else if (response.get("tradeState").equalsIgnoreCase("S")){
hlsEbankCcbTransaction.setStatus(tranSuccess);
hlsEbankCcbTransaction.setOrderStatus("S");
}
else if (response.get("tradeState").equalsIgnoreCase("C")){
hlsEbankCcbTransaction.setStatus(tranSuccess);
hlsEbankCcbTransaction.setOrderStatus("C");
}
else if (response.get("tradeState").equalsIgnoreCase("F")){
hlsEbankCcbTransaction.setStatus(tranSuccess);
hlsEbankCcbTransaction.setOrderStatus("F");
}
}
//接口返回成功,响应失败 //接口返回成功,响应失败
else if ("2".equalsIgnoreCase(type)) { if ("1".equalsIgnoreCase(type) || "2".equalsIgnoreCase(type) || "6".equalsIgnoreCase(type)) {
hlsEbankCcbTransaction.setReturnCode(response.get("errCode")); hlsEbankCmbTransqry.setReturnCode(response.get("returnCode"));
hlsEbankCcbTransaction.setReturnMsg(response.get("respMsg")); hlsEbankCmbTransqry.setRespCode(response.get("respCode"));
hlsEbankCcbTransaction.setOrderStatus("0000"); hlsEbankCmbTransqry.setErrCode(response.get("errCode"));
hlsEbankCmbTransqry.setRespMsg(response.get("respMsg"));
hlsEbankCmbTransqry.setErrDescription(response.get("errDescription"));
hlsEbankCmbTransqry.setStatus("0000");
} }
//接口返回失败 //接口返回失败
else if ("3".equalsIgnoreCase(type)) { else if ("3".equalsIgnoreCase(type)) {
hlsEbankCcbTransaction.setReturnCode(response.get("errCode")); hlsEbankCmbTransqry.setReturnCode(response.get("returnCode"));
hlsEbankCcbTransaction.setReturnMsg(response.get("respMsg")); hlsEbankCmbTransqry.setErrCode(response.get("errCode"));
hlsEbankCcbTransaction.setOrderStatus("0003"); hlsEbankCmbTransqry.setRespMsg(response.get("respMsg"));
hlsEbankCmbTransqry.setStatus("0000");
} }
/* //验签失败 //验签失败
else if ("4".equalsIgnoreCase(type)) { else if ("4".equalsIgnoreCase(type)) {
hlsEbankCcbTransaction.setReturnCode("SIGN_ERROR"); hlsEbankCmbTransqry.setReturnCode(transFail);
hlsEbankCcbTransaction.setReturnMsg("接口请求验签失败"); hlsEbankCmbTransqry.setErrCode("SIGN_ERROR");
hlsEbankCcbTransaction.setOrderStatus("0003"); hlsEbankCmbTransqry.setRespMsg("接口请求验签失败");
hlsEbankCmbTransqry.setStatus("0003");
} }
//组装请求报文信息失败 //组装请求报文信息失败
else if ("5".equalsIgnoreCase(type)) { else if ("5".equalsIgnoreCase(type)) {
hlsEbankCcbTransaction.setReturnCode("SEND_ERROR"); hlsEbankCmbTransqry.setReturnCode(transFail);
hlsEbankCcbTransaction.setOrderStatus("0003"); hlsEbankCmbTransqry.setErrCode("SEND_ERROR");
}*/ hlsEbankCmbTransqry.setStatus("0003");
//招行服务器出错 }
/*else if ("6".equalsIgnoreCase(type)){
hlsEbankCcbTransaction.setReturnCode("CMB_SERVER_ERROR");
hlsEbankCcbTransaction.setOrderStatus("0003");
}*/
return hlsEbankCcbTransaction; return hlsEbankCmbTransqry;
} }
/** /**
* 封装给前端的返回结果 * 封装给前端的返回结果
*
* @param result * @param result
* @param response * @param response
* @param type * @param type
...@@ -718,37 +779,29 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -718,37 +779,29 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
private JSONObject putResultQR(JSONObject result, Map<String, String> response, String type) { private JSONObject putResultQR(JSONObject result, Map<String, String> response, String type) {
//接口请求成功 //接口请求成功
if ("1".equalsIgnoreCase(type)) { if ("1".equalsIgnoreCase(type)) {
result.put(Constants.RESP_CODE, tranSuccess);
result.put(Constants.RESP_CODE, response.get("returnCode")); result.put(Constants.RESP_MSG, "订单已关闭");
result.put(Constants.RESP_MSG, "请求成功"); //给到前端订单的状态
result.put("orderId", response.get("orderId")); result.put("tradeState", orderCancel);
result.put("cmbOrderId", response.get("cmbOrderId"));
result.put("tradeState", response.get("tradeState"));
result.put("txnTime", response.get("txnTime"));
} }
//接口返回成功,响应失败 //接口返回成功,响应失败
else if ("2".equalsIgnoreCase(type)) { else if ("2".equalsIgnoreCase(type) || "3".equalsIgnoreCase(type) || "6".equalsIgnoreCase(type)) {
result.put(Constants.RESP_CODE, response.get("errCode"));
result.put(Constants.RESP_MSG, response.get("respMsg"));
}
//接口返回失败
else if ("3".equalsIgnoreCase(type)) {
result.put(Constants.RESP_CODE, response.get("errCode")); result.put(Constants.RESP_CODE, response.get("errCode"));
result.put(Constants.RESP_MSG, response.get("respMsg")); result.put(Constants.RESP_MSG, response.get("respMsg"));
} }
//验签失败 //验签失败
else if ("4".equalsIgnoreCase(type)) { else if ("4".equalsIgnoreCase(type)) {
result.put(Constants.RESP_CODE, transFail); result.put(Constants.RESP_CODE, transFail);
result.put(Constants.RESP_MSG, "验签失败,请检查!"); result.put(Constants.RESP_MSG, "验签失败!");
} }
//组装请求报文信息失败 //组装请求报文信息失败
else if ("5".equalsIgnoreCase(type)) { else if ("5".equalsIgnoreCase(type)) {
result.put(Constants.RESP_CODE, transFail); result.put(Constants.RESP_CODE, transFail);
} } else if ("7".equalsIgnoreCase(type)) {
result.put(Constants.RESP_CODE, tranSuccess);
else if ("6".equalsIgnoreCase(type)){ result.put(Constants.RESP_MSG, "查询成功");
result.put(Constants.RESP_CODE, response.get("errCode")); //给到前端订单的状态
result.put(Constants.RESP_MSG, "服务器出错,请重新查询!"); result.put("tradeState", JSONObject.parseObject(response.get("biz_content")).getString("tradeState"));
} }
return result; return result;
} }
...@@ -782,7 +835,7 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -782,7 +835,7 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
//对待加签内容进行排序拼接 //对待加签内容进行排序拼接
String contentStr = SignatureUtil.getSignContent(resultMap); String contentStr = SignatureUtil.getSignContent(resultMap);
//验证签名-使用招行公钥进行验签 //验证签名-使用招行公钥进行验签
boolean flag = SM2Util.sm2Check(contentStr,sign, pro.getProperty("cmb.publicKey")); boolean flag = SM2Util.sm2Check(contentStr, sign, pro.getProperty("cmb.publicKey"));
if (!flag) { if (!flag) {
//验签失败 //验签失败
System.out.println("验签失败"); System.out.println("验签失败");
...@@ -799,7 +852,7 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -799,7 +852,7 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
/*对请求结果进行保存*/ /*对请求结果进行保存*/
HlsEbankCcbTransaction hlsEbankCcbTransaction = hlsEbankCcbTransactionMapper.selectByPrimaryKey(ld037.getTransactionId()); HlsEbankCcbTransaction hlsEbankCcbTransaction = hlsEbankCcbTransactionMapper.selectByPrimaryKey(ld037.getTransactionId());
hlsEbankCcbTransaction.setStatus(tranSuccess); hlsEbankCcbTransaction.setStatus(tranSuccess);
hlsEbankCcbTransaction.setOrderStatus("S"); hlsEbankCcbTransaction.setOrderStatus(orderSuccess);
hlsEbankCcbTransactionMapper.updateByPrimaryKeySelective(hlsEbankCcbTransaction); hlsEbankCcbTransactionMapper.updateByPrimaryKeySelective(hlsEbankCcbTransaction);
hlsWsRequestsMapper.updateByPrimaryKey(logInterfaceRequest(queryQrState, pro.getProperty("cmb.server"), new ObjectMapper().writeValueAsString(respData), hlsEbankCcbTransaction.getTransactionId())); hlsWsRequestsMapper.updateByPrimaryKey(logInterfaceRequest(queryQrState, pro.getProperty("cmb.server"), new ObjectMapper().writeValueAsString(respData), hlsEbankCcbTransaction.getTransactionId()));
respData.put("respCode", "SUCCESS");//业务错误码,成功为SUCCESS,失败为FAIL respData.put("respCode", "SUCCESS");//业务错误码,成功为SUCCESS,失败为FAIL
...@@ -823,7 +876,6 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -823,7 +876,6 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
@Override @Override
public JSONObject closeOrder(IRequest iRequest, JSONObject params) { public JSONObject closeOrder(IRequest iRequest, JSONObject params) {
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
HlsEbankCmbTransqry hlsEbankCmbTransqry = new HlsEbankCmbTransqry();
if (Objects.isNull(params.get("recamt_id"))) { if (Objects.isNull(params.get("recamt_id"))) {
result.put(Constants.RESP_CODE, "E"); result.put(Constants.RESP_CODE, "E");
result.put("respMsg", "请求必须参数recamt_id缺失,请检查!"); result.put("respMsg", "请求必须参数recamt_id缺失,请检查!");
...@@ -839,23 +891,23 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -839,23 +891,23 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
/** /**
* 支付成功的订单不允许关单,需要修改返回代码 * 支付成功的订单不允许关单,需要修改返回代码
*/ */
if ("SUCCESS".equalsIgnoreCase(hlsEbankCcbTransaction.getStatus())){ if ("SUCCESS".equalsIgnoreCase(hlsEbankCcbTransaction.getStatus())) {
result.put(Constants.RESP_CODE, "E"); result.put(Constants.RESP_CODE, "E");
result.put("respMsg", "订单已经支付成功!"); result.put("respMsg", "订单已经支付成功!");
return result; return result;
} }
//开始封装请求部分 //开始封装请求部分
String signResult = getOrderQueryParameter(hlsEbankCcbTransaction); String signResult = getOrderCloseParameter(hlsEbankCcbTransaction);
ObjectMapper mapper = new ObjectMapper(); ObjectMapper mapper = new ObjectMapper();
Map<String, String> apiHeader = null; Map<String, String> apiHeader = null;
try { try {
Map<String,String> signResultMap = mapper.readValue(signResult, Map.class); Map<String, String> signResultMap = mapper.readValue(signResult, Map.class);
long currentTimeMills = System.currentTimeMillis() / 1000; long currentTimeMills = System.currentTimeMillis() / 1000;
// 组apiSign加密Map // 组apiSign加密Map
Map<String,String> apiSign = new TreeMap<>(); Map<String, String> apiSign = new TreeMap<>();
apiSign.put("appid", pro.getProperty("cmb.appId")); apiSign.put("appid", pro.getProperty("cmb.appId"));
apiSign.put("secret", pro.getProperty("cmb.privateKey")); apiSign.put("secret", pro.getProperty("cmb.privateKey"));
apiSign.put("sign", signResultMap.get("sign")); apiSign.put("sign", signResultMap.get("sign"));
...@@ -871,8 +923,6 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -871,8 +923,6 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
apiHeader.put("timestamp", "" + currentTimeMills); apiHeader.put("timestamp", "" + currentTimeMills);
apiHeader.put("apisign", apiSignString); apiHeader.put("apisign", apiSignString);
hlsEbankCmbTransqry.setOrderId(hlsEbankCcbTransaction.getCmbOrderId());
hlsEbankCmbTransqry.setTxnAmt(Math.round(hlsEbankCcbTransaction.getAmount()*100));
} catch (IOException e) { } catch (IOException e) {
/// resultType = "5"; /// resultType = "5";
e.printStackTrace(); e.printStackTrace();
...@@ -880,7 +930,7 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -880,7 +930,7 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
HlsWsRequests hlsWsRequests = null; HlsWsRequests hlsWsRequests = null;
try { try {
hlsWsRequests = logInterfaceRequest(closeOrder, pro.getProperty("cmb.closeUrl"), mapper.writeValueAsString(apiHeader), hlsEbankCcbTransaction.getTransactionId()); hlsWsRequests = logInterfaceRequest(closeOrder, pro.getProperty("cmb.closeUrl"), mapper.writeValueAsString(apiHeader), hlsEbankCcbTransaction.getTransactionId());
Map<String,String> responseMap = Utils.postForEntity(pro.getProperty("cmb.closeUrl"),signResult,apiHeader); Map<String, String> responseMap = Utils.postForEntity(pro.getProperty("cmb.closeUrl"), signResult, apiHeader);
//处理响应报文 //处理响应报文
Boolean checkResponse = checkSign(mapper.writeValueAsString(responseMap)); Boolean checkResponse = checkSign(mapper.writeValueAsString(responseMap));
//数据验签成功 //数据验签成功
...@@ -890,55 +940,44 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -890,55 +940,44 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
hlsWsRequests.setResponsedDate(new Date()); hlsWsRequests.setResponsedDate(new Date());
//获取返回码,返回码不为SUCCESS表示报文内的字段不符合规范 //获取返回码,返回码不为SUCCESS表示报文内的字段不符合规范
String returnCode = responseMap.get("returnCode"); String returnCode = responseMap.get("returnCode");
hlsEbankCmbTransqry.setReturnCode(returnCode);
if ("SUCCESS".equalsIgnoreCase(returnCode)) { if ("SUCCESS".equalsIgnoreCase(returnCode)) {
//响应码 //响应码
String respCode = responseMap.get("respCode"); String respCode = responseMap.get("respCode");
hlsEbankCmbTransqry.setRespCode(respCode); if ("ORDER_PAID".equalsIgnoreCase(respCode)) {
hlsEbankCmbTransqry.setOrderId(responseMap.get("origOrderId"));
if ("ORDER_PAID".equalsIgnoreCase(respCode)){
//需要调用退款接口 //需要调用退款接口
result.put(Constants.RESP_CODE, "E"); result.put(Constants.RESP_CODE, "E");
result.put("respMsg", "需要调用退款接口!"); result.put("respMsg", "需要调用退款接口!");
return result; return result;
} } else if ("SUCCESS".equalsIgnoreCase(respCode)) {
else if ("SUCCESS".equalsIgnoreCase(respCode)) {
//订单关闭成功 //订单关闭成功
hlsEbankCmbTransqry.setTradeState(responseMap.get("closeState")); if ("C".equalsIgnoreCase(responseMap.get("closeState"))) {
hlsEbankCmbTransqry.setTxnTime(responseMap.get("txnTime"));
if ("C".equalsIgnoreCase(responseMap.get("closeState"))){
hlsEbankCcbTransaction.setStatus(transClose); hlsEbankCcbTransaction.setStatus(transClose);
hlsEbankCcbTransaction.setOrderStatus("C"); hlsEbankCcbTransaction.setOrderStatus("C");
result.put(Constants.RESP_CODE, responseMap.get("respCode")); result.put(Constants.RESP_CODE, responseMap.get("respCode"));
result.put(Constants.RESP_MSG, "请求成功"); result.put(Constants.RESP_MSG, "请求成功");
result.put("cmborderid",responseMap.get("origOrderId")); result.put("cmborderid", responseMap.get("origOrderId"));
result.put("closeState",responseMap.get("closeState")); result.put("closeState", responseMap.get("closeState"));
result.put("txnTime",responseMap.get("txnTime")); result.put("txnTime", responseMap.get("txnTime"));
} }
//关单失败处理 //关单失败处理
else{ else {
hlsEbankCcbTransaction.setOrderStatus("F"); hlsEbankCcbTransaction.setOrderStatus("F");
result.put(Constants.RESP_CODE, responseMap.get("respCode")); result.put(Constants.RESP_CODE, responseMap.get("respCode"));
result.put(Constants.RESP_MSG, "请求成功"); result.put(Constants.RESP_MSG, "请求成功");
result.put("cmborderid",responseMap.get("origOrderId")); result.put("cmborderid", responseMap.get("origOrderId"));
result.put("closeState",responseMap.get("closeState")); result.put("closeState", responseMap.get("closeState"));
result.put("txnTime",responseMap.get("txnTime")); result.put("txnTime", responseMap.get("txnTime"));
} }
} else if ("SYSTERM_ERROR".equalsIgnoreCase(respCode)){ } else if ("SYSTERM_ERROR".equalsIgnoreCase(respCode)) {
//请求成功,但是响应结果为失败,传给前端失败原因就行 //请求成功,但是响应结果为失败,传给前端失败原因就行
result.put(Constants.RESP_CODE, "E"); result.put(Constants.RESP_CODE, "E");
result.put("respMsg", "需要重新调用查询接口!"); result.put("respMsg", "需要重新调用查询接口!");
} } else if ("FAIL".equalsIgnoreCase(respCode)) {
else if ("FAIL".equalsIgnoreCase(respCode)){
hlsEbankCmbTransqry.setErrCode(responseMap.get("errCode"));
hlsEbankCmbTransqry.setRespMsg(responseMap.get("respMsg"));
result.put("errCode", responseMap.get("errCode")); result.put("errCode", responseMap.get("errCode"));
result.put("respMsg", responseMap.get("respMsg")); result.put("respMsg", responseMap.get("respMsg"));
} }
} else { } else {
//返回码都失败 //返回码都失败
hlsEbankCmbTransqry.setErrCode(responseMap.get("errCode"));
hlsEbankCmbTransqry.setRespMsg(responseMap.get("respMsg"));
result.put("errCode", responseMap.get("errCode")); result.put("errCode", responseMap.get("errCode"));
result.put("respMsg", responseMap.get("respMsg")); result.put("respMsg", responseMap.get("respMsg"));
} }
...@@ -950,12 +989,48 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -950,12 +989,48 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
hlsWsRequests.setResponsedDate(new Date()); hlsWsRequests.setResponsedDate(new Date());
e.printStackTrace(); e.printStackTrace();
} }
hlsEbankCmbTransqryMapper.updateByPrimaryKey(hlsEbankCmbTransqry);
hlsWsRequestsMapper.updateByPrimaryKey(hlsWsRequests);
hlsEbankCcbTransactionMapper.updateByPrimaryKey(hlsEbankCcbTransaction); hlsEbankCcbTransactionMapper.updateByPrimaryKey(hlsEbankCcbTransaction);
return result; return result;
} }
private String getOrderCloseParameter(HlsEbankCcbTransaction hlsEbankCcbTransaction) {
Map<String, String> requestPublicParams = new TreeMap<>();
String requestStr = null;
try {
//公共请求参数
requestPublicParams.put("version", pro.getProperty("cmb.version")); //版本号,固定为0.0.1(必传字段)
requestPublicParams.put("encoding", pro.getProperty("cmb.encoding")); //编码方式,固定为UTF-8(必传)
requestPublicParams.put("signMethod", pro.getProperty("cmb.signMethod")); //签名方法,固定为02,表示签名方式为国密(必传)
//业务要素
Map<String, String> requestTransactionParams = new HashMap<>();
requestTransactionParams.put("merId", hlsEbankCcbTransaction.getMerId()); //商户号(必传)
requestTransactionParams.put("orderId", hlsEbankCcbTransaction.getTransactionNumber()); //商户订单号(必传)
requestTransactionParams.put("userId", hlsEbankCcbTransaction.getUserId()); //收银员
ObjectMapper mapper = new ObjectMapper();
requestPublicParams.put("biz_content", mapper.writeValueAsString(requestTransactionParams));
/*冗余列,因为关闭订单中的请求参数名称与其余请求的参数名称不同*/
requestTransactionParams.put("origOrderId", hlsEbankCcbTransaction.getTransactionNumber()); //商户订单号(必传)
System.out.println("加签前的报文内容:" + mapper.writeValueAsString(requestPublicParams));
//对待加签内容进行排序拼接
String signContent = SignatureUtil.getSignContent(requestPublicParams);
//加签
requestPublicParams.put("sign", SM2Util.sm2Sign(signContent, pro.getProperty("cmb.privateKey")));
requestStr = mapper.writeValueAsString(requestPublicParams);
System.out.println("加签后的报文内容:" + requestStr);
return requestStr;
} catch (Exception e) {
System.out.println("加签发生异常!");
e.printStackTrace();
return requestStr;
}
}
private Map<String, String> str2Map(String str) { private Map<String, String> str2Map(String str) {
Map<String, String> result = new HashMap<>(); Map<String, String> result = new HashMap<>();
String[] results = str.split("&"); String[] results = str.split("&");
...@@ -970,4 +1045,58 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService { ...@@ -970,4 +1045,58 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
} }
return result; return result;
} }
private Boolean checkSign(String string) {
System.out.println("要验签的报文内容:" + string);
try {
//验签
ObjectMapper objectMapper = new ObjectMapper();
Map<String, String> responseBodyMap = objectMapper.readValue(string, Map.class);
String sign = responseBodyMap.remove("sign");
String contentStr = SignatureUtil.getSignContent(responseBodyMap);
boolean result = SM2Util.sm2Check(contentStr, sign, pro.getProperty("cmb.publicKey"));
if (result) {
System.out.println("报文验签成功!");
} else {
System.out.println("报文验签失败!");
}
return result;
} catch (Exception e) {
System.out.println("验签发生异常!");
e.printStackTrace();
return false;
}
}
public HlsWsRequests logInterfaceRequest(String functionName, String url, String request, Long pkValue) {
HlsWsRequests hlsWsRequests = new HlsWsRequests();
hlsWsRequests.setRequestDate(new Date());
hlsWsRequests.setRequestWsdlUrl(url);
hlsWsRequests.setFunctionName(functionName);
String tableName = getTableName(functionName);
hlsWsRequests.setTableName(tableName);
hlsWsRequests.setStatusCode("1");
hlsWsRequests.setStatusDate(new Date());
hlsWsRequests.setPkValue(pkValue);
hlsWsRequests.setRequestClob(request);
hlsWsRequestsMapper.insertSelective(hlsWsRequests);
return hlsWsRequests;
}
private String getTableName(String functionName) {
String tableName = "";
if ("GET_QR_CODE".equalsIgnoreCase(functionName)) {
tableName = "HLS_EBANK_CCB_TRANSACTION";
} else if ("QUERY_PAY_RESULT".equalsIgnoreCase(functionName)) {
tableName = "HLS_EBANK_CMB_QUERY";
}
return tableName;
}
} }
...@@ -4,9 +4,9 @@ ...@@ -4,9 +4,9 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hand.app.cmb.mapper.HlsEbankCmbTransqryMapper"> <mapper namespace="com.hand.app.cmb.mapper.HlsEbankCmbTransqryMapper">
<resultMap id="baseMap" type="com.hand.app.cmb.dto.HlsEbankCmbTransqry"> <resultMap id="baseMap" type="com.hand.app.cmb.dto.HlsEbankCmbTransqry">
<result column="TRANSQRY_ID" property="transqryId" jdbcType="NUMBER"/> <result column="TRANSQRY_ID" property="transqryId" jdbcType="DECIMAL"/>
<result column="TRANSQRY_NUMBER" property="transqryNumber" jdbcType="VARCHAR"/> <result column="TRANSQRY_NUMBER" property="transqryNumber" jdbcType="VARCHAR"/>
<result column="TRANSACTION_ID" property="transactionId" jdbcType="NUMBER"/> <result column="TRANSACTION_ID" property="transactionId" jdbcType="DECIMAL"/>
<result column="MER_ID" property="merId" jdbcType="VARCHAR"/> <result column="MER_ID" property="merId" jdbcType="VARCHAR"/>
<result column="VERSION" property="version" jdbcType="VARCHAR"/> <result column="VERSION" property="version" jdbcType="VARCHAR"/>
<result column="RETURN_CODE" property="returnCode" jdbcType="VARCHAR"/> <result column="RETURN_CODE" property="returnCode" jdbcType="VARCHAR"/>
...@@ -14,8 +14,8 @@ ...@@ -14,8 +14,8 @@
<result column="CMB_ORDER_ID" property="cmbOrderId" jdbcType="VARCHAR"/> <result column="CMB_ORDER_ID" property="cmbOrderId" jdbcType="VARCHAR"/>
<result column="RESP_CODE" property="respCode" jdbcType="VARCHAR"/> <result column="RESP_CODE" property="respCode" jdbcType="VARCHAR"/>
<result column="ERR_DESCRIPTION" property="errDescription" jdbcType="VARCHAR"/> <result column="ERR_DESCRIPTION" property="errDescription" jdbcType="VARCHAR"/>
<result column="TXN_AMT" property="txnAmt" jdbcType="NUMBER"/> <result column="TXN_AMT" property="txnAmt" jdbcType="DECIMAL"/>
<result column="DSC_AMT" property="dscAmt" jdbcType="NUMBER"/> <result column="DSC_AMT" property="dscAmt" jdbcType="DECIMAL"/>
<result column="CURRENCY_CODE" property="currencyCode" jdbcType="VARCHAR"/> <result column="CURRENCY_CODE" property="currencyCode" jdbcType="VARCHAR"/>
<result column="PAY_TYPE" property="payType" jdbcType="VARCHAR"/> <result column="PAY_TYPE" property="payType" jdbcType="VARCHAR"/>
<result column="OPEN_ID" property="openId" jdbcType="VARCHAR"/> <result column="OPEN_ID" property="openId" jdbcType="VARCHAR"/>
...@@ -29,9 +29,9 @@ ...@@ -29,9 +29,9 @@
<result column="ERR_CODE" property="errCode" jdbcType="VARCHAR"/> <result column="ERR_CODE" property="errCode" jdbcType="VARCHAR"/>
<result column="RESP_MSG" property="respMsg" jdbcType="VARCHAR"/> <result column="RESP_MSG" property="respMsg" jdbcType="VARCHAR"/>
<result column="CREATION_DATE" property="creationDate" jdbcType="DATE"/> <result column="CREATION_DATE" property="creationDate" jdbcType="DATE"/>
<result column="CREATED_BY" property="createdBy" jdbcType="NUMBER"/> <result column="CREATED_BY" property="createdBy" jdbcType="DECIMAL"/>
<result column="LAST_UPDATE_DATE" property="lastUpdateDate" jdbcType="DATE"/> <result column="LAST_UPDATE_DATE" property="lastUpdateDate" jdbcType="DATE"/>
<result column="LAST_UPDATED_BY" property="lastUpdatedBy" jdbcType="NUMBER"/> <result column="LAST_UPDATED_BY" property="lastUpdatedBy" jdbcType="DECIMAL"/>
</resultMap> </resultMap>
</mapper> </mapper>
#招行获取二维码接口 #收款码申请
cmb.qrCodeapplyUrl=https://api.cmburl.cn:8065/polypay/v1.0/mchorders/qrcodeapply cmb.qrCodeapplyUrl=https://api.cmburl.cn:8065/polypay/v1.0/mchorders/qrcodeapply
#招行查询订单状态接口 #支付结果查询
cmb.orderQueryUrl=https://api.cmburl.cn:8065/polypay/v1.0/mchorders/orderquery cmb.orderQueryUrl=https://api.cmburl.cn:8065/polypay/v1.0/mchorders/orderquery
#招行关闭订单接口 #关闭订单
cmb.closeUrl=https://api.cmburl.cn:8065/polypay/v1.0/mchorders/qrcodeapply cmb.closeUrl=https://api.cmburl.cn:8065/polypay/v1.0/mchorders/close
#uat环境商户国密私钥 #uat 私钥
cmb.privateKey=D5F2AFA24E6BA9071B54A8C9AD735F9A1DE9C4657FA386C09B592694BC118B38 cmb.privateKey=D5F2AFA24E6BA9071B54A8C9AD735F9A1DE9C4657FA386C09B592694BC118B38
#uat环境招行国密公钥 #uat 公钥
cmb.publicKey=MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE6Q+fktsnY9OFP+LpSR5Udbxf5zHCFO0PmOKlFNTxDIGl8jsPbbB/9ET23NV+acSz4FEkzD74sW2iiNVHRLiKHg== cmb.publicKey=MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE6Q+fktsnY9OFP+LpSR5Udbxf5zHCFO0PmOKlFNTxDIGl8jsPbbB/9ET23NV+acSz4FEkzD74sW2iiNVHRLiKHg==
cmb.appId=8ab74856-8772-45c9-96db-54cb30ab9f74 cmb.appId=8ab74856-8772-45c9-96db-54cb30ab9f74
......
...@@ -151,11 +151,3 @@ cup.mer.id=000092112092486 ...@@ -151,11 +151,3 @@ cup.mer.id=000092112092486
cup.upload.file.path=D:\\HCLC_FTP\\CUP_OUT\\ cup.upload.file.path=D:\\HCLC_FTP\\CUP_OUT\\
cup.download.file.path=D:\\HCLC_FTP\\CUP_IN\\ cup.download.file.path=D:\\HCLC_FTP\\CUP_IN\\
cup.init.file.path=F:\\work\\workspace\\IdeaProjects\\hls-support-rlwx\\key\\ cup.init.file.path=F:\\work\\workspace\\IdeaProjects\\hls-support-rlwx\\key\\
cmb.version=0.0.1
cmb.encoding=UTF-8
cmb.signMethod=02
cmb.currencyCode=156
cmb.user.id=N003574551
cmb.mer.id=3089991701201D0
\ No newline at end of file
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