lateinit var transactionService: TransactionServiceProxy
/**
- * 流水结果查询统一接口
+ * ============================================================================
+ * 消费流水结果查询统一接口
+ * ============================================================================
* */
- fun queryDtlResult(@RequestBody param: QueryDtlResultParam,
- request: HttpServletRequest, response: HttpServletResponse): ResponseEntity<Any> {
- try {
- if (param.checkParam() && param.checkSign(commonService.getAppidSecretByRequest(request))) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.REQUEST_SIGN_ERROR, "参数签名错误"))
- }
-
- val dtl = transactionMainDao.findByRefnoForUpdate(param.refno)
- ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.TRANSACTION_NOT_EXISTS, "交易参考号错误<${param.refno}>"))
-
- val person = if (dtl.person) {
- userService.findPersonByUserid(dtl.personDtl.userid)
- } else {
- null
- }
+ @PostMapping("/queryresult")
+ fun queryDtlResult(@RequestBody param: QueryDtlResultParam): ResponseEntity<Any> {
+ consumePayService.getTransactionMainDtl(param.refno, param.billno, param.shopaccno)?.let {
return ResponseEntity.ok(ResponseBodyBuilder.create()
- .data("refno", dtl.refno)
- .data("amount", dtl.personDtl.amount)
- .data("paytype", dtl.personDtl.sourceType)
- .data("payinfo", dtl.personDtl.payinfo)
- .also {
- if (null != person) {
- it.data("name", person.name)
- }
- }
+ .data("refno", it.refno)
+ .data("billno", it.outTradeNo)
+ .data("amount", it.shopDtl.amount)
+ .data("status", it.status)
+ .data("sourcetype", it.personDtl.sourceType)
+ .data("payinfo", it.personDtl.payinfo)
+ .data("reverseflag", it.reverseFlag)
+ .data("transdesc", it.shopDtl.transdesc)
.success("查询成功"))
- } catch (ex: RequestParamCheckException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .requestException(ex, "请求参数错误"))
- } catch (et: TransactionException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .transException(et, "查询错误"))
- }
- }
-
- private fun consumeMealer(@Suppress("UNUSED_PARAMETER") param: CitizenCardPayinitParam,
- builder: TransactionBuilder,
- feetype: ConsumeFeetype, person: TAccount, shop: TShopacc) {
- val feetypeConfig = accountUtilServcie.readFeetype(TradeDict.FEETYPE_CONSUME_MEALER,
- TradeDict.PAYTYPE_BALANCE)
- val amount = feetype.amount / 100.0
- when (feetypeConfig.crsubjno) {
- shop.subjno -> {
- builder.addDebitCreditRecord(AccountProxy(person), AccountProxy(shop),
- amount, feetypeConfig.summary)
- .shop().also {
- it.addAmount(amount)
- }
- }
- else -> {
- val subject = accountUtilServcie.readSubject(feetypeConfig.crsubjno)
- builder.addDebitCreditRecord(AccountProxy(person), AccountProxy(subject),
- amount, feetypeConfig.summary)
- }
- }
-
- }
-
- private fun consumeDiscount(@Suppress("UNUSED_PARAMETER") param: CitizenCardPayinitParam,
- builder: TransactionBuilder,
- feetype: ConsumeFeetype, person: TAccount, shop: TShopacc) {
- val feetypeConfig = accountUtilServcie.readFeetype(TradeDict.FEETYPE_CONSUME_MEALER,
- TradeDict.PAYTYPE_BALANCE)
- val amount = feetype.amount / 100.0
- when (feetypeConfig.drsubjno) {
- shop.subjno -> {
- builder.addDebitCreditRecord(AccountProxy(shop), AccountProxy(person),
- amount, feetypeConfig.summary)
- }
- else -> {
- val subject = accountUtilServcie.readSubject(feetypeConfig.drsubjno)
- builder.addDebitCreditRecord(AccountProxy(subject), AccountProxy(shop),
- amount, feetypeConfig.summary)
- }
- }
+ } ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(TradeErrorCode.TRANSACTION_NOT_EXISTS, "流水不存在"))
}
/**
}
}
+ /**
+ * ============================================================================
+ * 消费流水撤销
+ * ============================================================================
+ * */
+ @PostMapping("/paycancel")
+ fun payCancel(@RequestBody param: ConsumePayCancelParam): ResponseEntity<Any> {
+ consumePayService.getTransactionMainDtl(param.refno, param.billno, param.shopaccno)?.let {
+ //fixme: 撤销逻辑
+
+
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .success("交易确认成功"))
+ } ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(TradeErrorCode.TRANSACTION_NOT_EXISTS, "流水不存在"))
+ }
+
+ /**
+ * ============================================================================
+ * 消费流水退款
+ * ============================================================================
+ * */
+ @PostMapping("/payrefund")
+ fun payRefund(@RequestBody param: ConsumePayCancelParam): ResponseEntity<Any> {
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(TradeErrorCode.BUSINESS_DEAL_ERROR, "退款逻辑未实现"))
+ }
+
/**
* ============================================================================
* 一卡通支付【交易初始化】
* ============================================================================
* */
@PostMapping("/ykt/payinit")
- fun yktPayInit(@RequestBody param: YktCardPayinitParam, authentication: Authentication): ResponseEntity<Any> {
- try {
- if (param.checkParam() && param.checkSign(commonService.getSecretByAppid(authentication.name))) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.REQUEST_SIGN_ERROR, "参数签名错误"))
- }
-//
+ fun yktPayInit(@RequestBody param: YktCardPayinitParam): ResponseEntity<Any> {
// val person = param.uid?.let { userService.findByThirdUniqueIdenty(it) } //没注册,可能匿名?
// if (consumePayService.checkShopPaytype(param.shopaccno, TradeDict.PAYTYPE_YKT_CARD, person == null)) {
// val dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
//
// }
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.BUSINESS_PAYTYPE_NOSUPPORT, "不支持支付方式<一卡通支付>"))
- } catch (ex: RequestParamCheckException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .requestException(ex, "请求参数错误"))
- } catch (et: TransactionException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .transException(et, "业务处理错误"))
- }
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(TradeErrorCode.BUSINESS_PAYTYPE_NOSUPPORT, "不支持支付方式<一卡通支付>"))
}
* ============================================================================
* */
@PostMapping("/ykt/payfinish")
- fun yktPayFinish(@RequestBody param: CitizenCardPayfinishParam, authentication: Authentication): ResponseEntity<Any> {
- try {
- if (param.checkParam() && param.checkSign(commonService.getSecretByAppid(authentication.name))) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.REQUEST_SIGN_ERROR, "参数签名错误"))
- }
-//
-// var dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
+ fun yktPayFinish(@RequestBody param: CitizenCardPayfinishParam): ResponseEntity<Any> {
+// var dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
+// .setRefno(param.refno)
+// .wip(personBalancePayService)
+// val extendMap = consumePayService.getUserdtlExtendParamMap(dtl.refno)
+// val code = CallService.callYktPay(consumePayService.getPaytypeConfig(TradeDict.PAYTYPE_YKT_CARD, dtl.shopaccno, dtl.userid == null),
+// dtl, DateUtil.getNow(), extendMap["stuempno"]!!, extendMap["yktshopid"]!!, extendMap["devphyid"])
+// if (code.retcode == "0") {
+// dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
// .setRefno(param.refno)
-// .wip(personBalancePayService)
-// val extendMap = consumePayService.getUserdtlExtendParamMap(dtl.refno)
-// val code = CallService.callYktPay(consumePayService.getPaytypeConfig(TradeDict.PAYTYPE_YKT_CARD, dtl.shopaccno, dtl.userid == null),
-// dtl, DateUtil.getNow(), extendMap["stuempno"]!!, extendMap["yktshopid"]!!, extendMap["devphyid"])
-// if (code.retcode == "0") {
-// dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
-// .setRefno(param.refno)
-// .addResult(code.data)
-// .success(personBalancePayService) //流水置成功
+// .addResult(code.data)
+// .success(personBalancePayService) //流水置成功
//
-// return ResponseEntity.ok(ResponseBodyBuilder.create()
-// .data("refno", dtl.refno)
-// .data("billno", dtl.outtradeno)
-// .success())
-// } else {
-// PersonTransBuilder.newBuilder(accountUtilServcie)
-// .setRefno(param.refno)
-// .addResult("errmsg", code.retmsg!!)
-// .finish(personBalancePayService, TradeDict.DTL_STATUS_FAIL) //流水置成功
+// return ResponseEntity.ok(ResponseBodyBuilder.create()
+// .data("refno", dtl.refno)
+// .data("billno", dtl.outtradeno)
+// .success())
+// } else {
+// PersonTransBuilder.newBuilder(accountUtilServcie)
+// .setRefno(param.refno)
+// .addResult("errmsg", code.retmsg!!)
+// .finish(personBalancePayService, TradeDict.DTL_STATUS_FAIL) //流水置成功
//
-// return ResponseEntity.ok(ResponseBodyBuilder.create()
-// .fail(TradeErrorCode.BUSINESS_DEAL_ERROR, "交易扣费失败-${code.retmsg}"))
-// }
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .fail(TradeErrorCode.BUSINESS_DEAL_ERROR, "交易扣费失败"))
- } catch (ex: RequestParamCheckException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .requestException(ex, "请求参数错误"))
- } catch (et: TransactionException) {
- return ResponseEntity.ok(ResponseBodyBuilder.create()
- .transException(et, "业务处理错误"))
- }
+// return ResponseEntity.ok(ResponseBodyBuilder.create()
+// .fail(TradeErrorCode.BUSINESS_DEAL_ERROR, "交易扣费失败-${code.retmsg}"))
+// }
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(TradeErrorCode.BUSINESS_DEAL_ERROR, "交易扣费失败"))
}
// ============================================== //