diff --git a/src/main/java/com/supwisdom/dlpay/api/controller/DoorApiAction.java b/src/main/java/com/supwisdom/dlpay/api/controller/DoorApiAction.java
index d1bc2df..45c6a9d 100644
--- a/src/main/java/com/supwisdom/dlpay/api/controller/DoorApiAction.java
+++ b/src/main/java/com/supwisdom/dlpay/api/controller/DoorApiAction.java
@@ -106,7 +106,7 @@
     datamap.put("company",postData.getCompany());
     datamap.put("remarks",postData.getRemarks());
     Map<String, String> paraFilter = HmacUtil.paraFilter(datamap);
-    String linkString = StringUtil.createLinkString(paraFilter);
+    String linkString= "visitorname="+postData.getVisitorname()+"&idno="+postData.getIdno()+"&custid="+postData.getCustid();
     String hmacsha1 = HmacUtil.HMACSHA1(linkString, "adc4ac6822fd462780f878b86cb94688");
 
       if(postData.getSign()==null||!postData.getSign().toLowerCase().equals(hmacsha1.toLowerCase())){
diff --git a/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java b/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
index cbc0a82..fdff5d0 100644
--- a/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
+++ b/src/main/java/com/supwisdom/dlpay/app/controller/AppController.java
@@ -169,11 +169,13 @@
         if (b) {
 
             model.addAttribute("msg", "欢迎");
+            return "apph5/visitorresult";
+
         } else {
             model.addAttribute("msg", "您还未关注公众号，请先关注");
+            return "apph5/visitorresultfail";
 
         }
-        return "apph5/visitorresult";
     }
 
 
diff --git a/src/main/resources/static/res/images/visitorfail.jpg b/src/main/resources/static/res/images/visitorfail.jpg
new file mode 100644
index 0000000..0341e25
--- /dev/null
+++ b/src/main/resources/static/res/images/visitorfail.jpg
Binary files differ
diff --git a/src/main/resources/templates/apph5/visitorresult.html b/src/main/resources/templates/apph5/visitorresult.html
index ce81044..e113e0d 100644
--- a/src/main/resources/templates/apph5/visitorresult.html
+++ b/src/main/resources/templates/apph5/visitorresult.html
@@ -20,7 +20,7 @@
     <!--<script src="https://unpkg.com/vue/dist/vue.js"></script>
     <script src="https://unpkg.com/mint-ui/lib/index.js"></script>-->
 </head>
-<body th:background="@{/static/res/images/visitorsuccess.jpg}">
+<body  th:background="@{/static/res/images/visitorsuccess.jpg}" th:attr="background-size='contain'"  >
 <div id="app"  >
  <!--   <div class="page-title" style="text-align:center; font-size: 24px;color: #FF8247">登记结果</div><br>
     <div class="mintui-success" id="msg"></div>
diff --git a/src/main/resources/templates/apph5/visitorresultfail.html b/src/main/resources/templates/apph5/visitorresultfail.html
new file mode 100644
index 0000000..81d715f
--- /dev/null
+++ b/src/main/resources/templates/apph5/visitorresultfail.html
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
+<head>
+    <title>首页</title>
+    <!--<meta name="_csrf_header" th:content="${_csrf.headerName}" />
+    <meta name="_csrf_token" th:content="${_csrf.parameterName}" th:value="${_csrf.token}" />-->
+    <meta charset="utf-8"/>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <!-- 引入样式 -->
+    <!--<link rel="stylesheet" href="https://unpkg.com/mint-ui/lib/style.css">-->
+    <link rel="stylesheet" href="/static/res/assets/plugins/mintui/style.css" th:href="@{/static/res/assets/plugins/mintui/style.css}">
+    <script type="text/javascript" th:src="@{/static/res/assets/plugins/jquery/jquery.min.js}"></script>
+    <script type="text/javascript" th:src="@{/static/res/assets/plugins/layer/layer.js}"></script>
+    <!-- 先引入 Vue -->
+    <script type="text/javascript" th:src="@{/static/res/assets/plugins/nutui/vue.min.js}"></script>
+    <!-- 引入组件库 -->
+    <script type="text/javascript" th:src="@{/static/res/assets/plugins/mintui/index.js}"></script>
+
+    <!--<script src="https://unpkg.com/vue/dist/vue.js"></script>
+    <script src="https://unpkg.com/mint-ui/lib/index.js"></script>-->
+</head>
+<body  th:background="@{/static/res/images/visitorfail.jpg}" th:attr="background-size='contain'" >
+<div id="app"  >
+ <!--   <div class="page-title" style="text-align:center; font-size: 24px;color: #FF8247">登记结果</div><br>
+    <div class="mintui-success" id="msg"></div>
+    <input type="hidden" id="issuccess" th:value="${issuccess}">
+-->
+</div>
+
+<!--<img th:src="@{/static/res/images/visitorsuccess.jpg}"/>-->
+</body>
+
+<script>
+    $(function () {
+        var flag=$("#issuccess").val();
+        if(flag){
+            $("#msg").html("<p class='mintui-success'>登记成功</p>")
+        }else {
+            $("#msg").html("<p class='mintui-success'>登记失败</p>")
+        }
+
+    });
+    var mint_vue = new Vue({
+        el: '#app',
+        data:{
+            devList:[],
+            userId:'',
+            selectDevId:'',
+            devName:'',
+        },
+        methods: {
+            openDoor:function (devId) {
+                //mint_openDoor(devId);
+            },
+            loadListData:function (devName) {
+                //mint_searchByDevName(devName);
+            },
+
+        },
+        watch:{
+            devName:function(newvs,oldvs){
+
+                if(!newvs){
+                    //mint_searchByDevName('');
+                }
+            }
+        },
+        created:function() {
+            var _self = this;
+
+            var userId = '[[${userId}]]';
+            _self.userId = userId;
+
+
+        }
+    })
+
+
+
+
+
+</script>
+<style>
+    .mint-search{
+        height:50px;
+    }
+
+    .mint-searchbar{
+        padding:1px 1px 1px 1px;
+        box-sizing: border-box
+    }
+</style>
+</html>
