diff --git a/build.gradle b/build.gradle
index 0445199..bed1563 100644
--- a/build.gradle
+++ b/build.gradle
@@ -93,7 +93,7 @@
     compileOnly 'org.projectlombok:lombok:1.18.8'
     annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
     
-    compile 'com.supwisdom:payapi-sdk:1.0.10'
+    compile 'com.supwisdom:payapi-sdk:1.0.28-1-g7415df3'
     
 //    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
     testImplementation 'org.springframework.boot:spring-boot-starter-test'
diff --git a/src/main/java/com/supwisdom/dlpay/util/ConstantUtil.java b/src/main/java/com/supwisdom/dlpay/util/ConstantUtil.java
index a525547..1e55b1c 100644
--- a/src/main/java/com/supwisdom/dlpay/util/ConstantUtil.java
+++ b/src/main/java/com/supwisdom/dlpay/util/ConstantUtil.java
@@ -27,7 +27,8 @@
   public static final String FEETYPE_DISCOUNT = "discount";
   public static final String[] FEETYPE_DICTS = {"none", "mealer", "discount"}; //联动
 
-
+  public static final String CARDTYPE_CITIZENCARD = "citizencard";
+  public static final String CARDTYPE_BANKCARD = "bankcard";
   /**
    * TDictionary的dicttype
    * */
diff --git a/src/main/java/com/supwisdom/dlpay/water/service/impl/DeviceServiceImpl.java b/src/main/java/com/supwisdom/dlpay/water/service/impl/DeviceServiceImpl.java
index bc9269c..e41dfae 100644
--- a/src/main/java/com/supwisdom/dlpay/water/service/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/water/service/impl/DeviceServiceImpl.java
@@ -206,10 +206,10 @@
 
     @Override
     public Map<String, Object> deviceLogin(DeviceLoginParam param) {
-        Map<String, Object> result = new HashMap<>();
+        Map<String, Object> result = new HashMap<>(4);
         TDevice device = deviceDao.findByDeviceno(param.getDeviceno());
         if (device != null) {
-            if (device.getDeviceStatus().equals("closed")) {
+            if ("closed".equals(device.getDeviceStatus())) {
                 result.put("flag", false);
                 result.put("errorMsg", "本设备已注销，签到失败");
                 return result;
diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt
index a68ee5f..e13fdd0 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/water/controller/api_controller.kt
@@ -1,5 +1,7 @@
 package com.supwisdom.dlpay.water.controller
 
+import com.supwisdom.dlpay.api.bean.JsonResult
+import com.supwisdom.dlpay.api.bean.QueryCardParam
 import com.supwisdom.dlpay.api.bean.QueryUserParam
 import com.supwisdom.dlpay.framework.ResponseBodyBuilder
 import com.supwisdom.dlpay.framework.service.BusinessparaService
@@ -7,6 +9,7 @@
 import com.supwisdom.dlpay.framework.util.*
 import com.supwisdom.dlpay.paysdk.proxy.UserProxy
 import com.supwisdom.dlpay.system.service.UserDataService
+import com.supwisdom.dlpay.util.ConstantUtil
 import com.supwisdom.dlpay.water.*
 import com.supwisdom.dlpay.water.domain.TCollectdtl
 import com.supwisdom.dlpay.water.pay.WaterPayAsyncTask
@@ -112,6 +115,19 @@
                 return ResponseEntity.ok(ResponseBodyBuilder.create()
                         .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, "用户消费状态异常"))
             }
+            val cardResponse = userProxy.queryCard(QueryCardParam().apply {
+                this.cardno = userInfo.bankcardno
+                this.cardtype = ConstantUtil.CARDTYPE_BANKCARD
+            })
+            if (cardResponse.retcode != 0) {
+                logger.error { "查询卡片[${userInfo.bankcardno}]信息失败:${cardResponse.retmsg}" }
+                return ResponseEntity.ok(ResponseBodyBuilder.create()
+                        .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, "银行卡信息异常"))
+            }
+            if (!cardResponse.card.signed) {
+                return ResponseEntity.ok(ResponseBodyBuilder.create()
+                        .fail(WaterErrorCode.DATA_NOTFOUND_ERROR, "请签约银行卡"))
+            }
             val person = userDataService.savePerson(userInfo)
             val localIdentity = userDataService.
                     getPersonIdentityByThirdUidOrUserid(param.citizenCardno,userInfo.userid)
@@ -327,6 +343,17 @@
             if (userInfo.cardstatus != TradeDict.STATUS_NORMAL || userInfo.transstatus != TradeDict.STATUS_NORMAL) {
                 return ModelAndView("error/500").addObject("errorMsg", "用户消费状态异常")
             }
+            val cardResponse = userProxy.queryCard(QueryCardParam().apply {
+                this.cardno = userInfo.bankcardno
+                this.cardtype = ConstantUtil.CARDTYPE_BANKCARD
+            })
+            if (cardResponse.retcode != 0) {
+                logger.error { "查询卡片[${userInfo.bankcardno}]信息失败:${cardResponse.retmsg}" }
+                return ModelAndView("error/500").addObject("errorMsg", "未查询到用户银行卡信息")
+            }
+            if (!cardResponse.card.signed) {
+                return ModelAndView("error/500").addObject("errorMsg", "请先签约银行卡")
+            }
             val person = userDataService.savePerson(userInfo)
             val localIdentity = userDataService.
                     getPersonIdentityByThirdUidOrUserid(null,userInfo.userid)
