chore: 测试了撤销和退款业务流程
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java b/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java
index 9b145e0..bf9ac18 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java
@@ -311,32 +311,24 @@
creditSum += dtl.getAmount();
}
}
- int balanceFlag = 2;
- if (Subject.SUBJNO_MACHANT_INCOME.equals(subjno)) {
- balanceFlag = 2;
- } else if (Subject.SUBJNO_PERSONAL_DEPOSIT.equals(subjno)) {
- balanceFlag = 2;
- } else if (subjno.startsWith("1")) {
- balanceFlag = 1;
- }
- if ("debit".equals(debitOrCredit)) {
- if (balanceFlag == 2) {
+ if (Subject.SUBJNO_MACHANT_INCOME.equals(subjno)
+ || Subject.SUBJNO_PERSONAL_DEPOSIT.equals(subjno)) {
+ if ("debit".equals(debitOrCredit)) {
return -debitSum;
- } else {
- return debitSum;
- }
- } else if ("credit".equals(debitOrCredit)) {
- if (balanceFlag == 1) {
- return -creditSum;
- } else {
+ } else if ("credit".equals(debitOrCredit)) {
return creditSum;
- }
- } else {
- if (balanceFlag == 2) {
- return -(debitSum - creditSum);
} else {
return debitSum - creditSum;
}
+ } else if (subjno.startsWith("1")) {
+ if ("debit".equals(debitOrCredit)) {
+ return debitSum;
+ } else if ("credit".equals(debitOrCredit)) {
+ return -creditSum;
+ } else {
+ return creditSum - debitSum;
+ }
}
+ return 0.0;
}
}
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/controller/charge_api_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/api/controller/charge_api_controller.kt
index 3c749af..da8c986 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/api/controller/charge_api_controller.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/controller/charge_api_controller.kt
@@ -88,7 +88,7 @@
description = "账户充值"
}.person(account).apply {
setAmount(param.amount / 100.0, TradeDict.TRADE_FLAG_IN)
- this.opposite = AccountProxy(rechargeDrsubjno)
+ setOpposite(AccountProxy(rechargeDrsubjno))
}.and().addDebitCreditRecord(AccountProxy(rechargeDrsubjno), AccountProxy(account),
param.amount / 100.0, "账户充值")
.also { builder ->
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
index 4530820..9e0ebd5 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
@@ -4,13 +4,11 @@
import com.supwisdom.dlpay.api.CallService
import com.supwisdom.dlpay.api.TransactionBuilder
import com.supwisdom.dlpay.api.bean.*
-import com.supwisdom.dlpay.api.dao.TransactionMainDao
import com.supwisdom.dlpay.api.service.AccountUtilServcie
import com.supwisdom.dlpay.api.service.ConsumePayService
import com.supwisdom.dlpay.api.service.TransactionServiceProxy
import com.supwisdom.dlpay.api.service.UserService
import com.supwisdom.dlpay.framework.ResponseBodyBuilder
-import com.supwisdom.dlpay.framework.service.CommonService
import com.supwisdom.dlpay.framework.service.SystemUtilService
import com.supwisdom.dlpay.framework.util.Subject
import com.supwisdom.dlpay.framework.util.TradeCode
@@ -81,10 +79,10 @@
description = "账户余额消费"
}.person(account).apply {
setAmount(param.amount / 100.0, TradeDict.TRADE_FLAG_OUT)
- opposite = AccountProxy(shopacc)
+ setOpposite(AccountProxy(shopacc))
}.and().shop(shopacc).apply {
setAmount(param.amount / 100.0, TradeDict.TRADE_FLAG_IN)
- opposite = AccountProxy(account)
+ setOpposite(AccountProxy(account))
}.and().addDebitCreditRecord(AccountProxy(account), AccountProxy(shopacc),
param.amount / 100.0, "账户余额消费")
.also {
@@ -153,10 +151,10 @@
description = "市民卡代扣消费"
}.person(account).apply {
setAmount(param.amount / 100.0, TradeDict.TRADE_FLAG_OUT)
- opposite = AccountProxy(shopacc)
+ setOpposite(AccountProxy(shopacc))
}.and().shop(shopacc).apply {
setAmount(param.amount / 100.0, TradeDict.TRADE_FLAG_IN)
- opposite = AccountProxy(account)
+ setOpposite(AccountProxy(account))
}.and().addDebitCreditRecord(AccountProxy(subject), AccountProxy(account),
param.amount / 100.0, "市民卡代扣消费")
.addDebitCreditRecord(AccountProxy(account), AccountProxy(shopacc),
@@ -250,6 +248,7 @@
}
transactionService.success(cancelTrans.refno)
return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .data("refno", cancelTrans.refno)
.success("交易确认成功"))
} ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
.fail(TradeErrorCode.TRANSACTION_NOT_EXISTS, "流水不存在"))
@@ -275,6 +274,7 @@
}
transactionService.success(refundTrans.refno)
return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .data("refno", refundTrans.refno)
.success("交易确认成功"))
} ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
.fail(TradeErrorCode.TRANSACTION_NOT_EXISTS, "流水不存在"))
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt b/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt
index 1f9f468..ad6b740 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt
@@ -50,6 +50,18 @@
builder.preCheck()
}
+ private fun getDebitOrCredit(tradeFlag: String, reverseTrans: Boolean): String {
+ return when (tradeFlag) {
+ TradeDict.TRADE_FLAG_IN -> if (!reverseTrans) "credit" else "debit"
+ TradeDict.TRADE_FLAG_OUT -> if (!reverseTrans) "debit" else "credit"
+ else -> "both"
+ }
+ }
+
+ private fun getTransAmountFromDetail(builder: TransactionBuilder, amount: Double): Double {
+ return amount
+ }
+
private fun builderRecords(builder: TransactionBuilder, status: String): TTransactionMain {
try {
preCheck(builder)
@@ -68,7 +80,8 @@
reverseFlag = builder.reverseType
checkable = sourceType.checkable
transCode = builder.transCode
- reverseType = TradeDict.REVERSE_FLAG_NONE
+ reverseType = builder.reverseType
+ reverseRefno = builder.reverseRefno
refundAmount = 0.0
checkDate = null
settleDate = null
@@ -86,18 +99,14 @@
transdate = builder.transDate
transtime = builder.transTime
befbal = builder.person().person.availbal
- amount = if (builder.person().tradeFlag == TradeDict.TRADE_FLAG_IN) {
- builder.person().amount
- } else {
- -builder.person().amount
- }
+ amount = builder.person().amount
this.sourceType = builder.sourceType
payinfo = builder.person().payinfo
transcode = builder.transCode
tradeflag = builder.person().tradeFlag
transdesc = builder.person().description
- oppositeAccNo = builder.person().opposite.getAccountNo()
- oppositeAccName = builder.person().opposite.getAccountName()
+ oppositeAccNo = builder.person().oppositeAccNo()
+ oppositeAccName = builder.person().oppositeSubjNo()
this.reverseFlag = TradeDict.REVERSE_FLAG_NONE
remark = builder.person().remark
this.status = status
@@ -118,17 +127,13 @@
this.transtime = builder.transTime
this.transcode = builder.transCode
this.sourceType = builder.sourceType
- amount = if (builder.shop().tradeFlag == TradeDict.TRADE_FLAG_IN) {
- builder.shop().amount
- } else {
- -builder.shop().amount
- }
+ this.amount = builder.shop().amount
this.tradeflag = builder.shop().tradeFlag
this.shopaccno = builder.shop().shopacc.shopaccno
this.shopname = builder.shop().shopacc.shopname
this.transdesc = builder.shop().description
- this.oppositeAccNo = builder.shop().opposite.getAccountNo()
- this.oppositeAccName = builder.shop().opposite.getAccountName()
+ this.oppositeAccNo = builder.shop().oppositeAccNo()
+ this.oppositeAccName = builder.shop().oppositeSubjNo()
this.remark = builder.shop().remark
this.reverseFlag = TradeDict.REVERSE_FLAG_NONE
this.updateBala = false
@@ -150,8 +155,8 @@
this.tradeCode = builder.transCode
this.transDate = builder.transDate
this.transTime = builder.transTime
- this.oppositeAccNo = builder.subject().opposite.getAccountNo()
- this.oppositeAccName = builder.subject().opposite.getAccountName()
+ this.oppositeAccNo = builder.subject().oppositeAccNo()
+ this.oppositeAccName = builder.subject().oppositeSubjNo()
this.status = status
}.also {
transaction.subjectDtl = it
@@ -163,10 +168,10 @@
TDebitCreditDtl().apply {
this.refno = transaction.refno
this.seqno = line.seqno
- this.draccno = line.debit.getAccountNo()
- this.drsubjno = line.debit.getSubjectNo()
- this.craccno = line.credit.getAccountNo()
- this.crsubjno = line.credit.getSubjectNo()
+ this.draccno = line.debitAccNo
+ this.drsubjno = line.debitSubjNo
+ this.craccno = line.creditAccNo
+ this.crsubjno = line.creditSubjNo
this.amount = line.amount
this.summary = line.summary
this.settleDate = null
@@ -177,11 +182,11 @@
if (builder.hasPerson()) {
- val dc = getDebitOrCredit(builder.person().tradeFlag)
+ val dc = getDebitOrCredit(builder.person().tradeFlag, builder.isReverseTrans())
transaction.sumAmountByAccno(builder.person().person.accno,
Subject.SUBJNO_PERSONAL_DEPOSIT,
dc).also {
- if (transaction.personDtl.amount != it) {
+ if (transaction.personDtl.amount != getTransAmountFromDetail(builder, it)) {
throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR,
"输入金额错误,个人余额不符<${transaction.personDtl.amount}>")
}
@@ -189,10 +194,10 @@
}
if (builder.hasShop()) {
- val dc = getDebitOrCredit(builder.shop().tradeFlag)
+ val dc = getDebitOrCredit(builder.shop().tradeFlag, builder.isReverseTrans())
transaction.sumAmountByAccno(builder.shop().shopacc.shopaccno,
Subject.SUBJNO_MACHANT_INCOME, dc).also {
- if (transaction.shopDtl.amount != it) {
+ if (transaction.shopDtl.amount != getTransAmountFromDetail(builder, it)) {
throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR,
"输入金额错误,商户余额不符<${transaction.shopDtl.amount}>")
}
@@ -202,7 +207,12 @@
if (builder.hasSubject()) {
transaction.sumAmountByAccno(builder.subject().subject.subjno,
builder.subject().subject.subjno, "both").also {
- if (transaction.subjectDtl.amount != it) {
+ val amount = if (builder.reverseType != TradeDict.REVERSE_FLAG_NONE) {
+ -it
+ } else {
+ it
+ }
+ if (transaction.subjectDtl.amount != amount) {
throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR,
"输入金额错误,科目余额不符<${transaction.subjectDtl.amount}>")
}
@@ -217,13 +227,6 @@
}
}
- private fun getDebitOrCredit(tradeFlag: String): String {
- return when (tradeFlag) {
- TradeDict.TRADE_FLAG_IN -> "credit"
- TradeDict.TRADE_FLAG_OUT -> "debit"
- else -> "both"
- }
- }
private fun updateRecordStatus(transaction: TTransactionMain, status: String) {
if (transaction.person) {
@@ -262,7 +265,7 @@
}
/////////////////////////////////////////////////////////////////////
- // 业务接口
+// 业务接口
override fun init(builder: TransactionBuilder): TTransactionMain {
return builderRecords(builder, TradeDict.DTL_STATUS_INIT)
}
@@ -311,7 +314,7 @@
}
//////////////////////////////////////////////////////////////////
- // 成功
+// 成功
private fun transactionOnSuccess(transaction: TTransactionMain, remark: String, overdraft: Boolean) {
if (transaction.person) {
// update account balance
@@ -362,9 +365,29 @@
}
//////////////////////////////////////////////////////////////////
- // 回退业务接口,包括撤销和退款
- override fun refundInit(originRefno: String, builder: TransactionBuilder): TTransactionMain {
- TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+// 回退业务接口,包括撤销和退款
+ override fun refundInit(originRefno: String, refundAmount: Double, builder: TransactionBuilder): TTransactionMain {
+ val originTrans = transactionMainDao.findByRefnoForUpdate(originRefno)
+ ?: throw TransactionProcessException(TradeErrorCode.TRANSACTION_NOT_EXISTS
+ , "被退款流水不存在")
+ if (originTrans.status != TradeDict.DTL_STATUS_SUCCESS) {
+ throw TransactionProcessException(TradeErrorCode.TRANSDTL_STATUS_ERROR,
+ "原流水不是成功状态")
+ }
+ if (originTrans.reverseFlag != TradeDict.REVERSE_FLAG_NONE
+ || originTrans.reverseFlag != TradeDict.REVERSE_FLAG_REFUND) {
+ throw TransactionProcessException(TradeErrorCode.TRANSDTL_STATUS_ERROR,
+ "原流水已被退款")
+ }
+
+ doReversePrepareAndCheck(originTrans, builder)
+ builder.preCheck()
+ val transaction = doReverseProcess(originTrans, builder)
+
+ originTrans.reverseFlag = TradeDict.REVERSE_FLAG_REFUND
+ originTrans.refundAmount = refundAmount
+ transactionMainDao.save(originTrans)
+ return transaction
}
override fun cancelInit(originRefno: String, builder: TransactionBuilder): TTransactionMain {
@@ -380,9 +403,7 @@
"原流水已被冲正")
}
- doReversePreCheck(originTrans, builder)
-
- builder.preCheck()
+ doReversePrepareAndCheck(originTrans, builder)
val transaction = doReverseProcess(originTrans, builder)
originTrans.reverseFlag = TradeDict.REVERSE_FLAG_CANCEL
@@ -391,10 +412,19 @@
}
private fun getOppositeTradeFlag(flag: String): String {
- return if (flag == TradeDict.TRADE_FLAG_IN) {
- TradeDict.TRADE_FLAG_OUT
- } else {
- TradeDict.TRADE_FLAG_IN
+ return when (flag) {
+ TradeDict.TRADE_FLAG_IN -> TradeDict.TRADE_FLAG_OUT
+ TradeDict.TRADE_FLAG_OUT -> TradeDict.TRADE_FLAG_IN
+ else -> "unknown"
+ }
+ }
+
+ private fun getReverseSuffix(t: String): String {
+ return when (t) {
+ TradeDict.REVERSE_FLAG_CANCEL -> "撤销"
+ TradeDict.REVERSE_FLAG_REFUND -> "退款"
+ TradeDict.REVERSE_FLAG_NONE -> ""
+ else -> ""
}
}
@@ -403,33 +433,41 @@
if (originTrans.person) {
builder.person().apply {
setAmount(-originTrans.personDtl.amount, getOppositeTradeFlag(originTrans.personDtl.tradeflag))
- opposite = AccountProxy(builder.shop().shopacc)
+ setOpposite(AccountProxy(builder.shop().shopacc))
}
}
if (originTrans.shop) {
builder.shop().apply {
setAmount(-originTrans.shopDtl.amount, getOppositeTradeFlag(originTrans.shopDtl.tradeflag))
- opposite = AccountProxy(builder.person().person)
+ setOpposite(AccountProxy(builder.person().person))
}
}
- TODO("")
-// originTrans.details.forEach {
-// builder.addDebitCreditRecord()
-// }
+ val summarySuffix = getReverseSuffix(builder.reverseType)
+ originTrans.details.forEach {
+ builder.addDebitCreditRecord(it.draccno, it.drsubjno, it.craccno, it.crsubjno,
+ -it.amount, "${it.summary}$summarySuffix")
+ }
+ return builderRecords(builder, TradeDict.DTL_STATUS_INIT)
}
- private fun doReversePreCheck(originTrans: TTransactionMain, builder: TransactionBuilder) {
+ private fun doReversePrepareAndCheck(originTrans: TTransactionMain, builder: TransactionBuilder) {
if (originTrans.person) {
val account = accountDao.findByUserid(originTrans.personDtl.userid)
?: throw TransactionProcessException(TradeErrorCode.ACCOUNT_NOT_EXISTS,
"账户不存在")
- builder.person(account)
+ builder.person(account).apply {
+ setAmount(-originTrans.personDtl.amount,
+ getOppositeTradeFlag(originTrans.personDtl.tradeflag))
+ }
}
if (originTrans.shop) {
val shopacc = shopaccDao.findByShopaccno(originTrans.shopDtl.shopaccno)
?: throw TransactionProcessException(TradeErrorCode.ACCOUNT_NOT_EXISTS,
"商户不存在")
- builder.shop(shopacc)
+ builder.shop(shopacc).apply {
+ setAmount(-originTrans.shopDtl.amount,
+ getOppositeTradeFlag(originTrans.shopDtl.tradeflag))
+ }
}
if (originTrans.subject) {
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/service/transaction_service.kt b/src/main/kotlin/com/supwisdom/dlpay/api/service/transaction_service.kt
index 2eb1752..fff1a0e 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/api/service/transaction_service.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/service/transaction_service.kt
@@ -36,7 +36,7 @@
* 退款类业务
*/
@Transactional
- fun refundInit(originRefno: String, builder: TransactionBuilder): TTransactionMain
+ fun refundInit(originRefno: String, refundAmount: Double, builder: TransactionBuilder): TTransactionMain
/**
* 撤销业务
@@ -104,7 +104,11 @@
return trans
}
- fun refund(originRefno: String, newRefno: String): TTransactionMain {
- TODO("not implementation")
+ fun refund(originRefno: String, refundAmount: Double, builder: TransactionBuilder, confirm: Boolean): TTransactionMain {
+ val trans = transactionService.refundInit(originRefno, refundAmount, builder)
+ if (confirm) {
+ return success(trans.refno)
+ }
+ return trans
}
}
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt b/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt
index 45831a5..d47d40e 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt
@@ -25,10 +25,29 @@
return if (field.isEmpty()) parent.remark else field
}
- lateinit var opposite: AccountProxy<*>
+ private lateinit var oppAccno: String
+ private lateinit var oppSubjno: String
fun hasOpposite(): Boolean {
- return this::opposite.isInitialized
+ return this::oppAccno.isInitialized
+ }
+
+ fun oppositeAccNo(): String {
+ return this.oppAccno
+ }
+
+ fun oppositeSubjNo(): String {
+ return this.oppSubjno
+ }
+
+ fun setOpposite(accno: String, subjno: String) {
+ this.oppAccno = accno
+ this.oppSubjno = subjno
+ }
+
+ fun setOpposite(accout: AccountProxy<*>) {
+ this.oppAccno = accout.getAccountNo()
+ this.oppSubjno = accout.getSubjectNo()
}
fun and(): TransactionBuilder {
@@ -46,7 +65,7 @@
* amount : 交易金额, 正向交易金额必须 >= 0, 冲正交易金额必须 <= 0
*/
fun setAmount(amount: Double, inOut: String): SubTransactionBuilder<T> {
- this.amount = amount
+ this.amount = if (inOut == TradeDict.TRADE_FLAG_IN) Math.abs(amount) else -Math.abs(amount)
this.tradeFlag = inOut
return this
}
@@ -109,9 +128,15 @@
}
}
-data class DebitCreditLine(val debit: AccountProxy<*>, val credit: AccountProxy<*>,
- val amount: Double, val summary: String,
- val seqno: Int)
+class DebitCreditLine(val debitAccNo: String, val debitSubjNo: String,
+ val creditAccNo: String, val creditSubjNo: String,
+ val amount: Double, val summary: String, val seqno: Int) {
+ constructor(debit: AccountProxy<*>, credit: AccountProxy<*>,
+ amount: Double, summary: String, seqno: Int)
+ : this(debit.getAccountNo(), debit.getSubjectNo(),
+ credit.getAccountNo(), credit.getSubjectNo(),
+ amount, summary, seqno)
+}
// 在 constructor 中加入 service 接口
class TransactionBuilder {
@@ -178,6 +203,9 @@
var reverseType: String = "none"
private set
+ var reverseRefno: String = ""
+ private set
+
// 以下属性可以在子表中不同
var payinfo: String = ""
@@ -245,12 +273,21 @@
return this
}
+ fun addDebitCreditRecord(debitAccNo: String, debitSubjNo: String,
+ creditAccNo: String, creditSubjNo: String,
+ amount: Double, summary: String): TransactionBuilder {
+ debitCreditLines.add(DebitCreditLine(debitAccNo, debitSubjNo,
+ creditAccNo, creditSubjNo,
+ amount, summary, debitCreditLines.size + 1))
+ return this
+ }
+
fun getAllDetails(): List<DebitCreditLine> {
return debitCreditLines.toList()
}
- private fun checkAmount(amount: Double): Boolean {
- return if (reverseType == TradeDict.REVERSE_FLAG_NONE) {
+ private fun checkAmount(amount: Double, tradeFlag: String): Boolean {
+ return if (tradeFlag == TradeDict.TRADE_FLAG_IN) {
amount >= 0.0
} else {
amount <= 0.0
@@ -298,7 +335,7 @@
throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR,
"个人交易收支方向错误")
}
- if (!checkAmount(it.amount)) {
+ if (!checkAmount(it.amount, it.tradeFlag)) {
throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR,
"个人交易金额不正确")
}
@@ -306,10 +343,10 @@
throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR,
"个人交易对方账户未设置")
}
- if (it.payinfo.isEmpty()) {
- throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR,
- "个人交易信息未设置")
- }
+// if (it.payinfo.isEmpty()) {
+// throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR,
+// "个人交易信息未设置")
+// }
}
}
@@ -323,7 +360,7 @@
throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR,
"商户交易收支方向错误")
}
- if (!checkAmount(it.amount)) {
+ if (!checkAmount(it.amount, it.tradeFlag)) {
throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR,
"商户交易金额不正确")
}
@@ -335,27 +372,36 @@
}
}
+
+ fun isReverseTrans(): Boolean {
+ return this.reverseType != TradeDict.REVERSE_FLAG_NONE
+ }
+
fun init(transactionService: TransactionServiceProxy): TTransactionMain {
return transactionService.init(this)
}
fun refund(originRefno: String, amount: Double, transactionService: TransactionServiceProxy): TTransactionMain {
this.reverseType = TradeDict.REVERSE_FLAG_REFUND
- return transactionService.refund(originRefno, "")
+ this.reverseRefno = originRefno
+ return transactionService.refund(originRefno, amount, this, true)
}
fun refundInit(originRefno: String, amount: Double, transactionService: TransactionServiceProxy): TTransactionMain {
this.reverseType = TradeDict.REVERSE_FLAG_REFUND
- return transactionService.refund(originRefno, "")
+ this.reverseRefno = originRefno
+ return transactionService.refund(originRefno, amount, this, false)
}
fun cancel(originRefno: String, transactionService: TransactionServiceProxy): TTransactionMain {
this.reverseType = TradeDict.REVERSE_FLAG_CANCEL
+ this.reverseRefno = originRefno
return transactionService.cancel(originRefno, this, true)
}
fun cancelInit(originRefno: String, transactionService: TransactionServiceProxy): TTransactionMain {
this.reverseType = TradeDict.REVERSE_FLAG_CANCEL
+ this.reverseRefno = originRefno
return transactionService.cancel(originRefno, this, false)
}