银行前置新增对账确认接口和口挂接口
diff --git a/ynrcc-agent/src/main/java/com/supwisdom/agent/Util/DlpayUtil.java b/ynrcc-agent/src/main/java/com/supwisdom/agent/Util/DlpayUtil.java
index c54c0a1..2f2af64 100644
--- a/ynrcc-agent/src/main/java/com/supwisdom/agent/Util/DlpayUtil.java
+++ b/ynrcc-agent/src/main/java/com/supwisdom/agent/Util/DlpayUtil.java
@@ -19,6 +19,9 @@
public static final String OPTYPE_PAYREFUND = "payrefund"; //消费退款
public static final String OPTYPE_QUERYRESULT = "queryresult"; //消费结果查询
public static final String OPTYPE_CHKDTL = "chkdtl"; //流水对账
+ public static final String OPTYPE_CHK_MAKESURE = "chkmakesure"; //流水对账
+ public static final String OPTYPE_BANKCARD_LOSS = "bankcardloss"; //流水对账
+
public static final String TRANSTYPE_SIGNCARD = "1"; //签约
diff --git a/ynrcc-agent/src/main/java/com/supwisdom/agent/api/bean/DlpayReq.java b/ynrcc-agent/src/main/java/com/supwisdom/agent/api/bean/DlpayReq.java
index bc5954f..c1b8ca5 100644
--- a/ynrcc-agent/src/main/java/com/supwisdom/agent/api/bean/DlpayReq.java
+++ b/ynrcc-agent/src/main/java/com/supwisdom/agent/api/bean/DlpayReq.java
@@ -38,6 +38,10 @@
private String captcha; //签约验证码
private String scenario;//消费场景
+ private String stltrxdate; //(核心记账日期)不允许为当前营业日期
+ private Long stlamt; //清算金额
+ private Integer jnlcount; //交易流水笔数
+
/**
* 市民卡绑定请求XML
*/
@@ -158,6 +162,43 @@
return String.format("%08d", xml.toString().getBytes("GBK").length) + xml.toString();
}
+ /**
+ * 对账确认接口请求报文
+ * */
+ public String getChkMakeSureXml() throws UnsupportedEncodingException {
+ StringBuffer xml = new StringBuffer();
+ xml.append(prefix)
+ .append("<root>")
+ .append("<TRANSCODE>").append(transcode).append("</TRANSCODE>")
+ .append("<TRANSDATE>").append(transdate).append("</TRANSDATE>")
+ .append("<TRANSTIME>").append(transtime).append("</TRANSTIME>")
+ .append("<SN>").append(sn).append("</SN>")
+ .append("<STLTRXDATE>").append(stltrxdate).append("</STLTRXDATE>")
+ .append("<STLAMT>").append(stlamt/100.00).append("</STLAMT>")
+ .append("<JNLCOUNT>").append(jnlcount).append("</JNLCOUNT>")
+ .append("</root>");
+ return String.format("%08d", xml.toString().getBytes("GBK").length) + xml.toString();
+ }
+
+ /**
+ * 银行口挂请求报文
+ * */
+ public String getLossBankcardXml()throws UnsupportedEncodingException {
+ StringBuffer xml = new StringBuffer();
+ xml.append(prefix)
+ .append("<root>")
+ .append("<TRANSCODE>").append(transcode).append("</TRANSCODE>")
+ .append("<TRANSDATE>").append(transdate).append("</TRANSDATE>")
+ .append("<TRANSTIME>").append(transtime).append("</TRANSTIME>")
+ .append("<SN>").append(sn).append("</SN>")
+ .append("<BC_NO>").append(bcNo).append("</BC_NO>")
+ .append("<NAME>").append(name).append("</NAME>")
+ .append("<ID_TYPE>").append(idType).append("</ID_TYPE>")
+ .append("<ID_NO>").append(idNo).append("</ID_NO>")
+ .append("</root>");
+ return String.format("%08d", xml.toString().getBytes("GBK").length) + xml.toString();
+ }
+
public String getTransdate() {
return transdate;
}
@@ -309,4 +350,28 @@
public void setScenario(String scenario) {
this.scenario = scenario;
}
+
+ public String getStltrxdate() {
+ return stltrxdate;
+ }
+
+ public void setStltrxdate(String stltrxdate) {
+ this.stltrxdate = stltrxdate;
+ }
+
+ public Long getStlamt() {
+ return stlamt;
+ }
+
+ public void setStlamt(Long stlamt) {
+ this.stlamt = stlamt;
+ }
+
+ public Integer getJnlcount() {
+ return jnlcount;
+ }
+
+ public void setJnlcount(Integer jnlcount) {
+ this.jnlcount = jnlcount;
+ }
}
diff --git a/ynrcc-agent/src/main/java/com/supwisdom/agent/api/controller/YnrccApiController.java b/ynrcc-agent/src/main/java/com/supwisdom/agent/api/controller/YnrccApiController.java
index 398cd67..5b34717 100644
--- a/ynrcc-agent/src/main/java/com/supwisdom/agent/api/controller/YnrccApiController.java
+++ b/ynrcc-agent/src/main/java/com/supwisdom/agent/api/controller/YnrccApiController.java
@@ -524,4 +524,107 @@
};
return new ResponseEntity(stream, HttpStatus.OK);
}
+
+ /**
+ * 对账确认接口BC5516
+ * */
+ @PostMapping("/checkmakesure")
+ public DlpayResp makeCheckdtlSure(@FormParam("transcode") String transcode, @FormParam("transdate") String transdate,
+ @FormParam("transtime") String transtime, @FormParam("refno") String refno,
+ @FormParam("stltrxdate") String stltrxdate, @FormParam("stlamt") Long stlamt,
+ @FormParam("jnlcount") Integer jnlcount, @FormParam("sign_type") String sign_type,
+ @FormParam("sign") String sign){
+ DlpayResp resp = new DlpayResp();
+ if (!ynrccParamCheckService.checkChkMakesureParam(transcode, transdate, transtime, refno, stltrxdate, stlamt, jnlcount, sign_type, sign, resp)) {
+ logger.error(resp.errPrint());
+ return resp;
+ }
+
+ Map<String, String> params = new HashMap<>(0);
+ params.put("transcode", transcode);
+ params.put("transdate", transdate);
+ params.put("transtime", transtime);
+ params.put("refno", refno);
+ params.put("stltrxdate", stltrxdate);
+ params.put("stlamt", stlamt.toString());
+ params.put("jnlcount", jnlcount.toString());
+ params.put("sign_type", sign_type);
+ params.put("sign", sign);
+ if (!checkYnrccSign(params, resp)) {
+ return resp;
+ }
+
+ try{
+ DlpayReq req = new DlpayReq();
+ req.setTranscode(transcode);
+ req.setTransdate(transdate);
+ req.setTranstime(transtime);
+ req.setSn(refno);
+ req.setStltrxdate(stltrxdate);
+ req.setStlamt(stlamt);
+ req.setJnlcount(jnlcount);
+ return ynrccApiService.sendToYnrcc(DlpayUtil.OPTYPE_CHK_MAKESURE, req);
+ } catch (BussinessException be) {
+ resp.setCode(ErrorCode.BUSSINESS_ERROR);
+ resp.setMessage(be.getMessage());
+ logger.error(resp.errPrint());
+ return resp;
+ }catch (Exception e){
+ doSystemError(e, resp);
+ return resp;
+ }
+ }
+
+ /**
+ * 口挂接口 BC5517
+ * */
+ @PostMapping("/bankcardloss")
+ public DlpayResp bankcardLoss(@FormParam("transcode") String transcode, @FormParam("transdate") String transdate,
+ @FormParam("transtime") String transtime, @FormParam("refno") String refno,
+ @FormParam("bankcardno") String bankcardno, @FormParam("username") String username,
+ @FormParam("idtype") String idtype, @FormParam("idno") String idno,
+ @FormParam("sign_type") String sign_type, @FormParam("sign") String sign){
+ DlpayResp resp = new DlpayResp();
+ if (!ynrccParamCheckService.checkLossBankcardParam(transcode, transdate, transtime, refno, bankcardno, username, idtype, idno, sign_type, sign, resp)) {
+ logger.error(resp.errPrint());
+ return resp;
+ }
+
+ Map<String, String> params = new HashMap<>(0);
+ params.put("transcode", transcode);
+ params.put("transdate", transdate);
+ params.put("transtime", transtime);
+ params.put("refno", refno);
+ params.put("bankcardno", bankcardno);
+ params.put("username", username);
+ params.put("idtype", idtype);
+ params.put("idno", idno);
+ params.put("sign_type", sign_type);
+ params.put("sign", sign);
+ if (!checkYnrccSign(params, resp)) {
+ return resp;
+ }
+
+ try{
+ DlpayReq req = new DlpayReq();
+ req.setTranscode(transcode);
+ req.setTransdate(transdate);
+ req.setTranstime(transtime);
+ req.setSn(refno);
+ req.setBcNo(bankcardno);
+ req.setName(username);
+ req.setIdType(idtype);
+ req.setIdNo(idno);
+ return ynrccApiService.sendToYnrcc(DlpayUtil.OPTYPE_BANKCARD_LOSS, req);
+ } catch (BussinessException be) {
+ resp.setCode(ErrorCode.BUSSINESS_ERROR);
+ resp.setMessage(be.getMessage());
+ logger.error(resp.errPrint());
+ return resp;
+ }catch (Exception e){
+ doSystemError(e, resp);
+ return resp;
+ }
+ }
+
}
diff --git a/ynrcc-agent/src/main/java/com/supwisdom/agent/api/service/YnrccParamCheckService.java b/ynrcc-agent/src/main/java/com/supwisdom/agent/api/service/YnrccParamCheckService.java
index 9673aff..35b38ed 100644
--- a/ynrcc-agent/src/main/java/com/supwisdom/agent/api/service/YnrccParamCheckService.java
+++ b/ynrcc-agent/src/main/java/com/supwisdom/agent/api/service/YnrccParamCheckService.java
@@ -24,4 +24,9 @@
boolean checkQueryResultParam(String transcode, String transdate, String transtime, String refno, String orignRefno, String sign_type, String sign, DlpayResp resp);
boolean checkChkfileParam(String transcode, String transdate, String transtime, String refno, String checkdate, String merchant_bankcardno, String sign_type, String sign, DlpayResp resp);
+
+ boolean checkChkMakesureParam(String transcode, String transdate, String transtime, String refno, String stltrxdate, Long stlamt, Integer jnlcount, String sign_type, String sign, DlpayResp resp);
+
+ boolean checkLossBankcardParam(String transcode, String transdate, String transtime, String refno, String bankcardno, String username, String idtype, String idno, String sign_type, String sign, DlpayResp resp);
+
}
diff --git a/ynrcc-agent/src/main/java/com/supwisdom/agent/api/service/impl/YnrccApiServiceImpl.java b/ynrcc-agent/src/main/java/com/supwisdom/agent/api/service/impl/YnrccApiServiceImpl.java
index 1d492e0..5c80430 100644
--- a/ynrcc-agent/src/main/java/com/supwisdom/agent/api/service/impl/YnrccApiServiceImpl.java
+++ b/ynrcc-agent/src/main/java/com/supwisdom/agent/api/service/impl/YnrccApiServiceImpl.java
@@ -64,6 +64,14 @@
sendXml = req.getChkfileXml();
logger.error("请求【获取对账单=" + req.getChkdate() + "】发送报文:\n" + sendXml);
+ } else if (DlpayUtil.OPTYPE_CHK_MAKESURE.equals(optype)){
+ sendXml = req.getChkMakeSureXml();
+ logger.error("请求【对账确认="+req.getStltrxdate()+"】发送报文:\n"+ sendXml);
+
+ } else if(DlpayUtil.OPTYPE_BANKCARD_LOSS.equals(optype)){
+ sendXml = req.getLossBankcardXml();
+ logger.error("请求【银行卡口挂】发送报文:\n"+ sendXml);
+
} else {
throw new BussinessException("请求类型[" + optype + "]错误!");
}
diff --git a/ynrcc-agent/src/main/java/com/supwisdom/agent/api/service/impl/YnrccParamCheckServiceImpl.java b/ynrcc-agent/src/main/java/com/supwisdom/agent/api/service/impl/YnrccParamCheckServiceImpl.java
index cd6429e..6b925f7 100644
--- a/ynrcc-agent/src/main/java/com/supwisdom/agent/api/service/impl/YnrccParamCheckServiceImpl.java
+++ b/ynrcc-agent/src/main/java/com/supwisdom/agent/api/service/impl/YnrccParamCheckServiceImpl.java
@@ -244,4 +244,60 @@
return true;
}
+
+ @Override
+ public boolean checkChkMakesureParam(String transcode, String transdate, String transtime, String refno, String stltrxdate, Long stlamt, Integer jnlcount, String sign_type, String sign, DlpayResp resp) {
+ if (!checkYnrccBaseParam(transcode, transdate, transtime, refno, sign_type, sign, resp)) {
+ return false;
+ }
+
+ if (!StringUtil.checkDatetimeValid(stltrxdate, "yyyyMMdd")) {
+ resp.setCode(ErrorCode.REQ_PARAM_ERROR);
+ resp.setMessage("请求参数错误[待清算流水日期]");
+ return false;
+ }
+
+ if(null == stlamt){
+ resp.setCode(ErrorCode.REQ_PARAM_ERROR);
+ resp.setMessage("请求参数错误[清算金额]");
+ return false;
+ }
+
+ if(null==jnlcount || jnlcount<0){
+ resp.setCode(ErrorCode.REQ_PARAM_ERROR);
+ resp.setMessage("请求参数错误[交易流水笔数]");
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public boolean checkLossBankcardParam(String transcode, String transdate, String transtime, String refno, String bankcardno, String username, String idtype, String idno, String sign_type, String sign, DlpayResp resp) {
+ if (!checkYnrccBaseParam(transcode, transdate, transtime, refno, sign_type, sign, resp)) {
+ return false;
+ }
+ if (StringUtil.isEmpty(bankcardno)) {
+ resp.setCode(ErrorCode.REQ_PARAM_ERROR);
+ resp.setMessage("请求参数错误[用户银行卡号为空]");
+ return false;
+ }
+ if (StringUtil.isEmpty(username)) {
+ resp.setCode(ErrorCode.REQ_PARAM_ERROR);
+ resp.setMessage("请求参数错误[用户名为空]");
+ return false;
+ }
+ if(StringUtil.isEmpty(idtype)){
+ resp.setCode(ErrorCode.REQ_PARAM_ERROR);
+ resp.setMessage("请求参数错误[证件类型为空]");
+ return false;
+ }
+ if (StringUtil.isEmpty(idno)) {
+ resp.setCode(ErrorCode.REQ_PARAM_ERROR);
+ resp.setMessage("请求参数错误[证件号为空]");
+ return false;
+ }
+
+ return true;
+ }
}