payapi调用新增的对账确认和口挂接口封装
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/agent/citizencard/YnrccUtil.java b/payapi/src/main/java/com/supwisdom/dlpay/agent/citizencard/YnrccUtil.java
index e1cbc30..79daf31 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/agent/citizencard/YnrccUtil.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/agent/citizencard/YnrccUtil.java
@@ -14,6 +14,8 @@
   public static final String BANKCARD_PAYREFUND_TRANSCODE = "BC5513";
   public static final String BANKCARD_QUERYRESULT_TRANSCODE = "BC5514";
   public static final String BANKCARD_CHKFILE_TRANSCODE = "BC5515";
+  public static final String BANKCARD_CHKMAKESURE_TRANSCODE = "BC5516";
+  public static final String BANKCARD_BANKCARDLOSS_TRANSCODE = "BC5517";
 
   public static final String DLPAY_CATEGORIE = "C001"; //消费类别
 
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/citizencard_service.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/citizencard_service.kt
index b601151..526d447 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/citizencard_service.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/citizencard_service.kt
@@ -27,6 +27,9 @@
 
     fun getChkfilename(checkdate: String, merchantBankcardno: String?): DlpayResp
 
+    fun makeSureCheckResult(trxdate: String, transcnt: Int, transamt: Long): DlpayResp
+
+    fun bankCardLoss(bankcardno: String, username: String, idtype: String, idno: String): DlpayResp
 }
 
 @Component("citizenCardAgent")
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/citizencard_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/citizencard_service_impl.kt
index aa5c0ae..bc1ecca 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/citizencard_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/citizencard_service_impl.kt
@@ -393,4 +393,113 @@
         }
     }
 
+    override fun makeSureCheckResult(trxdate: String, transcnt: Int, transamt: Long): DlpayResp {
+        var resp = DlpayResp()
+        val config = sourceTypeService.getChargePaytypeConfig(TradeDict.PAYTYPE_CITIZEN_CARD, true)
+        if (!checkCitizencardConfig(config, resp)) {
+            return resp
+        }
+
+        val systime = systemUtilService.sysdatetime
+        val refno = systemUtilService.refno
+        val params = hashMapOf<String, String>()
+        params["transcode"] = YnrccUtil.BANKCARD_CHKMAKESURE_TRANSCODE
+        params["transdate"] = systime.hostdate
+        params["transtime"] = systime.hosttime
+        params["refno"] = refno
+        params["stltrxdate"] = trxdate
+        params["stlamt"] = transamt.toString()
+        params["jnlcount"] = transcnt.toString()
+        params["sign_type"] = "MD5"
+        val sign = MD5.encodeByMD5(StringUtil.createLinkString(StringUtil.paraFilter(params)) + config[YnrccUtil.YNRCC_SIGNKEY]!!.trim())
+        params["sign"] = sign
+
+        val postData = MultivaluedMapImpl()
+        params.forEach { (t, u) -> postData.add(t, u) }
+
+        val url = config[YnrccUtil.YNRCC_ANGENT_URL]!!.trim() + "/checkmakesure"
+        logger.error("url=[$url], params=[" + Gson().toJson(params) + "]")
+        try {
+            val client = Client.create()
+            client.setConnectTimeout(YnrccUtil.AGENT_CONNECT_TIMEOUT * 1000)
+            client.setReadTimeout(YnrccUtil.AGENT_READ_TIMEOUT * 1000)
+            val respClient = client.resource(url).type(MediaType.APPLICATION_FORM_URLENCODED_TYPE).accept(MediaType.APPLICATION_JSON).post(ClientResponse::class.java, postData)
+            return if (200 == respClient.status) {
+                val jsonStr = respClient.getEntity(String::class.java)
+                logger.error("refno=[$refno],trxdate=[$trxdate], url=[$url], return=[$jsonStr]")
+                resp = Gson().fromJson(jsonStr, DlpayResp::class.java)
+                resp
+            } else {
+                resp.code = "99"
+                resp.message = "请求前置返回失败[httpStatus=$respClient.status]"
+                logger.error(resp.message)
+                resp
+            }
+        } catch (e: Exception) {
+            e.printStackTrace()
+            resp.code = YnrccUtil.CODE_EXCEPTION
+            resp.message = "请求前置抛出异常"
+            logger.error(resp.message)
+            return resp
+        }
+    }
+
+    override fun bankCardLoss(bankcardno: String, username: String, idtype: String, idno: String): DlpayResp {
+        var resp = DlpayResp()
+        val config = sourceTypeService.getChargePaytypeConfig(TradeDict.PAYTYPE_CITIZEN_CARD, true)
+        if (!checkCitizencardConfig(config, resp)) {
+            return resp
+        }
+        val idType = IDTypes.findByValue(idtype)
+        if (idType < 0) {
+            resp.code = YnrccUtil.PARAM_VALUE_ERROR
+            resp.message = "证件类型未识别[$idtype]"
+            logger.error(resp.message)
+            return resp
+        }
+
+        val systime = systemUtilService.sysdatetime
+        val refno = systemUtilService.refno
+        val params = hashMapOf<String, String>()
+        params["transcode"] = YnrccUtil.BANKCARD_BANKCARDLOSS_TRANSCODE
+        params["transdate"] = systime.hostdate
+        params["transtime"] = systime.hosttime
+        params["refno"] = refno
+        params["bankcardno"] = bankcardno
+        params["username"] = username
+        params["idtype"] = idType.toString()
+        params["idno"] = idno
+        params["sign_type"] = "MD5"
+        val sign = MD5.encodeByMD5(StringUtil.createLinkString(StringUtil.paraFilter(params)) + config[YnrccUtil.YNRCC_SIGNKEY]!!.trim())
+        params["sign"] = sign
+
+        val postData = MultivaluedMapImpl()
+        params.forEach { (t, u) -> postData.add(t, u) }
+
+        val url = config[YnrccUtil.YNRCC_ANGENT_URL]!!.trim() + "/bankcardloss"
+        logger.error("url=[$url], params=[" + Gson().toJson(params) + "]")
+        try {
+            val client = Client.create()
+            client.setConnectTimeout(YnrccUtil.AGENT_CONNECT_TIMEOUT * 1000)
+            client.setReadTimeout(YnrccUtil.AGENT_READ_TIMEOUT * 1000)
+            val respClient = client.resource(url).type(MediaType.APPLICATION_FORM_URLENCODED_TYPE).accept(MediaType.APPLICATION_JSON).post(ClientResponse::class.java, postData)
+            return if (200 == respClient.status) {
+                val jsonStr = respClient.getEntity(String::class.java)
+                logger.error("refno=[$refno],bankcardno=[$bankcardno], url=[$url], return=[$jsonStr]")
+                resp = Gson().fromJson(jsonStr, DlpayResp::class.java)
+                resp
+            } else {
+                resp.code = "99"
+                resp.message = "请求前置返回失败[httpStatus=$respClient.status]"
+                logger.error(resp.message)
+                resp
+            }
+        } catch (e: Exception) {
+            e.printStackTrace()
+            resp.code = YnrccUtil.CODE_EXCEPTION
+            resp.message = "请求前置抛出异常"
+            logger.error(resp.message)
+            return resp
+        }
+    }
 }
\ No newline at end of file