一卡通支付代码迁移
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/swykt_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/swykt_service_impl.kt
new file mode 100644
index 0000000..6b64727
--- /dev/null
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/swykt_service_impl.kt
@@ -0,0 +1,131 @@
+package com.supwisdom.dlpay.agent.service.impl
+
+import com.google.gson.Gson
+import com.sun.jersey.api.client.Client
+import com.sun.jersey.api.client.ClientResponse
+import com.supwisdom.dlpay.agent.service.SWYKTV5Service
+import com.supwisdom.dlpay.api.bean.BaseResp
+import com.supwisdom.dlpay.api.bean.SupStatusRevResp
+import com.supwisdom.dlpay.api.bean.SupYktResp
+import com.supwisdom.dlpay.api.service.SourceTypeService
+import com.supwisdom.dlpay.api.service.UserService
+import com.supwisdom.dlpay.framework.service.SystemUtilService
+import com.supwisdom.dlpay.framework.util.*
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.stereotype.Service
+
+@Service
+class SWYKTV5ServiceImpl :SWYKTV5Service {
+ @Autowired
+ lateinit var sourceTypeService: SourceTypeService
+ @Autowired
+ lateinit var systemUtilService: SystemUtilService
+ @Autowired
+ lateinit var userService: UserService
+
+ override fun onLineThirdPay(shopaccno: String, userid: String, accdate: String, amount: Int, refno: String): BaseResp {
+ val code = BaseResp()
+ val config = sourceTypeService.getConsumePaytypeConfig(TradeDict.PAYTYPE_YKT_CARD, shopaccno, false, false)
+ val appid = config["appid"]
+ if (appid.isNullOrEmpty()) {
+ code.retcode = "1"
+ code.retmsg = "一卡通支付方式未启用或未配置[appid]"
+ return code
+ }
+ val appkey = config["appkey"]
+ if (appkey.isNullOrEmpty()) {
+ code.retcode = "1"
+ code.retmsg = "一卡通支付方式未启用或未配置[appkey]"
+ return code
+ }
+ val orderurl = config["orderurl"]
+ if (orderurl.isNullOrEmpty()) {
+ code.retcode = "1"
+ code.retmsg = "一卡通支付方式未启用或未配置[orderurl]"
+ return code
+ }
+ val person = userService.findOnePersonByUserid(userid)
+
+ val params = hashMapOf<String, String?>()
+ params.put("partner_id", appid)
+ params.put("stuempno", person.idno)
+ params.put("tradeno",refno)
+ params.put("tradename", "校园卡支付")
+ params.put("amount", amount.toString())
+ //TODO 解决一卡通商户号问题
+ //params.put("shopid", yktshopid)
+ //params.put("devphyid", devphyid)
+ params.put("calcmanagefee", "T") //是否计算费率
+ params.put("timestamp", DateUtil.getNow())
+ params.put("sign_method", "HMAC");
+ params.put("limitflag", "off") //是否判断消费限额,on-判断;off-不判断。默认on(判断限额)。为空或不为off都是on;
+ var signstr = StringUtil.createLinkString(HmacUtil.paraFilter(params))
+ val sign = HmacUtil.HMACSHA1(signstr, appkey)
+ signstr = "$signstr&sign=$sign&sourcetype=food"
+ val c = Client.create()
+ c.setConnectTimeout(20000)
+ val r = c.resource(orderurl)
+ val respClient = r.post(ClientResponse::class.java, signstr)
+ if (200 == respClient.status) {
+ val ret = respClient.getEntity(String::class.java)
+ if (ret != null) {
+ try {
+ val gson = Gson()
+ val result = gson.fromJson(ret, SupYktResp::class.java)
+ if (result == null) {
+ code.retcode = "1"
+ code.retmsg = "返回内容为空"
+ return code
+ }
+ if ("0" != result.retcode) {
+ if ("30" == result.retcode) {
+ if (result.other != null) {
+ try {
+ val supStatusRevResp = gson.fromJson(result.other,
+ SupStatusRevResp::class.java)
+ if (supStatusRevResp != null) {
+ //同流水号,同一笔已经支付完成的,不重复支付。
+ if (3 == supStatusRevResp.status
+ && supStatusRevResp.revflag != null
+ && !supStatusRevResp.revflag) {
+ code.retcode = "0"
+ code.retmsg = "成功"
+ return code
+ }
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+ }
+ }
+ code.retcode = "1"
+ code.retmsg = "交易失败:" + result.retmsg
+ return code
+ }
+ code.retcode = "0"
+ code.retmsg = "成功"
+ return code
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+ }
+ }
+ code.retcode = "1"
+ code.retmsg = "请求失败"
+ return code
+ }
+
+ override fun onLineCardPay(): BaseResp {
+ TODO("not implemented")
+ }
+
+ override fun onLineCardPayConfirm(): BaseResp {
+ TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+ }
+
+ override fun offLineCardTransdtl(): BaseResp {
+ TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+ }
+
+
+}
\ No newline at end of file
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/swykt_service.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/swykt_service.kt
index ed323c3..7f96f22 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/swykt_service.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/swykt_service.kt
@@ -2,9 +2,35 @@
import com.supwisdom.dlpay.agent.AgentPayService
import com.supwisdom.dlpay.agent.AgentResponse
+import com.supwisdom.dlpay.api.bean.BaseResp
+import com.supwisdom.dlpay.api.domain.TPersondtl
import com.supwisdom.dlpay.api.domain.TTransactionMain
import org.springframework.stereotype.Component
+interface SWYKTV5Service{
+
+ /**
+ * 调用一卡通V5第三方支付接口
+ * */
+ fun onLineThirdPay(shopaccno: String, userid: String, accdate: String, amount: Int, refno: String):BaseResp
+
+ /**
+ * 调用一卡通V5卡片联机支付接口
+ * */
+ fun onLineCardPay():BaseResp
+
+ /**
+ * 调用一卡通V5卡片联机密码确认支付接口
+ * */
+ fun onLineCardPayConfirm():BaseResp
+
+ /**
+ * 调用一卡通V5卡片脱机上传授信流水接口
+ * */
+ fun offLineCardTransdtl():BaseResp
+
+}
+
@Component("swyktv5Agent")
class SWYktV5AgentService : AgentPayService {
override fun pay(transaction: TTransactionMain?): AgentResponse {
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/ThirdPayCall.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/ThirdPayCall.kt
index 2397e3b..3d3cbae 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/ThirdPayCall.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/ThirdPayCall.kt
@@ -10,99 +10,13 @@
import com.supwisdom.dlpay.util.Code
import mu.KotlinLogging
-class CallBackResp {
- var retcode: String = "99"
- var retmsg: String? = null
- val data = mutableMapOf<String, String>()
- fun add(key: String, value: String) {
- this.data.plus(mapOf(key to value))
- }
-}
+
class CallService {
companion object {
private val logger = KotlinLogging.logger { }
- fun callYktPay(config: Map<String, String?>, paydtl: TPersondtl, time: String, stuempno: String, yktshopid: String, devphyid: String?): CallBackResp {
- val code = CallBackResp()
- val appid = config["appid"]
- if (appid.isNullOrEmpty()) {
- code.retcode = "1"
- code.retmsg = "一卡通支付方式未启用或未配置"
- return code
- }
-
- val appkey = config["appkey"]
- val orderurl = config["orderurl"]
-
- val params = hashMapOf<String, String?>()
- params.put("partner_id", appid)
- params.put("stuempno", stuempno)
- params.put("tradeno", paydtl.refno)
- params.put("tradename", paydtl.payinfo)
- params.put("amount", MoneyUtil.YuanToFen(paydtl.amount).toString())
- params.put("shopid", yktshopid)
- params.put("devphyid", devphyid)
- params.put("calcmanagefee", "T") //是否计算费率
- params.put("timestamp", time)
- params.put("sign_method", "HMAC");
- params.put("limitflag", "off") //是否判断消费限额,on-判断;off-不判断。默认on(判断限额)。为空或不为off都是on;
- var signstr = StringUtil.createLinkString(HmacUtil.paraFilter(params))
- val sign = HmacUtil.HMACSHA1(signstr, appkey)
- signstr = "$signstr&sign=$sign&sourcetype=food"
- val c = Client.create()
- c.setConnectTimeout(20000)
- val r = c.resource(orderurl)
- val respClient = r.post(ClientResponse::class.java, signstr)
- if (200 == respClient.status) {
- val ret = respClient.getEntity(String::class.java)
- if (ret != null) {
- try {
- val gson = Gson()
- val result = gson.fromJson(ret, SupYktResp::class.java)
- if (result == null) {
- code.retcode = "1"
- code.retmsg = "返回内容为空"
- return code
- }
- if ("0" != result.retcode) {
- if ("30" == result.retcode) {
- if (result.other != null) {
- try {
- val supStatusRevResp = gson.fromJson(result.other,
- SupStatusRevResp::class.java)
- if (supStatusRevResp != null) {
- //同流水号,同一笔已经支付完成的,不重复支付。
- if (3 == supStatusRevResp.status
- && supStatusRevResp.revflag != null
- && !supStatusRevResp.revflag) {
- code.retcode = "0"
- code.retmsg = "成功"
- return code
- }
- }
- } catch (e: Exception) {
- e.printStackTrace()
- }
- }
- }
- code.retcode = "1"
- code.retmsg = "交易失败:" + result.retmsg
- return code
- }
- code.retcode = "0"
- code.retmsg = "成功"
- return code
- } catch (e: Exception) {
- e.printStackTrace()
- }
- }
- }
- code.retcode = "1"
- code.retmsg = "请求失败"
- return code
- }
fun callWechatPay(config: Map<String, String>, paydtl: TPersondtl, time: String, wechattype: String,
realip: String?, qrcode: String?, openid: String?): BaseResp {
@@ -614,12 +528,5 @@
}
*/
-
- fun CallCitizenCardPay(config: Map<String, String?>, paydtl: TShopdtl): CallBackResp {
- val resp = CallBackResp()
- resp.retcode = "0"
- // TODO: 代扣逻辑
- return resp
- }
}
}
\ No newline at end of file