From 546df06ff4e82de906f0f9c57dc16e37cf777be7 Mon Sep 17 00:00:00 2001 From: Xia Kaixiang Date: Wed, 17 Jun 2020 16:08:08 +0800 Subject: [PATCH] =?utf8?q?payapi=E8=B0=83=E7=94=A8=E6=96=B0=E5=A2=9E?= =?utf8?q?=E7=9A=84=E5=AF=B9=E8=B4=A6=E7=A1=AE=E8=AE=A4=E5=92=8C=E5=8F=A3?= =?utf8?q?=E6=8C=82=E6=8E=A5=E5=8F=A3=E5=B0=81=E8=A3=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../dlpay/agent/citizencard/YnrccUtil.java | 2 + .../agent/service/citizencard_service.kt | 3 + .../service/impl/citizencard_service_impl.kt | 109 ++++++++++++++++++ 3 files changed, 114 insertions(+) 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 e1cbc30c..79daf312 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 class YnrccUtil { 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 b6011516..526d447b 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 @@ interface CitizencardPayService { 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 aa5c0ae1..bc1ecca2 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 @@ class CitizencardPayServiceImpl : CitizencardPayService { } } + 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() + 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() + 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 -- 2.17.1