一卡通支付调试
diff --git a/src/main/java/com/supwisdom/dlpay/consume/dao/AccountDao.java b/src/main/java/com/supwisdom/dlpay/consume/dao/AccountDao.java
index 948b525..e82cb11 100644
--- a/src/main/java/com/supwisdom/dlpay/consume/dao/AccountDao.java
+++ b/src/main/java/com/supwisdom/dlpay/consume/dao/AccountDao.java
@@ -11,8 +11,8 @@
public interface AccountDao extends JpaRepository<TAccount, String> {
@Lock(LockModeType.PESSIMISTIC_WRITE)
- @Query("select a from taccount a where a.accno = ?1")
- TAccount getByAccnoForUpdate(String accno);
+ //@Query("select a from taccount a where a.accno = ?1")
+ TAccount getByAccno(String accno);
TAccount findByUserid(String userid);
}
diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/ThirdPayCall.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/ThirdPayCall.kt
index d003d71..8419452 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/consume/ThirdPayCall.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/consume/ThirdPayCall.kt
@@ -16,7 +16,7 @@
class CallService {
companion object {
- fun callYktPay(config: Map<String, String>, paydtl: TUserdtl, time: String): BaseResp {
+ fun callYktPay(config: Map<String, String>, paydtl: TUserdtl, time: String,stuempno: String, yktshopid: String, devphyid: String?): BaseResp {
val code = BaseResp()
val appid = config["appid"]
@@ -25,12 +25,12 @@
val params = hashMapOf<String, String?>()
params.put("partner_id", appid)
- params.put("stuempno", "")
+ 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", "")
- params.put("devphyid", "")
+ params.put("shopid", yktshopid)
+ params.put("devphyid", devphyid)
params.put("calcmanagefee", "T") //是否计算费率
params.put("timestamp", time)
params.put("sign_method", "HMAC");
diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/comsume_builder.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/comsume_builder.kt
index 75b8e1b..8243a78 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/consume/comsume_builder.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/consume/comsume_builder.kt
@@ -12,6 +12,7 @@
import com.supwisdom.dlpay.framework.util.TradeDict
import com.supwisdom.dlpay.framework.util.TradeErrorCode
import com.supwisdom.dlpay.framework.util.Tradetype
+import org.springframework.beans.factory.annotation.Autowired
class AccountHolder<T> private constructor(val accountId: String, val idType: Int) {
companion object {
@@ -81,7 +82,7 @@
// 内部参数,不需要调用者处理
val details = mutableListOf<TransDetail>()
var amount: Double = 0.0
- lateinit var accountUtil: AccountUtilServcie
+ var accountUtil = accUitl
/**
* 支付方式
@@ -89,8 +90,14 @@
var paytype = ""
var payinfo = ""
- fun setOwner(per: TPerson) {
+ /**
+ * 外部流水号
+ * */
+ var outtradeno = ""
+
+ fun setOwner(per: TPerson): PersonTransBuilder {
this.person = per
+ return this
}
fun enableOverdraft(b: Boolean = false): PersonTransBuilder {
@@ -110,6 +117,11 @@
return this
}
+ fun setOuttradeno(outtradeno: String): PersonTransBuilder {
+ this.outtradeno = outtradeno
+ return this
+ }
+
fun chooseTradetype(tradetype: Tradetype) {
this.tradetype = tradetype
}
diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt
index 6ca2d5e..61784ec 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt
@@ -68,30 +68,30 @@
@PostMapping("/ykt/payinit")
fun yktPayInit(userid: String, amount: Int, manageFee: Int,
- stuempno: String,shopid:String, transdate: String, transtime: String,
+ stuempno: String, shopid: String, transdate: String, transtime: String,
outtradeno: String, payinfo: String): ResponseEntity<Any> {
//一卡通支付款 112240
var person = personService.getPersonByThirdUniqueIdenty(stuempno)
val dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
.setTransDatetime(transdate, transtime)
+ .selectPaytype(PaytypeUtil.YKTPAY, payinfo)
+ .setOuttradeno(outtradeno)
+ .setOwner(person)
.addDetail(AccountHolder.subject("112240"),
- AccountHolder.shop("12323"),
+ AccountHolder.shop(shopid),
amount / 100.0, "")
- .addDetail(AccountHolder.subject("112240"), AccountHolder.transType(301),
- manageFee / 100.0, "")
- .done(personBalancePayService,false)
+ .done(personBalancePayService, false)
return ResponseEntity.ok(dtl)
}
@PostMapping("/ykt/payfinish")
- fun yktPayFinish(refno: String,yktshopid: String): ResponseEntity<Any> {
- //一卡通支付款 112240
+ fun yktPayFinish(refno: String, yktshopid: String, devphyid: String?): ResponseEntity<Any> {
val dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
.done(refno, TradeDict.DTL_STATUS_WIP, personBalancePayService)
+ var person = personService.getPersonByUserid(dtl.userid)
val code = CallService.callYktPay(paytypeService.getPaytypeConfigByPaytype(PaytypeUtil.YKTPAY),
- dtl, DateUtil.getNow())
+ dtl, DateUtil.getNow(),person?.thirdUniqueIdenty,yktshopid,devphyid)
return if (code.retcode == "0") {
- //TODO update dtl
val suc = PersonTransBuilder.newBuilder(accountUtilServcie)
.done(dtl.refno, TradeDict.DTL_STATUS_SUCCESS, personBalancePayService)
ResponseEntity.ok(suc)
diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/pay_service_impl.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/pay_service_impl.kt
index a556058..8ce1108 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/pay_service_impl.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/pay_service_impl.kt
@@ -16,6 +16,7 @@
import com.supwisdom.dlpay.framework.service.SystemUtilService
import com.supwisdom.dlpay.framework.util.TradeDict
import com.supwisdom.dlpay.framework.util.TradeErrorCode
+import com.supwisdom.dlpay.framework.util.Tradetype
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service
import javax.persistence.EntityManager
@@ -117,6 +118,10 @@
userdtl.transdate = builder.transDate
userdtl.transtime = builder.transTime
userdtl.userid = builder.person?.userid
+ userdtl.outtradeno = builder.outtradeno
+ userdtl.payinfo = builder.payinfo
+ userdtl.paytype = builder.paytype
+ userdtl.tradeflag = 2
userdtlDao.save(userdtl)
return userdtl
}
@@ -130,7 +135,17 @@
}
override fun finish(paydtl: TUserdtl, status: String, builder: PersonTransBuilder): TUserdtl {
- TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+ if(paydtl.status==TradeDict.DTL_STATUS_SUCCESS){
+ return paydtl
+ }
+ paydtl.status = status
+ if(status==TradeDict.DTL_STATUS_SUCCESS){
+ //TODO 更新商户余额,科目余额,账户支付的需要更新余额
+ }
+ val systemtime = systemUtilService.sysdatetime
+ paydtl.endtime = systemtime.hostdatetime
+ userdtlDao.save(paydtl)
+ return paydtl
}
override fun finish(refno: String, status: String, builder: PersonTransBuilder): TUserdtl {
diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/person_service_impl.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/person_service_impl.kt
index e582c50..d6e0cf5 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/person_service_impl.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/person_service_impl.kt
@@ -14,7 +14,11 @@
@Autowired
lateinit var personDao: PersonDao
- override fun getPersonByThirdUniqueIdenty(thirdUniqueIdenty: String?): TPerson {
+ override fun getPersonByThirdUniqueIdenty(thirdUniqueIdenty: String): TPerson {
return personDao.findByThirdUniqueIdenty(thirdUniqueIdenty)
}
+
+ override fun getPersonByUserid(userid: String): TPerson {
+ return personDao.getOne(userid)
+ }
}
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/service/person_service.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/service/person_service.kt
index ce35e2c..1efe1a8 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/consume/service/person_service.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/consume/service/person_service.kt
@@ -9,6 +9,9 @@
*/
interface PersonService {
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
- fun getPersonByThirdUniqueIdenty(thirdUniqueIdenty: String?): TPerson
+ fun getPersonByThirdUniqueIdenty(thirdUniqueIdenty: String): TPerson
+
+ @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
+ fun getPersonByUserid(userid: String): TPerson
}
\ No newline at end of file