From: kaixiang.xia Date: Thu, 6 May 2021 03:16:15 +0000 (+0800) Subject: 中间缴费参数存表 X-Git-Tag: 1.0.32^2~1 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=77de0cda91995fdf0714de662489bac8f584639d;p=epayment%2Ffood_payapi.git 中间缴费参数存表 --- diff --git a/payapi/sql/update-210106.sql b/payapi/sql/update-210106.sql index 45a6a77d..513f3178 100644 --- a/payapi/sql/update-210106.sql +++ b/payapi/sql/update-210106.sql @@ -36,4 +36,23 @@ INSERT INTO "public"."tb_sourcetype_config"("id", "config_name", "config_value", INSERT INTO "public"."tb_sourcetype_config"("id", "config_name", "config_value", "configid", "globalflag", "sourcetype", "tenantid") VALUES ('27', '农商行网关支付商户名', NULL, 'ynrcc.netpay.Mer_IdName', 'f', 'ynrccpay', '{tenantid}'); INSERT INTO "public"."tb_sourcetype_config"("id", "config_name", "config_value", "configid", "globalflag", "sourcetype", "tenantid") VALUES ('28', '农商行网关支付回调地址', NULL, 'ynrcc.netpay.MerURL', 'f', 'ynrccpay', '{tenantid}'); INSERT INTO "public"."tb_sourcetype_config"("id", "config_name", "config_value", "configid", "globalflag", "sourcetype", "tenantid") VALUES ('25', '农商行网关支付地址', 'https://ebank.ynrcc.com/pweb/%s?LoginType=C&_locale=zh_CN&BankId=9999', 'ynrcc.netpay.URL', 't', 'ynrccpay', '{tenantid}'); +commit; + +CREATE TABLE tb_ynrccpay_thirdapp ( + id varchar(32) NOT NULL, + mch_id varchar(20) NOT NULL, + mch_name varchar(200), + app_id varchar(60) NOT NULL, + token varchar(20) NOT NULL, + pubkey varchar(200) NOT NULL, + enable bool NOT NULL, + remark varchar(200) +); +ALTER TABLE tb_ynrccpay_thirdapp ADD CONSTRAINT tb_ynrccpay_thirdapp_pkey PRIMARY KEY (id); + +-- 测试环境或正式环境插入相应配置 +INSERT INTO "public"."tb_ynrccpay_thirdapp"("id", "mch_id", "mch_name", "app_id", "token", "pubkey", "enable", "remark") +VALUES ('test', '1002010472001', '大理市信息化发展有限责任公司', '318D34955996AA035F3047939EA655FF', 'J6upjifWdQfRj3eh', '043AAF09775EC7EEEAAA2C66773F61BF18CE4D2DDDCBFFF43249113D849AD3FF4F8951889E8BF759EC80AF2EEA7473F9FEE97A7DE0B284FFD3312BD5021061F172', 't', '测试环境配置'); +--INSERT INTO "public"."tb_ynrccpay_thirdapp"("id", "mch_id", "mch_name", "app_id", "token", "pubkey", "enable", "remark") +--VALUES ('dev', '1002010472001', '大理市信息化发展有限责任公司', '5FE60D156754432BAC1789AF35EEA592', 'Cg3Ue7mdkWv9g5mK', '0484D7043D24F3AC19E3F7CA03A166C2F813BCFE2141CB0E8559214A23E7A8DFDC9B4C1E9D9FBE9456621373652B145DDB91BD6DD484E8F04870560E7A16F5AB2C', 't', '生产环境配置'); commit; \ No newline at end of file diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/CardDao.java b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/CardDao.java index 4b3ace37..dfe5630f 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/CardDao.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/CardDao.java @@ -32,4 +32,10 @@ public interface CardDao extends JpaRepository { List findCitizencardByCardphyidWithoutOldId(String cardphyid, String oldId); TCard getById(String id); + + @Query("select count(t.id) from TCard t where t.status='normal' and t.cardtype='bankcard' and t.cardno=?1 ") + int countByBankCardNo(String bankcardno); + + @Query("select count(t.id) from TCard t where t.status='normal' and t.cardtype='bankcard' and t.cardno=?1 and t.userid=?2 ") + int countByBankCardNoAndUserid(String bankcardno, String userid); } diff --git a/payapi/src/main/java/com/supwisdom/dlpay/citizencard/dao/YnrccPaySignDao.java b/payapi/src/main/java/com/supwisdom/dlpay/citizencard/dao/YnrccPaySignDao.java index adc6075c..752bba47 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/citizencard/dao/YnrccPaySignDao.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/citizencard/dao/YnrccPaySignDao.java @@ -28,4 +28,10 @@ public interface YnrccPaySignDao extends JpaRepository { @Query("from TYnrccPaySign t where t.userid=?1 and t.bankcardno=?2 and t.status='normal' and t.signFlag is true") List queryActiveSignsByUseridAndBankcardno(String userid, String bankcardno); + + @Query("select count(t.id) from TYnrccPaySign t where t.bankcardno=?1 and t.status='normal' ") + int countByBankcardno(String bankcardno); + + @Query("select count(t.id) from TYnrccPaySign t where t.bankcardno=?1 and t.userid=?2 and t.status='normal' ") + int countByBankcardnoAndUserid(String bankcardno, String userid); } diff --git a/payapi/src/main/java/com/supwisdom/dlpay/citizencard/dao/YnrccPayThirdappDao.java b/payapi/src/main/java/com/supwisdom/dlpay/citizencard/dao/YnrccPayThirdappDao.java new file mode 100644 index 00000000..f20a8c45 --- /dev/null +++ b/payapi/src/main/java/com/supwisdom/dlpay/citizencard/dao/YnrccPayThirdappDao.java @@ -0,0 +1,12 @@ +package com.supwisdom.dlpay.citizencard.dao; + +import com.supwisdom.dlpay.citizencard.domain.TYnrccPayThirdapp; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + +public interface YnrccPayThirdappDao extends JpaRepository { + @Query("from TYnrccPayThirdapp t where t.enable is true ") + List queryYnrccPayThirdConfig(); +} diff --git a/payapi/src/main/java/com/supwisdom/dlpay/citizencard/domain/TYnrccPayThirdapp.java b/payapi/src/main/java/com/supwisdom/dlpay/citizencard/domain/TYnrccPayThirdapp.java new file mode 100644 index 00000000..b4ef460e --- /dev/null +++ b/payapi/src/main/java/com/supwisdom/dlpay/citizencard/domain/TYnrccPayThirdapp.java @@ -0,0 +1,118 @@ +package com.supwisdom.dlpay.citizencard.domain; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * 大理农商行快捷支付第三方中间缴费业务 + * 对接参数配置表 + * */ +@Entity +@Table(name = "TB_YNRCCPAY_THIRDAPP") +public class TYnrccPayThirdapp { + + @Id + @Column(name = "id", unique = true, nullable = false, length = 32) + private String id; + + @Column(name = "mch_id", nullable = false, length = 20) + private String mchId; + + @Column(name = "mch_name", nullable = false, length = 200) + private String mchName; + + @Column(name = "app_id", nullable = false, length = 60) + private String appId; + + @Column(name = "token", nullable = false, length = 20) + private String token; + + @Column(name = "pubkey", nullable = false, length = 200) + private String pubkey; + + @Column(name = "enable", nullable = false, length = 20) + private boolean enable; + + @Column(name = "remark", length = 200) + private String remark; + + public TYnrccPayThirdapp() { + } + + public TYnrccPayThirdapp(String id, String mchId, String mchName, String appId, String token, String pubkey, boolean enable, String remark) { + this.id = id; + this.mchId = mchId; + this.mchName = mchName; + this.appId = appId; + this.token = token; + this.pubkey = pubkey; + this.enable = enable; + this.remark = remark; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getMchId() { + return mchId; + } + + public void setMchId(String mchId) { + this.mchId = mchId; + } + + public String getMchName() { + return mchName; + } + + public void setMchName(String mchName) { + this.mchName = mchName; + } + + public String getAppId() { + return appId; + } + + public void setAppId(String appId) { + this.appId = appId; + } + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } + + public String getPubkey() { + return pubkey; + } + + public void setPubkey(String pubkey) { + this.pubkey = pubkey; + } + + public boolean isEnable() { + return enable; + } + + public void setEnable(boolean enable) { + this.enable = enable; + } + + public String getRemark() { + return remark; + } + + public void setRemark(String remark) { + this.remark = remark; + } +} diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/ynrcc_netpay_business_service.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/ynrcc_netpay_business_service.kt index 65f81452..bd6be6c0 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/ynrcc_netpay_business_service.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/ynrcc_netpay_business_service.kt @@ -12,7 +12,6 @@ import com.supwisdom.dlpay.agent.ynrccpay.YnrccPayUtil import com.supwisdom.dlpay.api.bean.* import com.supwisdom.dlpay.api.dao.CardDao import com.supwisdom.dlpay.api.dao.PersonDao -import com.supwisdom.dlpay.api.dao.TransactionMainDao import com.supwisdom.dlpay.api.domain.TTransactionMain import com.supwisdom.dlpay.api.exception.RequestParamCheckException import com.supwisdom.dlpay.api.service.SourceTypeService @@ -20,6 +19,7 @@ import com.supwisdom.dlpay.api.service.TransactionService import com.supwisdom.dlpay.api.service.YnrccNetPayBusinessService import com.supwisdom.dlpay.api.types.IDTypes import com.supwisdom.dlpay.citizencard.dao.YnrccPaySignDao +import com.supwisdom.dlpay.citizencard.dao.YnrccPayThirdappDao import com.supwisdom.dlpay.citizencard.domain.TYnrccPaySign import com.supwisdom.dlpay.exception.TransactionProcessException import com.supwisdom.dlpay.framework.dao.ShopaccDao @@ -38,7 +38,7 @@ class YnrccNetPayBusinessServiceImpl(val personDao: PersonDao, val shopaccDao: ShopaccDao, val ynrccPaySignDao: YnrccPaySignDao, val cardDao: CardDao, - val transactionMainDao: TransactionMainDao, + val ynrccPayThirdappDao: YnrccPayThirdappDao, val transactionService: TransactionService, val systemUtilService: SystemUtilService, val sourceTypeService: SourceTypeService, @@ -323,23 +323,50 @@ class YnrccNetPayBusinessServiceImpl(val personDao: PersonDao, } override fun doYnrccPayThirdAuth(thirdSrv: String, bankcardno: String, userid: String): YnrccPayThirdAuthResponse { + logger.info("中间缴费请求参数:thirdSrv=[$thirdSrv],bankcardno=[$bankcardno],userid=[$userid]") val resp = YnrccPayThirdAuthResponse() resp.retcode = 99 - //TODO: 根据第三方服务标识thirdSrv获取配置信息 - val mchId = "" - val appId = "" - val token = "" - val pubKey = "" - val handler = YNRCCOpenServiceApi.getInstance(mchId, appId, token, pubKey) + val thirdConfs = ynrccPayThirdappDao.queryYnrccPayThirdConfig() + if (null == thirdConfs || thirdConfs.isEmpty()) { + resp.retcode = 99 + resp.retmsg = "中间缴费对接参数未配置!" + return resp + } else if (thirdConfs.size != 1) { + resp.retcode = 99 + resp.retmsg = "中间缴费对接参数未指定!" + return resp + } + val config = thirdConfs[0] //获取配置信息(第三方服务标识thirdSrv暂时无用) + var handler = YNRCCOpenServiceApi.getInstance(config.mchId, config.appId, config.token, config.pubkey) //获取客户端sdk配置信息 val sdkConfigData = handler.getSDKConfigData() //获取客户端SDK访问开放服务所需参数 val person = personDao.findByUserid(userid) ?: throw TransactionProcessException(TradeErrorCode.ACCOUNT_NOT_EXISTS, "用户不存在!") - //TODO: 判断bankcard是否该userid所有 + if (person.mobile.isNullOrBlank()) { + resp.retcode = 99 + resp.retmsg = "用户手机号为空!" + return resp + } + //fixme: 判断bankcard是否该userid所有 + if (ynrccPaySignDao.countByBankcardno(bankcardno?.trim()) > 0) { + if (ynrccPaySignDao.countByBankcardnoAndUserid(bankcardno?.trim(), person.userid) < 1) { + resp.retcode = 99 + resp.retmsg = "银行卡持有人错误!" + return resp + } + } else if (cardDao.countByBankCardNo(bankcardno?.trim()) > 0) { + if (cardDao.countByBankCardNoAndUserid(bankcardno?.trim(), person.userid) < 1) { + resp.retcode = 99 + resp.retmsg = "银行卡持有人错误!" + return resp + } + } + +// val user = User("测试", "420117198802234181", "13584821704", "623100095486551526") //测试User val user = User(person.name, person.idno, person.mobile, bankcardno) val access2ServiceData = handler.getAccess2ServiceData(user) @@ -354,6 +381,7 @@ class YnrccNetPayBusinessServiceImpl(val personDao: PersonDao, } resp.sdkConfigData = sdkConfigData resp.access2ServiceData = access2ServiceData + logger.info("中间缴费成功返回:" + YnrccPayUtil.toJson(resp)) return resp } } \ No newline at end of file