细化 qrcode 支付接口
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/agent/dao/QrcodePayTransDao.java b/payapi/src/main/java/com/supwisdom/dlpay/agent/dao/QrcodePayTransDao.java
index 9cc6730..2f75c01 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/agent/dao/QrcodePayTransDao.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/agent/dao/QrcodePayTransDao.java
@@ -1,16 +1,20 @@
package com.supwisdom.dlpay.agent.dao;
import com.supwisdom.dlpay.agent.domain.QrcodePayTrans;
+import org.springframework.data.jpa.repository.Lock;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
+import javax.persistence.LockModeType;
+
@Repository
public interface QrcodePayTransDao extends CrudRepository<QrcodePayTrans, String> {
QrcodePayTrans findByRefnoAndTenantid(String refno, String tenantid);
- QrcodePayTrans findByAgentMerchIdAndHostdateAndBillnoAAndTenantid(String mechid, String host,
- String billno, String tenantid);
+ @Lock(LockModeType.OPTIMISTIC)
+ QrcodePayTrans findByAgentMerchIdAndHostdateAndBillnoAndTenantid(String mechid, String host,
+ String billno, String tenantid);
void deleteByRefnoAndTenantid(String refno, String tenantid);
}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/agent/domain/QrcodePayTrans.java b/payapi/src/main/java/com/supwisdom/dlpay/agent/domain/QrcodePayTrans.java
index a6619a4..96f8b06 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/agent/domain/QrcodePayTrans.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/agent/domain/QrcodePayTrans.java
@@ -34,6 +34,9 @@
@Column(name = "agent_user_id", length = 200)
private String agentUserId;
+ @Column(name = "agent_refno", length = 64)
+ private String agentRefno;
+
@Column(name = "qrcode", length = 256)
@NotNull
private String qrcode;
@@ -50,8 +53,13 @@
private String userid;
@NotNull
- @Column(name = "create_time")
- private Timestamp create_time;
+ @Column(name = "createTime")
+ private Timestamp createTime;
+
+ @Column(name = "update_time")
+ @NotNull
+ @Version
+ private Timestamp updateTime;
@NotNull
@Column(name = "tenantid", length = 20)
@@ -84,12 +92,12 @@
this.qrcode = qrcode;
}
- public Timestamp getCreate_time() {
- return create_time;
+ public Timestamp getCreateTime() {
+ return createTime;
}
- public void setCreate_time(Timestamp create_time) {
- this.create_time = create_time;
+ public void setCreateTime(Timestamp createTime) {
+ this.createTime = createTime;
}
public String getTenantid() {
@@ -155,4 +163,20 @@
public void setUserid(String userid) {
this.userid = userid;
}
+
+ public String getAgentRefno() {
+ return agentRefno;
+ }
+
+ public void setAgentRefno(String agentRefno) {
+ this.agentRefno = agentRefno;
+ }
+
+ public Timestamp getUpdateTime() {
+ return updateTime;
+ }
+
+ public void setUpdateTime(Timestamp updateTime) {
+ this.updateTime = updateTime;
+ }
}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/agent/service/AgentServiceProxy.java b/payapi/src/main/java/com/supwisdom/dlpay/agent/service/AgentServiceProxy.java
index 37b76cd..8f2809d 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/agent/service/AgentServiceProxy.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/agent/service/AgentServiceProxy.java
@@ -32,7 +32,7 @@
}
public QrcodePayTrans qrcodePayTransFindByMerchIdAndBillno(String merchid, String billno) {
- return qrcodeTransDao.findByAgentMerchIdAndHostdateAndBillnoAAndTenantid(merchid,
+ return qrcodeTransDao.findByAgentMerchIdAndHostdateAndBillnoAndTenantid(merchid,
systemUtilService.getSysdatetime().getHostdate(), billno, TenantContext.getTenantSchema());
}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TSourceType.java b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TSourceType.java
index 1a27f32..8d09f92 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TSourceType.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TSourceType.java
@@ -2,7 +2,6 @@
import com.supwisdom.dlpay.framework.domain.DictionaryTable;
import org.hibernate.annotations.GenericGenerator;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
@@ -50,6 +49,9 @@
@NotNull
private Boolean checkable; // 是否需要清算
+ @Column(name = "asset_subjno")
+ private @NotNull String assetSubjno;
+
@Column(name = "PAYDESC", length = 200)
private String paydesc;
@@ -146,4 +148,12 @@
public void setSourceTypeId(String sourceTypeId) {
this.sourceTypeId = sourceTypeId;
}
+
+ public @NotNull String getAssetSubjno() {
+ return assetSubjno;
+ }
+
+ public void setAssetSubjno(@NotNull String assetSubjno) {
+ this.assetSubjno = assetSubjno;
+ }
}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/TradeCode.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/TradeCode.java
index cc1b344..6c554a8 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/util/TradeCode.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/util/TradeCode.java
@@ -2,19 +2,19 @@
/**
* 交易码、交易类型
- * */
+ */
public class TradeCode {
public static final int TRANSCODE_BALANCE_PAY = 3000; //账户余额支付
- public static final int TRANSCODE_CITIZENCARD_PAY=3010; //市民卡代扣消费
- public static final int TRANSCODE_YKTCARD_PAY=3020; //一卡通支付
+ public static final int TRANSCODE_CITIZENCARD_PAY = 3010; //市民卡代扣消费
+ public static final int TRANSCODE_YKTCARD_PAY = 3020; //一卡通支付
- public static final int TRANSCODE_WECHAT=1001;
+ public static final int TRANSCODE_WECHAT = 1001;
+ // QRcode 聚合支付
+ public static final int TRANSCODE_QRCODE = 1002;
public static final int TRANSCODE_ERCHARGE = 3500; //账户充值
-
-
}
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
index fdf77bb..6a6a75e 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
@@ -6,18 +6,20 @@
import com.supwisdom.dlpay.agent.service.AgentServiceProxy
import com.supwisdom.dlpay.api.*
import com.supwisdom.dlpay.api.bean.*
+import com.supwisdom.dlpay.api.bean.groups.Confirm
+import com.supwisdom.dlpay.api.bean.groups.InitStep
+import com.supwisdom.dlpay.api.domain.TSourceType
import com.supwisdom.dlpay.api.service.*
import com.supwisdom.dlpay.exception.TransactionCheckException
import com.supwisdom.dlpay.framework.ResponseBodyBuilder
import com.supwisdom.dlpay.framework.service.SystemUtilService
import com.supwisdom.dlpay.framework.util.*
+import org.apache.commons.lang3.StringUtils
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.context.ApplicationContext
import org.springframework.http.ResponseEntity
-import org.springframework.web.bind.annotation.PostMapping
-import org.springframework.web.bind.annotation.RequestBody
-import org.springframework.web.bind.annotation.RequestMapping
-import org.springframework.web.bind.annotation.RestController
+import org.springframework.validation.annotation.Validated
+import org.springframework.web.bind.annotation.*
import javax.validation.Valid
@RestController
@@ -442,8 +444,9 @@
.fail(TradeErrorCode.BUSINESS_DEAL_ERROR, "交易扣费失败"))
}
- @PostMapping("/qrcode/init")
- fun qrcodePayAuth(@RequestBody param: QrcodePayParam): ResponseEntity<ApiResponse> {
+ @RequestMapping("/qrcode/init", method = [RequestMethod.POST, RequestMethod.GET])
+ fun qrcodePayInit(@Validated(InitStep::class) @RequestBody param: QrcodePayParam): ResponseEntity<ApiResponse> {
+ // 1. 检查 qrcode
val qrcode = agentServiceProxy.qrcodeMatch(param.qrcode)
?: return ResponseEntity.ok(ResponseBodyBuilder.create()
.fail(QrcodePayResponse(), TradeErrorCode.BUSINESS_DEAL_ERROR, "未识别的支付码"))
@@ -452,7 +455,13 @@
?: return ResponseEntity.ok(ResponseBodyBuilder.create()
.fail(QrcodePayResponse(), TradeErrorCode.BUSINESS_DEAL_ERROR,
"不支持的支付方式<${qrcode.sourceType}>"))
-
+ if (sourceType.assetSubjno.isEmpty()
+ || !StringUtils.isNumeric(sourceType.assetSubjno)) {
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(QrcodePayResponse(), TradeErrorCode.BUSINESS_DEAL_ERROR,
+ "支付方式<${qrcode.sourceType}>未配置科目号"))
+ }
+ // 2. 记录 qrcode 交易明细表
val qrcodeTrans = agentServiceProxy.qrcodePayTransSaveOrUpdate(
QrcodePayTrans().apply {
this.agentMerchId = param.shopaccno
@@ -460,21 +469,25 @@
this.qrcode = param.qrcode
})
+ // 3. 查询用户身份
val service = createAgentService(qrcode.sourceType)
-
val agentResp = service.auth(qrcodeTrans.agentMerchId, qrcodeTrans.billno)
-
+ // 4. 重新读取 qrcode 交易明细表,以获取 service.auth 查询后的结果数据
+ val qrcodeTransResp = agentServiceProxy.qrcodePayTransFindByMerchIdAndBillno(qrcodeTrans.agentMerchId,
+ qrcodeTrans.billno)
+ val apiResp = QrcodePayResponse().also {
+ it.sourceType = sourceType.sourceType
+ it.paydesc = qrcodeSummary(sourceType)
+ }
return when (agentResp.code) {
AgentCode.SUCCESS -> {
- val qrcodeTransResp = agentServiceProxy.qrcodePayTransFindByMerchIdAndBillno(qrcodeTrans.agentMerchId,
- qrcodeTrans.billno)
if (!sourceType.anonymousEnable && qrcodeTransResp.isAnonymous) {
ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(QrcodePayResponse(), TradeErrorCode.BUSINESS_DEAL_ERROR,
+ .fail(apiResp, TradeErrorCode.BUSINESS_DEAL_ERROR,
"支付方式<${qrcode.sourceType}> 不支持匿名支付"))
} else {
ResponseEntity.ok(ResponseBodyBuilder.create()
- .success(QrcodePayResponse().also {
+ .success(apiResp.also {
it.anonymous = qrcodeTransResp.isAnonymous
it.userid = qrcodeTransResp.agentUserId
}))
@@ -483,207 +496,130 @@
AgentCode.NOT_SUPPORT -> {
if (!sourceType.anonymousEnable) {
ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(QrcodePayResponse(), TradeErrorCode.BUSINESS_DEAL_ERROR,
+ .fail(apiResp, TradeErrorCode.BUSINESS_DEAL_ERROR,
"支付方式<${qrcode.sourceType}> 不支持匿名支付"))
} else {
ResponseEntity.ok(ResponseBodyBuilder.create()
- .success(QrcodePayResponse().also {
- it.anonymous = true
+ .success(apiResp.also {
+ it.anonymous = qrcodeTransResp.isAnonymous
}))
}
}
else -> {
ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(QrcodePayResponse(), TradeErrorCode.BUSINESS_DEAL_ERROR,
+ .fail(apiResp, TradeErrorCode.BUSINESS_DEAL_ERROR,
"第三方身份错误,<${agentResp.agentMsg}"))
}
}
}
+ private fun qrcodeSummary(st: TSourceType): String = st.paydesc + "扫码付"
+
@PostMapping("/qrcodepay/confirm")
- fun qrcodePayInit(@Valid @RequestBody param: QrcodePayParam): ResponseEntity<ApiResponse> {
+ fun qrcodePayConfirm(@Validated(Confirm::class) @RequestBody param: QrcodePayParam): ResponseEntity<ApiResponse> {
//1. 交易检查
+ val apiResponse = QrcodePayResponse()
val qrcodeTrans = agentServiceProxy.qrcodePayTransFindByMerchIdAndBillno(param.shopaccno,
param.billno) ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(QrcodePayResponse(), TradeErrorCode.BUSINESS_DEAL_ERROR, "未找到billno"))
+ .fail(apiResponse, TradeErrorCode.BUSINESS_DEAL_ERROR, "未找到billno"))
if (qrcodeTrans.refno.isNotEmpty()) {
return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(QrcodePayResponse(), TradeErrorCode.BUSINESS_DEAL_ERROR, "该交易已确认,请查询结果"))
+ .fail(apiResponse, TradeErrorCode.BUSINESS_DEAL_ERROR, "该交易已确认,请查询结果"))
}
if (qrcodeTrans.qrcode != param.qrcode && param.qrcode.isNotEmpty()) {
val qrcode = agentServiceProxy.qrcodeMatch(param.qrcode)
?: return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(QrcodePayResponse(), TradeErrorCode.BUSINESS_DEAL_ERROR, "未识别的支付码"))
+ .fail(apiResponse, TradeErrorCode.BUSINESS_DEAL_ERROR, "未识别的支付码"))
if (qrcodeTrans.sourceType != qrcode.sourceType) {
return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(QrcodePayResponse(), TradeErrorCode.BUSINESS_DEAL_ERROR, "支付码不符"))
+ .fail(apiResponse, TradeErrorCode.BUSINESS_DEAL_ERROR, "支付码不符"))
}
qrcodeTrans.qrcode = param.qrcode
}
val sourceType = sourceTypeService.getBySourceType(qrcodeTrans.sourceType)
?: return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(QrcodePayResponse(), TradeErrorCode.BUSINESS_DEAL_ERROR,
+ .fail(apiResponse, TradeErrorCode.BUSINESS_DEAL_ERROR,
"不支持的支付方式<${qrcodeTrans.sourceType}>"))
if (!sourceType.anonymousEnable && qrcodeTrans.isAnonymous) {
return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(QrcodePayResponse(), TradeErrorCode.BUSINESS_DEAL_ERROR,
+ .fail(apiResponse, TradeErrorCode.BUSINESS_DEAL_ERROR,
"支付方式<${qrcodeTrans.sourceType}>不支持匿名支付"))
}
//2. 初始化交易流水
+ // sourcetype 资产类科目
+ val stSubject = accountUtilServcie.readSubject(sourceType.assetSubjno)
+ // build 交易明细
val builder = TransactionBuilder().apply {
- setTransInfo(param.transdate, param.transtime, TradeCode.TRANSCODE_WECHAT, qrcodeTrans.sourceType)
+ setTransInfo(param.transdate, param.transtime, TradeCode.TRANSCODE_QRCODE, qrcodeTrans.sourceType)
setOutTransInfo(qrcodeTrans.agentMerchId, qrcodeTrans.billno)
}
val shopacc = accountUtilServcie.readShopbyShopaccno(qrcodeTrans.agentMerchId)
+ val amount = param.amount / 100.0
builder.shop(shopacc).apply {
- setAmount(param.amount / 100.0, TradeDict.TRADE_FLAG_IN)
+ setAmount(amount, TradeDict.TRADE_FLAG_IN)
}
if (qrcodeTrans.isAnonymous) {
builder.anonymous().apply {
- setAmount(param.amount / 100.0, TradeDict.TRADE_FLAG_OUT)
- }
+ setAmount(amount, TradeDict.TRADE_FLAG_OUT)
+ setOpposite(shopacc.shopaccno, shopacc.shopname)
+ }.and() // 匿名消费时,借 科目 , 贷 商户
+ .addDebitCreditRecord(AccountProxy(stSubject), AccountProxy(shopacc),
+ amount, qrcodeSummary(sourceType))
} else {
val account = accountUtilServcie.readAccount(qrcodeTrans.userid)
builder.person(account).apply {
- setAmount(param.amount / 100.0, TradeDict.TRADE_FLAG_OUT)
+ setAmount(amount, TradeDict.TRADE_FLAG_OUT)
+ setOpposite(shopacc.shopaccno, shopacc.shopname)
}.and().shop().apply {
setOpposite(account.accno, account.accname)
- }
+ }.and() // 实名消费时, 1. 借 科目, 贷 个人账户 ;2. 借 个人账户 贷 商户
+ .addDebitCreditRecord(AccountProxy(stSubject), AccountProxy(account),
+ amount, qrcodeSummary(sourceType))
+ .addDebitCreditRecord(AccountProxy(account), AccountProxy(shopacc),
+ amount, qrcodeSummary(sourceType))
}
- val transaction = builder.person().apply {
- setOpposite(shopacc.shopaccno, shopacc.shopname)
- }.and().init(transactionService)
+ // 同一个客户ID + billno 是唯一索引,如果重复请求不能保存
+ val transaction = builder.init(transactionService)
+
+ // qrcode 交易明细表记录 refno
qrcodeTrans.refno = transaction.refno
+ // 保存失败,可能客户端重复请求,导致前序交易已完成
agentServiceProxy.qrcodePayTransSaveOrUpdate(qrcodeTrans)
//3. 调用第三方支付
transactionService.wip(transaction.refno)
val service = createAgentService(qrcodeTrans.sourceType)
- val response = service.pay(transaction)
+ apiResponse.apply {
+ refno = transaction.refno
+ accdate = transaction.accdate
+ isRequireQuery = false
+ anonymous = qrcodeTrans.isAnonymous
+ }
+ val response = service.pay(transaction)
return when (response.code) {
AgentCode.SUCCESS -> {
transactionService.success(transaction.refno)
ResponseEntity.ok(ResponseBodyBuilder.create()
- .success(QrcodePayResponse().also {
- it.refno = transaction.refno
- }))
+ .success(apiResponse))
}
AgentCode.REQUIRE_QUERY -> {
ResponseEntity.ok(ResponseBodyBuilder.create()
- .success(QrcodePayResponse().also {
- it.refno = transaction.refno
+ .success(apiResponse.also {
+ it.isRequireQuery = true
}))
}
else -> {
transactionService.fail(transaction.refno, response.agentMsg)
ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(QrcodePayResponse(), TradeErrorCode.BUSINESS_DEAL_ERROR,
+ .fail(apiResponse, TradeErrorCode.BUSINESS_DEAL_ERROR,
"第三方身份错误,<${response.agentMsg}"))
}
}
}
-
-// ============================================== //
-//
-// @GetMapping("/account/payinit")
-// fun accountPayInit(userid: String, amount: Int, manageFee: Int): ResponseEntity<Any> {
-// val dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
-// .setTransDatetime("20190411", "112311")
-// .enableOverdraft(false)
-// .addDetail(AccountHolder.person(userid),
-// AccountHolder.shop("12323"),
-// amount / 100.0, "")
-// .addDetail(AccountHolder.person(userid), AccountHolder.transType(301),
-// manageFee / 100.0, "")
-// .done(personBalancePayService, false)
-//
-// return ResponseEntity.ok(dtl)
-// }
-//
-// @GetMapping("/account/payfinish")
-// fun accountPayFinish(refno: String): ResponseEntity<Any> {
-// val dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
-// .done(refno, TradeDict.DTL_STATUS_SUCCESS, personBalancePayService)
-// return ResponseEntity.ok(dtl)
-// }
-
-
-//
-// /**
-// * 微信支付
-// * wechattype
-// * qrcode-扫微信二维码支付
-// * app-原生app微信支付
-// * mp-微信公众号支付
-// * h5-微信h5支付
-// *
-// * */
-// @PostMapping("/wechat/payinit")
-// fun wechatPayInit(userid: String, amount: Int, manageFee: Int,
-// stuempno: String, shopid: String, transdate: String, transtime: String,
-// outtradeno: String, payinfo: String, feetype: String,
-// wechattype: String, realip: String?, qrcode: String?, openid: String?): ResponseEntity<Any> {
-// return try {
-// val paytype = paytypeService.getBySourceType(PaytypeUtil.WECHAT)
-// if (paytype == null || ConstantUtil.ENABLE_YES != paytype.enable) {
-// ResponseEntity.ok(ResponseBodyBuilder.create()
-// .fail(1, "支付方式未开启"))
-// }
-// val person = userService.findByThirdUniqueIdenty(stuempno)
-// val dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
-// .setTransDatetime(transdate, transtime)
-// .selectPaytype(PaytypeUtil.WECHAT, payinfo)
-// .setOuttradeno(outtradeno)
-// .also {
-// if (null != person) it.setOwner(person)
-// }
-// .tryLock(true)
-// .setTransinfo(TradeCode.TRANSCODE_WECHAT, "微信支付")
-// .chooseTradetype(Tradetype.CONSUME)
-// .also {
-// when (feetype) {
-// TradeDict.FEETYPE_CONSUME_MEALER -> {
-// it.addDetail(AccountHolder.subject(Subject.SUBJNO_PAY_WECHAT),
-// AccountHolder.shop(shopid),
-// amount / 100.0, "微信支付")
-// .addDetail(AccountHolder.transType(TranstypeCode.TT_CONSUUME_MANAGE_FEE)
-// .with(AccountHolder.shop(shopid)),
-// manageFee / 100.0)
-// }
-// TradeDict.FEETYPE_CONSUME_DISCOUNT -> {
-// it.addDetail(AccountHolder.subject(Subject.SUBJNO_PAY_WECHAT),
-// AccountHolder.shop(shopid),
-// (amount - manageFee) / 100.0, "微信支付")
-// .addDetail(AccountHolder.subject(Subject.SUBJNO_CONSUME_DISCOUNT),
-// AccountHolder.shop(shopid),
-// manageFee / 100.0, "优惠折扣")
-// }
-// else -> {
-// it.addDetail(AccountHolder.subject(Subject.SUBJNO_PAY_WECHAT),
-// AccountHolder.shop(shopid),
-// amount / 100.0, "微信支付")
-// }
-// }
-// }.done(personBalancePayService, false)
-// val code = CallService.callWechatPay(paytypeService.getSourceTypeConfigBySourceType(PaytypeUtil.WECHAT),
-// dtl, DateUtil.getNow(), wechattype, realip, qrcode, openid)
-// if (code.retcode == "0") {
-// ResponseEntity.ok(ResponseBodyBuilder.create()
-// .data("refno", dtl.refno)
-// .success())
-// } else {
-// ResponseEntity.ok(ResponseBodyBuilder.create()
-// .fail(TradeErrorCode.TRANSACTION_NOT_EXISTS, "交易请求失败-${code.retcode}"))
-// }
-// } catch (e: TransactionException) {
-// ResponseEntity.ok(ResponseBodyBuilder.create()
-// .transException(e, "交易初始化异常"))
-// }
-// }
}
\ No newline at end of file
diff --git a/payapi/src/main/resources/data.sql b/payapi/src/main/resources/data.sql
index 31b965a..f1d7f88 100644
--- a/payapi/src/main/resources/data.sql
+++ b/payapi/src/main/resources/data.sql
@@ -439,23 +439,23 @@
INSERT INTO "tb_sourcetype" ("sourcetype_id", "sourcetype", "checkable", "paydesc", "enable", "charge_enable",
-"consume_enable", "anonymous_enable", "reversable", "tenantid")
-VALUES ('D3820D49DACA49199E36537F6719665F', 'citizenCard', 't', '大理市民卡', 't', 'f', 't', 'f', 't', '{tenantid}');
+"consume_enable", "anonymous_enable", "reversable", "asset_subjno", "tenantid")
+VALUES ('D3820D49DACA49199E36537F6719665F', 'citizenCard', 't', '大理市民卡', 't', 'f', 't', 'f', 't', '112234', '{tenantid}');
INSERT INTO "tb_sourcetype" ("sourcetype_id", "sourcetype", "checkable", "paydesc", "enable", "charge_enable",
-"consume_enable", "anonymous_enable", "reversable", "tenantid")
-VALUES ('0997477F40904AD1A2E37FD15345CE00', 'balance', 'f', '账户余额', 't', 'f', 't', 'f', 't', '{tenantid}');
+"consume_enable", "anonymous_enable", "reversable", "asset_subjno","tenantid")
+VALUES ('0997477F40904AD1A2E37FD15345CE00', 'balance', 'f', '账户余额', 't', 'f', 't', 'f', 't', '-', '{tenantid}');
INSERT INTO "tb_sourcetype" ("sourcetype_id", "sourcetype", "checkable", "paydesc", "enable", "charge_enable",
-"consume_enable", "anonymous_enable", "reversable", "tenantid")
-VALUES ('F0CA47ADC0F24DFCA0D95DF4136CC2D0', 'thirdpart', 'f', '其他第三方支付', 't', 't', 'f', 'f', 'f', '{tenantid}');
+"consume_enable", "anonymous_enable", "reversable", ""asset_subjno",tenantid")
+VALUES ('F0CA47ADC0F24DFCA0D95DF4136CC2D0', 'thirdpart', 'f', '其他第三方支付', 't', 't', 'f', 'f', 'f','-', '{tenantid}');
INSERT INTO "tb_sourcetype" ("sourcetype_id", "sourcetype", "checkable", "paydesc", "enable", "charge_enable",
-"consume_enable", "anonymous_enable", "reversable", "tenantid")
-VALUES ('F5B344726FA24BD896E70DEE3D3F46CA', 'swyktv5', 't', '一卡通支付', 't', 't', 't', 't', 't', '{tenantid}');
+"consume_enable", "anonymous_enable", "reversable", "asset_subjno","tenantid")
+VALUES ('F5B344726FA24BD896E70DEE3D3F46CA', 'swyktv5', 't', '一卡通支付', 't', 't', 't', 't', 't','-', '{tenantid}');
INSERT INTO "tb_sourcetype" ("sourcetype_id", "sourcetype", "checkable", "paydesc", "enable", "charge_enable",
-"consume_enable", "anonymous_enable", "reversable", "tenantid")
-VALUES ('28EE54CD3B044CC197D6C5B0E309F8B8', 'alipay', 't', '支付宝', 't', 't', 't', 't', 'f', '{tenantid}');
+"consume_enable", "anonymous_enable", "reversable", "asset_subjno","tenantid")
+VALUES ('28EE54CD3B044CC197D6C5B0E309F8B8', 'alipay', 't', '支付宝', 't', 't', 't', 't', 'f', '112230', '{tenantid}');
INSERT INTO "tb_sourcetype" ("sourcetype_id", "sourcetype", "checkable", "paydesc", "enable", "charge_enable",
-"consume_enable", "anonymous_enable", "reversable", "tenantid")
-VALUES ('DAEF88B54B684347B2B83940C38C7671', 'wechat', 't', '微信支付', 't', 't', 't', 't', 'f', '{tenantid}');
+"consume_enable", "anonymous_enable", "reversable", "asset_subjno","tenantid")
+VALUES ('DAEF88B54B684347B2B83940C38C7671', 'wechat', 't', '微信支付', 't', 't', 't', 't', 'f', '112231', '{tenantid}');
-- 支付方式
INSERT INTO TB_SOURCETYPE_CONFIG (ID, SOURCETYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
@@ -503,6 +503,8 @@
INSERT INTO "tb_transcode" ("transcode", "transname", "tenantid")
VALUES (3010, '市民卡代扣', '{tenantid}');
INSERT INTO "tb_transcode" ("transcode", "transname", "tenantid")
+VALUES (1002, '支付码聚合付', '{tenantid}');
+INSERT INTO "tb_transcode" ("transcode", "transname", "tenantid")
VALUES (3500, '账户充值', '{tenantid}');
INSERT INTO "tb_dictionary" ("id", "dictval", "dicttype", "dictcaption", "dicttypename", "tenantid")
@@ -571,9 +573,9 @@
INSERT INTO "tb_dictionary" ("id", "dictval", "dicttype", "dictcaption", "dicttypename", "tenantid")
VALUES (30, 'shopmarket', 'dtltypeList', '商超消费', '流水类型', '{tenantid}');
-INSERT INTO QRCODE_PATTERN(ID, PATTERN, SOURCETYPE, TENANTID)
+INSERT INTO TB_QRCODE_PATTERN(ID, PATTERN, SOURCETYPE, TENANTID)
VALUES(1, '28\d{16}', 'alipay', '{tenantid}');
-INSERT INTO QRCODE_PATTERN(ID, PATTERN, SOURCETYPE, TENANTID)
-VALUES(1, '13\d{16}', 'wechatpay', '{tenantid}');
+INSERT INTO TB_QRCODE_PATTERN(ID, PATTERN, SOURCETYPE, TENANTID)
+VALUES(2, '13\d{16}', 'wechatpay', '{tenantid}');
----------------------------------------------------
commit;
\ No newline at end of file