修改绑定签约、解约接口
diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/BindCardParam.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/BindCardParam.java
new file mode 100644
index 0000000..92428f0
--- /dev/null
+++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/BindCardParam.java
@@ -0,0 +1,34 @@
+package com.supwisdom.dlpay.api.bean;
+
+import com.supwisdom.dlpay.api.APIRequestParam;
+import com.supwisdom.dlpay.api.annotation.Sign;
+import com.supwisdom.dlpay.api.exception.RequestParamCheckException;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotEmpty;
+
+@Getter
+@Setter
+public class BindCardParam extends APIRequestParam {
+ @Sign
+ @NotEmpty(message = "卡号不能为空")
+ private String cardno;
+ @Sign
+ @NotEmpty(message = "姓名不能为空")
+ private String name;
+ @Sign
+ @NotEmpty(message = "证件类型不能为空")
+ private String idtype;
+ @Sign
+ @NotEmpty(message = "证件号不能为空")
+ private String idno;
+ @Sign
+ @NotEmpty(message = "手机号不能为空")
+ private String phone;
+
+ @Override
+ public boolean checkParam() throws RequestParamCheckException {
+ return true;
+ }
+}
diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QrcodeParam.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QrcodeParam.java
new file mode 100644
index 0000000..cca7278
--- /dev/null
+++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QrcodeParam.java
@@ -0,0 +1,31 @@
+package com.supwisdom.dlpay.api.bean;
+
+import com.supwisdom.dlpay.api.APIRequestParam;
+import com.supwisdom.dlpay.api.annotation.Sign;
+import com.supwisdom.dlpay.api.exception.RequestParamCheckException;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotEmpty;
+
+@Getter
+@Setter
+public class QrcodeParam extends APIRequestParam {
+ @Sign
+ @NotEmpty(message = "用户id不能为空")
+ private String userid;
+ @Sign
+ @NotEmpty(message = "手机用户id不能为空")
+ private String uid;
+ @Sign
+ @NotEmpty(message = "secertkey不能为空")
+ private String secertkey;
+ @Sign
+ @NotEmpty(message = "rsapublic不能为空")
+ private String rsapublic;
+
+ @Override
+ public boolean checkParam() throws RequestParamCheckException {
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java
index 55aa02e..39a759e 100644
--- a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java
+++ b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java
@@ -55,4 +55,15 @@
@PostMapping("/api/user/updateCardTransStatus")
ApiResponse updateCardTransStatus(@RequestParam("cardno") String cardno,@RequestParam("status") String status);
+ @PostMapping("/api/user/bindcard")
+ Map<String, Object> bindCard(@RequestBody BindCardParam param);
+
+ @PostMapping("/api/user/signbxy")
+ ApiResponse signbxy(@RequestParam("userid") String userid,@RequestParam("code") String code,@RequestParam("phone") String phone);
+
+ @PostMapping("/api/user/unsignbxy")
+ ApiResponse unsignbxy(@RequestParam("userid") String userid,@RequestParam("phone") String phone);
+
+ @PostMapping("/api/user/qrcode")
+ Map<String, Object> qrcode(@RequestBody QrcodeParam param);
}
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt
index 14a7bf8..d20d616 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt
@@ -1,13 +1,18 @@
package com.supwisdom.dlpay.api.controller
+import com.supwisdom.dlpay.agent.citizencard.YnrccUtil
+import com.supwisdom.dlpay.agent.service.CitizencardPayService
import com.supwisdom.dlpay.api.bean.*
import com.supwisdom.dlpay.api.exception.RequestParamCheckException
import com.supwisdom.dlpay.api.service.CardService
import com.supwisdom.dlpay.api.service.KafkaSendMsgService
+import com.supwisdom.dlpay.api.service.QRCodeService
import com.supwisdom.dlpay.api.service.UserService
import com.supwisdom.dlpay.exception.TransactionException
import com.supwisdom.dlpay.framework.ResponseBodyBuilder
+import com.supwisdom.dlpay.framework.util.TradeDict
import com.supwisdom.dlpay.framework.util.TradeErrorCode
+import com.supwisdom.dlpay.mobile.service.MobileApiService
import com.supwisdom.dlpay.system.bean.LevelBean
import com.supwisdom.dlpay.system.service.PointsService
import org.apache.commons.beanutils.BeanUtils
@@ -27,6 +32,15 @@
private lateinit var kafkaSendMsgService: KafkaSendMsgService
@Autowired
private lateinit var pointsService: PointsService
+ @Autowired
+ private lateinit var mobileApiService: MobileApiService
+ @Autowired
+ private lateinit var userService: UserService
+ @Autowired
+ private lateinit var citizencardPayService: CitizencardPayService
+ @Autowired
+ private lateinit var qrcodeService: QRCodeService
+
@PostMapping("/open")
@@ -263,4 +277,101 @@
.fail(ret.retcode, ret.retmsg))
}
}
+
+ /**
+ * 用户绑卡
+ */
+ @PostMapping("/bindcard")
+ fun bindCard(@RequestBody param: BindCardParam):ResponseEntity<Any>{
+ val card = mobileApiService.findCardByNo(param.cardno)
+ ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(400, "银行卡号有误"))
+ if (card.userid.isNullOrEmpty() || card.status != TradeDict.STATUS_NORMAL) {
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(500, "银行卡号信息有误"))
+ }
+ val person = userService.findOnePersonByUserid(card.userid)
+ if (person.name != param.name) {
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(400, "绑定信息有误[姓名]"))
+ }
+ if (person.idtype != param.idtype || person.idno != param.idno) {
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(400, "绑定信息有误[证件类型/证件号]"))
+ }
+ var signed = ""
+ //call api
+ val resp = citizencardPayService.bindCard(param.cardno, param.name, param.idtype, param.idno, param.phone)
+ if (resp.code != "0000") {
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(500, resp.message))
+ }
+ if (resp.sinstatus == YnrccUtil.TRANSTYPE_SIGNCARD ) {
+ signed = TradeDict.STATUS_YES
+ if(!card.signed){
+ card.signed = true
+ mobileApiService.saveCard(card)
+ }
+ }
+ return ResponseEntity.ok(ResponseBodyBuilder.create().data("signed", signed)
+ .success("ok"))
+ }
+
+ /**
+ * 签约银行协议
+ */
+ @PostMapping("/signbxy")
+ fun signbxy(userid: String, code: String, phone: String): ResponseEntity<Any> {
+ val card = mobileApiService.findCardByUserid(userid)
+ ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(400, "卡片不存在,请重新绑定"))
+ //call sign api
+ val person = userService.findOnePersonByUserid(card.userid)
+ val resp = citizencardPayService.signCard(card.cardno, person.name, person.idtype, person.idno, phone, YnrccUtil.TRANSTYPE_SIGNCARD, code)
+ if (resp.code != "0000") {
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(500, resp.message))
+ }
+ card.signed = true
+ mobileApiService.saveCard(card)
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .success("ok"))
+ }
+
+ /**
+ * 用户解约
+ */
+ @PostMapping("/unsignbxy")
+ fun unsignbxy(userid: String,phone:String): ResponseEntity<Any> {
+ val card = mobileApiService.findCardByUserid(userid)
+ ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(400, "银行卡不存在,不能解除代扣协议"))
+ //call sign api
+ val person = userService.findOnePersonByUserid(card.userid)
+ val captcha = ""//此处为验证码,暂由此参数代替
+ var resp = citizencardPayService.signCard(card.cardno, person.name, person.idtype, person.idno, phone, YnrccUtil.TRANSTYPE_UNSIGNCARD, captcha)
+ if (resp.code != "0000") {
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(500, resp.message))
+ }
+ card.signed = false
+ mobileApiService.saveCard(card)
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .success("ok"))
+ }
+
+ /**
+ * 二维码
+ */
+ @PostMapping("/qrcode")
+ fun qrcode(@RequestBody param: QrcodeParam): ResponseEntity<Any> {
+ val resp = qrcodeService.encodeCode(param)
+ return if (resp.retcode == 0) {
+ ResponseEntity.ok(ResponseBodyBuilder.create().data("qrcode", resp.retmsg)
+ .success("ok"))
+ } else {
+ ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(500, resp.retmsg))
+ }
+ }
}
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/qrcode_srvice_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/qrcode_srvice_impl.kt
index f26dafa..31da5df 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/qrcode_srvice_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/qrcode_srvice_impl.kt
@@ -3,6 +3,7 @@
import com.google.gson.Gson
import com.supwisdom.dlpay.api.bean.ApiResponse
import com.supwisdom.dlpay.api.bean.DoorQrcodeResponse
+import com.supwisdom.dlpay.api.bean.QrcodeParam
import com.supwisdom.dlpay.api.service.QRCodeService
import com.supwisdom.dlpay.api.service.UserService
import com.supwisdom.dlpay.framework.service.SystemUtilService
@@ -30,8 +31,9 @@
val logger = KotlinLogging.logger { }
- override fun encodeCode(uid:String): ApiResponse {
+ override fun encodeCode(param: QrcodeParam): ApiResponse {
var resp = ApiResponse()
+ val uid = param.uid
val rootkey = systemUtilService.getBusinessValue("aes.cfb.rootkey")
val iv = systemUtilService.getBusinessValue("aes.cfb.iv")
if (rootkey.isNullOrEmpty()||iv.isNullOrEmpty()) {
@@ -39,23 +41,12 @@
resp.retmsg = "秘钥未配置"
return resp
}
- val muser = mobileApiService.findUserById(uid)
- if(muser==null||TradeDict.STATUS_NORMAL!=muser.status){
- resp.retcode = 1
- resp.retmsg = "用户不存在或状态异常"
- return resp
- }
- if(muser.userid.isNullOrEmpty()){
- resp.retcode = 1
- resp.retmsg = "用户未绑定身份"
- return resp
- }
- val totp = QrCodeTotpUtil.generateTOTP(muser.secertkey)
+ val totp = QrCodeTotpUtil.generateTOTP(param.secertkey)
val rowdata = QrcodeRawData()
- rowdata.userid = muser.userid
+ rowdata.userid = param.userid
rowdata.setTotp(totp)
val orgData = Gson().toJson(rowdata)
- val publicKey = RSAKeysGenerate.getPublicKey(muser.rsapublic)
+ val publicKey = RSAKeysGenerate.getPublicKey(param.rsapublic)
val encdata = org.apache.commons.codec.binary.Base64.encodeBase64String(RSAKeysGenerate.encryptbyte(publicKey, orgData))
val qrcode = AesUtil.encryptCFB("$uid:$encdata", rootkey, iv, "AES/CFB/NoPadding")
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/qrcode_service.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/qrcode_service.kt
index 029f6a8..b5facd8 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/qrcode_service.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/qrcode_service.kt
@@ -2,8 +2,9 @@
import com.supwisdom.dlpay.api.bean.ApiResponse
import com.supwisdom.dlpay.api.bean.DoorQrcodeResponse
+import com.supwisdom.dlpay.api.bean.QrcodeParam
interface QRCodeService {
- fun encodeCode(uid: String): ApiResponse
+ fun encodeCode(param: QrcodeParam): ApiResponse
fun decodeCode(qrcode: String): DoorQrcodeResponse
}
\ No newline at end of file
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
index 299fd7f..417e852 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
@@ -857,18 +857,18 @@
*
* 二维码在线生成
* */
- @RequestMapping("/qrcode")
- fun qrcode(): JsonResult {
- val p = SecurityContextHolder.getContext().authentication
- val user = mobileApiService.findUserById(p.name)
- ?: return JsonResult.error("用户不存在,请注册")
- val resp = qrcodeService.encodeCode(user.uid)
- return if(resp.retcode==0){
- JsonResult.ok("ok").put("qrcode", resp.retmsg)!!
- }else{
- JsonResult.error(resp.retmsg)
- }
- }
+// @RequestMapping("/qrcode")
+// fun qrcode(): JsonResult {
+// val p = SecurityContextHolder.getContext().authentication
+// val user = mobileApiService.findUserById(p.name)
+// ?: return JsonResult.error("用户不存在,请注册")
+// val resp = qrcodeService.encodeCode(user.uid)
+// return if(resp.retcode==0){
+// JsonResult.ok("ok").put("qrcode", resp.retmsg)!!
+// }else{
+// JsonResult.error(resp.retmsg)
+// }
+// }
/**
*