diff --git a/build.gradle b/build.gradle
index b8c991f..8edfc1c 100644
--- a/build.gradle
+++ b/build.gradle
@@ -15,7 +15,9 @@
 waterManagerVersion = gitVersion()
 repositories {
     mavenCentral()
-
+    maven {
+        url  "http://dl.bintray.com/snimavat/maven"
+    }
     maven {
         url "http://ykt-nx.supwisdom.com/repository/ecard-repo/"
         credentials {
@@ -55,6 +57,7 @@
     compile(
             'net.sf.json-lib:json-lib:2.4:jdk15'
     )
+    compile "me.nimavat:shortid:1.0.1.RC1"
     implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
     implementation 'org.springframework.boot:spring-boot-starter-data-redis'
     implementation 'org.springframework.boot:spring-boot-starter-web'
diff --git a/src/main/java/com/supwisdom/dlpay/framework/util/Constants.java b/src/main/java/com/supwisdom/dlpay/framework/util/Constants.java
index 25cecd0..4ec9e4f 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/util/Constants.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/util/Constants.java
@@ -9,4 +9,5 @@
   public static final String JWT_CLAIM_UID = "uid";
   public static final String JWT_CLAIM_AUTHORITIES = "authorities";
   public static final String DTLTYPE_WATER = "water";
+  public static final String REDISKEY_SHORTURL = "shorturl_";
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/util/ShortURLUtil.java b/src/main/java/com/supwisdom/dlpay/framework/util/ShortURLUtil.java
index c2246b2..46c7586 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/util/ShortURLUtil.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/util/ShortURLUtil.java
@@ -6,6 +6,7 @@
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import me.nimavat.shortid.ShortId;
 
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
@@ -25,6 +26,10 @@
         return doGetBaiduShortUrl(longUrl);
     }
 
+    public String doGetShortId() {
+        return ShortId.generate();
+    }
+
     public String doGetBaiduShortUrl(String longUrl) {
         String shortUrlService = businessparaService.findByParakey(WaterBudinessConstants.WATER_SHORTURL_BAIDU).getParaval(); //https://dwz.cn/admin/v2/create
         String baiduToken = businessparaService.findByParakey(WaterBudinessConstants.WATER_SHORTURL_BAIDU_TOKEN).getParaval(); //由数字和字母组成的32位字符,注册申请
diff --git a/src/main/kotlin/com/supwisdom/dlpay/water/api_request_param.kt b/src/main/kotlin/com/supwisdom/dlpay/water/api_request_param.kt
index f8bfaad..86853f6 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/water/api_request_param.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/water/api_request_param.kt
@@ -168,6 +168,9 @@
                 || !DateUtil.checkDatetimeValid(transtime, DateUtil.TIME_FMT)) {
             throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "设备日期时间错误")
         }
+        if (transtatus.any{ it !in '1'..'2'}){
+            throw RequestParamCheckException(TradeErrorCode.INPUT_DATA_ERROR, "交易状态错误")
+        }
         return true
     }
 }
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 c78361b..8623c32 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
@@ -11,13 +11,15 @@
 import com.supwisdom.dlpay.water.domain.TCollectdtl
 import com.supwisdom.dlpay.water.pay.WaterPayAsyncTask
 import com.supwisdom.dlpay.water.service.AreaService
-import com.supwisdom.dlpay.water.service.DeviceService
 import com.supwisdom.dlpay.water.service.CollectdtlService
+import com.supwisdom.dlpay.water.service.DeviceService
 import mu.KotlinLogging
 import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.data.redis.core.RedisTemplate
 import org.springframework.http.ResponseEntity
 import org.springframework.web.bind.annotation.*
 import org.springframework.web.servlet.ModelAndView
+import java.util.concurrent.TimeUnit
 
 
 @RestController
@@ -51,6 +53,9 @@
     @Autowired
     private lateinit var userProxy: UserProxy
 
+    @Autowired
+    private lateinit var redisTemplate: RedisTemplate<Any,Any>
+
     private val logger = KotlinLogging.logger { }
 
     @PostMapping("/devicelogin")
@@ -187,9 +192,11 @@
             }
             val savedTrans = collectdtlService.createNewTransdtl(trans)
             //2.将流水号及认证地址返回给终端
-            //将认证url转为短码
-            val url = shortURLUtil.doGetShortUrl(
-                    businessparaService.findByParakey(WaterBudinessConstants.waterAuthUrl).paraval + savedTrans.cobillno)
+            //生成短id 将id与认证url的映射存入redis
+            val shortId = shortURLUtil.doGetShortId()
+            redisTemplate.opsForValue().set(Constants.REDISKEY_SHORTURL + shortId, savedTrans.cobillno, 2000, TimeUnit.SECONDS)
+            val url =
+                    businessparaService.findByParakey(WaterBudinessConstants.waterAuthUrl).paraval + shortId
             return ResponseEntity.ok(ResponseBodyBuilder.create()
                     .data(WaterDeviceParam.cobillNo, savedTrans.cobillno)
                     .data(WaterDeviceParam.url, url)
@@ -201,6 +208,19 @@
         }
     }
 
+    @GetMapping("/qrcode/redirect/{shortId}")
+    fun qrcodePayRedirect(@PathVariable shortId:String) :ModelAndView {
+        return try {
+            val cobillno = redisTemplate.opsForValue().get(Constants.REDISKEY_SHORTURL + shortId)
+                    ?: return ModelAndView("error/500")
+                            .addObject("errorMsg","二维码已过期")
+            ModelAndView("redirect:/api/device/qrcode/pretend?cobillno=" + cobillno)
+        } catch (e: Exception) {
+            logger.error { e.message }
+            ModelAndView("error/500")
+        }
+    }
+
     @PostMapping("/qrcode/query")
     fun qrcodeQuery(param: QrcodeQueryRequest): ResponseEntity<Any> {
         try {
