diff --git a/payapi/src/main/java/com/supwisdom/dlpay/agent/AgentResponse.java b/payapi/src/main/java/com/supwisdom/dlpay/agent/AgentResponse.java
index 149c3ae..9f450a9 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/agent/AgentResponse.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/agent/AgentResponse.java
@@ -72,4 +72,14 @@
 
   public AgentResponse() {
   }
+
+  public AgentResponse<T> copyFrom(AgentResponse<?> src) {
+    this.agentBody = src.agentBody;
+    this.agentCode = src.agentCode;
+    this.agentMsg = src.agentMsg;
+    this.agentRefno = src.agentRefno;
+    this.code = src.code;
+    this.dtlStatus = src.dtlStatus;
+    return this;
+  }
 }
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/wechat_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/wechat_service_impl.kt
index d355f13..4b8b1c9 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/wechat_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/wechat_service_impl.kt
@@ -361,97 +361,97 @@
 
     override fun dopayInit(transaction: TTransactionMain): AgentResponse<QrcodePayTrans> {
         val agentResponse = AgentResponse<QrcodePayTrans>()
-            //H5 支付
-         //   val trans = agentServiceProxy.qrcodePayTransFindByRefno(transaction.refno)
-           // agentResponse.payload = trans
-            val bean = WechatReqResp().apply {
-                this.appid = "wx03d12be843cdadd9"
-                this.mch_id = "1513444041"
-                this.key = "3VVhvjD2F0kHzayrjgLM81qcz39FgAv1"
-                this.out_trade_no = transaction.refno
-                this.total_fee = 1
-                this.spbill_create_ip = "14.23.150.211"
-                this.body = "充值测试"
-                this.notify_url = "http://ykt.supwisdom.com:10201/payapi/api/notify/inapp/wechat/100010"
-                this.trade_type = "MWEB"
-                this.scene_info = "{\"h5_info\": {\"type\":\"Wap\",\"wap_url\": \" https://pay.qq.com\",\"wap_name\": \"微信支付\"}}"
-            }
-            bean.generaSign()
-            val xml = bean.generaXML()
-            restTemplate.messageConverters[1] = StringHttpMessageConverter(StandardCharsets.UTF_8)
-            val res = restTemplate.postForEntity(PaytypeUtil.CFG_WECHAT_UNIONPAY, xml, String::class.java)
-            val eleMap = XmlUtils.parseXml(res.body)
-            val retcode = eleMap["return_code"]
-            val resultCode = eleMap["result_code"]
+        //H5 支付
+        //   val trans = agentServiceProxy.qrcodePayTransFindByRefno(transaction.refno)
+        // agentResponse.payload = trans
+        val bean = WechatReqResp().apply {
+            this.appid = "wx03d12be843cdadd9"
+            this.mch_id = "1513444041"
+            this.key = "3VVhvjD2F0kHzayrjgLM81qcz39FgAv1"
+            this.out_trade_no = transaction.refno
+            this.total_fee = 1
+            this.spbill_create_ip = "14.23.150.211"
+            this.body = "充值测试"
+            this.notify_url = "http://ykt.supwisdom.com:10201/payapi/api/notify/inapp/wechat/100010"
+            this.trade_type = "MWEB"
+            this.scene_info = "{\"h5_info\": {\"type\":\"Wap\",\"wap_url\": \" https://pay.qq.com\",\"wap_name\": \"微信支付\"}}"
+        }
+        bean.generaSign()
+        val xml = bean.generaXML()
+        restTemplate.messageConverters[1] = StringHttpMessageConverter(StandardCharsets.UTF_8)
+        val res = restTemplate.postForEntity(PaytypeUtil.CFG_WECHAT_UNIONPAY, xml, String::class.java)
+        val eleMap = XmlUtils.parseXml(res.body)
+        val retcode = eleMap["return_code"]
+        val resultCode = eleMap["result_code"]
 
-            if (!retcode.isNullOrEmpty() && "SUCCESS" == retcode
-                    && !resultCode.isNullOrEmpty() && "SUCCESS" == resultCode) {
-                agentResponse.code = AgentCode.REQUIRE_QUERY
-                agentResponse.agentCode = resultCode
-                agentResponse.agentMsg = eleMap["return_msg"]
-                when {
-                    transaction.transCode == TradeCode.TRANSCODE_H5PAY -> agentResponse.agentBody = eleMap["mweb_url"]
-                    transaction.transCode == TradeCode.TRANSCODE_APPPAY -> {
-                        bean.prepay_id = eleMap["prepay_id"]
-                        bean.timestamp = DateUtil.getNowSecond().toString()
-                        bean.nonce_str = getRandomString(30)
-                        bean.wpackage = "Sign=WXPay"
-                        bean.generaAPPSign()
-                        agentResponse.agentBody = bean.generaAPPParamters()
-                    }
-                    transaction.transCode == TradeCode.TRANSCODE_JSPAY || transaction.transCode == TradeCode.TRANSCODE_SMPAY -> {
-                        bean.prepay_id = eleMap["prepay_id"]
-                        bean.timestamp = DateUtil.getNowSecond().toString()
-                        bean.nonce_str = getRandomString(30)
-                        bean.generaJSAPISign()
-                        agentResponse.agentBody = bean.generaJSAPIParamters()
-                    }
+        if (!retcode.isNullOrEmpty() && "SUCCESS" == retcode
+                && !resultCode.isNullOrEmpty() && "SUCCESS" == resultCode) {
+            agentResponse.code = AgentCode.REQUIRE_QUERY
+            agentResponse.agentCode = resultCode
+            agentResponse.agentMsg = eleMap["return_msg"]
+            when {
+                transaction.transCode == TradeCode.TRANSCODE_H5PAY -> agentResponse.agentBody = eleMap["mweb_url"]
+                transaction.transCode == TradeCode.TRANSCODE_APPPAY -> {
+                    bean.prepay_id = eleMap["prepay_id"]
+                    bean.timestamp = DateUtil.getNowSecond().toString()
+                    bean.nonce_str = getRandomString(30)
+                    bean.wpackage = "Sign=WXPay"
+                    bean.generaAPPSign()
+                    agentResponse.agentBody = bean.generaAPPParamters()
                 }
-                agentResponse.agentRefno = eleMap["prepay_id"]
-            } else {
-                logger.error { "code=${eleMap["err_code"]},des=${eleMap["err_code_des"]}" }
-                agentResponse.code = AgentCode.FAIL
-                agentResponse.agentCode = eleMap["err_code"]
-                agentResponse.agentMsg = eleMap["err_code_des"]
+                transaction.transCode == TradeCode.TRANSCODE_JSPAY || transaction.transCode == TradeCode.TRANSCODE_SMPAY -> {
+                    bean.prepay_id = eleMap["prepay_id"]
+                    bean.timestamp = DateUtil.getNowSecond().toString()
+                    bean.nonce_str = getRandomString(30)
+                    bean.generaJSAPISign()
+                    agentResponse.agentBody = bean.generaJSAPIParamters()
+                }
             }
+            agentResponse.agentRefno = eleMap["prepay_id"]
+        } else {
+            logger.error { "code=${eleMap["err_code"]},des=${eleMap["err_code_des"]}" }
+            agentResponse.code = AgentCode.FAIL
+            agentResponse.agentCode = eleMap["err_code"]
+            agentResponse.agentMsg = eleMap["err_code_des"]
+        }
 
         return agentResponse
     }
 
     override fun doPayQuery(transaction: TTransactionMain): AgentResponse<QrcodePayTrans> {
         val agentResponse = AgentResponse<QrcodePayTrans>()
-            //H5 支付
-            val bean = WechatReqResp().apply {
-                this.appid = "wx03d12be843cdadd9"
-                this.mch_id = "1513444041"
-                this.key = "3VVhvjD2F0kHzayrjgLM81qcz39FgAv1"
-                this.out_trade_no = transaction.refno
+        //H5 支付
+        val bean = WechatReqResp().apply {
+            this.appid = "wx03d12be843cdadd9"
+            this.mch_id = "1513444041"
+            this.key = "3VVhvjD2F0kHzayrjgLM81qcz39FgAv1"
+            this.out_trade_no = transaction.refno
+        }
+        bean.generalQuerySign()
+        val xml = bean.generalQueryXML()
+        restTemplate.messageConverters[1] = StringHttpMessageConverter(StandardCharsets.UTF_8)
+        val res = restTemplate.postForEntity(PaytypeUtil.CFG_WECHAT_QUERY, xml, String::class.java)
+        val eleMap = XmlUtils.parseXml(res.body)
+        val retcode = eleMap["return_code"]
+        val resultCode = eleMap["result_code"]
+        val tradeState = eleMap["trade_state"]
+        if (!retcode.isNullOrEmpty() && "SUCCESS" == retcode
+                && !resultCode.isNullOrEmpty() && "SUCCESS" == resultCode) {
+            agentResponse.code = AgentCode.REQUIRE_QUERY
+            agentResponse.agentCode = resultCode
+            agentResponse.agentMsg = eleMap["return_msg"]
+            when (tradeState) {
+                "SUCCESS" -> agentResponse.dtlStatus = DtlStatus.SUCCESS
+                "REFUND" -> agentResponse.dtlStatus = DtlStatus.REFUND
+                "NOTPAY", "CLOSED", "REVOKED", "PAYERROR" -> agentResponse.dtlStatus = DtlStatus.FAIL
+                "USERPAYING" -> agentResponse.dtlStatus = DtlStatus.WAIT
             }
-            bean.generalQuerySign()
-            val xml = bean.generalQueryXML()
-            restTemplate.messageConverters[1] = StringHttpMessageConverter(StandardCharsets.UTF_8)
-            val res = restTemplate.postForEntity(PaytypeUtil.CFG_WECHAT_QUERY, xml, String::class.java)
-            val eleMap = XmlUtils.parseXml(res.body)
-            val retcode = eleMap["return_code"]
-            val resultCode = eleMap["result_code"]
-            val tradeState = eleMap["trade_state"]
-            if (!retcode.isNullOrEmpty() && "SUCCESS" == retcode
-                    && !resultCode.isNullOrEmpty() && "SUCCESS" == resultCode) {
-                agentResponse.code = AgentCode.REQUIRE_QUERY
-                agentResponse.agentCode = resultCode
-                agentResponse.agentMsg = eleMap["return_msg"]
-                when (tradeState) {
-                    "SUCCESS" -> agentResponse.dtlStatus = DtlStatus.SUCCESS
-                    "REFUND" -> agentResponse.dtlStatus = DtlStatus.REFUND
-                    "NOTPAY", "CLOSED", "REVOKED", "PAYERROR" -> agentResponse.dtlStatus = DtlStatus.FAIL
-                    "USERPAYING" -> agentResponse.dtlStatus = DtlStatus.WAIT
-                }
-            } else {
-                logger.error { "code=${eleMap["err_code"]}},des=${eleMap["err_code_des"]}" }
-                agentResponse.code = AgentCode.FAIL
-                agentResponse.agentCode = eleMap["err_code"]
-                agentResponse.agentMsg = eleMap["err_code_des"]
-            }
+        } else {
+            logger.error { "code=${eleMap["err_code"]}},des=${eleMap["err_code_des"]}" }
+            agentResponse.code = AgentCode.FAIL
+            agentResponse.agentCode = eleMap["err_code"]
+            agentResponse.agentMsg = eleMap["err_code_des"]
+        }
         return agentResponse
     }
 
@@ -478,8 +478,8 @@
         }
         val temp = StringUtil.paraFilter(param)
         var signStr = StringUtil.createLinkString(temp)
-   //     val config = sourceTypeService.getConsumePaytypeConfig(TradeDict.PAYTYPE_WECHAT, transaction.shopDtl.shopaccno, false, false)
-        val key ="3VVhvjD2F0kHzayrjgLM81qcz39FgAv1"
+        //     val config = sourceTypeService.getConsumePaytypeConfig(TradeDict.PAYTYPE_WECHAT, transaction.shopDtl.shopaccno, false, false)
+        val key = "3VVhvjD2F0kHzayrjgLM81qcz39FgAv1"
         signStr += "&key=$key"
         val signRet = MD5.encodeByMD5(signStr)
         logger.error("*******signStr=$signStr")
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/inapp_wechatpay.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/inapp_wechatpay.kt
index 10579ca..841d411 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/inapp_wechatpay.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/inapp_wechatpay.kt
@@ -6,6 +6,7 @@
 import com.supwisdom.dlpay.api.domain.TShopdtl
 import com.supwisdom.dlpay.api.domain.TTransactionMain
 import com.supwisdom.dlpay.api.service.SourceTypeService
+import mu.KotlinLogging
 import org.dom4j.Element
 import org.dom4j.io.SAXReader
 import org.springframework.stereotype.Component
@@ -17,22 +18,15 @@
 class WechatInAppService(private val sourceTypeService: SourceTypeService,
                          private val wechatService: WechatService)
     : InAppPayService<TTransactionMain> {
-    val APIUrl = "https://api.mch.weixin.qq.com/pay/unifiedorder"
+
+    private val logger = KotlinLogging.logger { }
 
     override fun init(transation: TTransactionMain): AgentResponse<TTransactionMain> {
         val wechatPayResponse = AgentResponse<TTransactionMain>();
-        System.err.println("#########");
-        val shopDtlTemp = TShopdtl();
-        transation.shopDtl = shopDtlTemp;               //transaction.shopDtl must not be null
         val agentResponse = wechatService.dopayInit(transation);
-        System.err.println(agentResponse);
-        wechatPayResponse.agentBody = agentResponse.agentBody;
-        wechatPayResponse.agentCode = agentResponse.agentCode;
-        wechatPayResponse.agentMsg = agentResponse.agentMsg;
-        wechatPayResponse.agentRefno = agentResponse.agentRefno;
-        wechatPayResponse.code = agentResponse.code;
-        wechatPayResponse.dtlStatus = agentResponse.dtlStatus;
-        wechatPayResponse.payload = transation
+        logger.debug { agentResponse }
+        wechatPayResponse.copyFrom(agentResponse)
+                .payload = transation
         return wechatPayResponse;
     }
 
@@ -40,38 +34,29 @@
         val wechatPayResponse = AgentResponse<TTransactionMain>();
         // 解析结果存储在HashMap
         val map = HashMap<String, String>()
-        val inputStream = request.inputStream
         // 读取输入流
         val reader = SAXReader()
-        val document = reader.read(inputStream)
-        // 得到xml根元素
-        val root = document.rootElement
-        // 得到根元素的所有子节点
-        val elementList = root.elements() as MutableList<Element>
+        val document = reader.read(request.inputStream)
         // 遍历所有子节点
-        for (e in elementList) {
+        for (e in document.rootElement.elements()) {
             map[e.name] = e.text
         }
         // 释放资源
-        inputStream.close()
+        request.inputStream.close()
         val resp = wechatService.doPayNotify(map)
         if (resp.code == AgentCode.SUCCESS) {
             wechatPayResponse.agentBody = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>"
         } else {
             wechatPayResponse.agentBody = "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[" + resp.agentMsg + "]]></return_msg></xml>"
         }
-        return wechatPayResponse;
+        return wechatPayResponse
     }
 
     override fun query(transation: TTransactionMain): AgentResponse<TTransactionMain> {
-        val wechatPayResponse = AgentResponse<TTransactionMain>();
-        val agentResponse = wechatService.doPayQuery(transation);
-        wechatPayResponse.agentMsg = agentResponse.agentMsg;
-        wechatPayResponse.agentCode = agentResponse.agentCode;
-        wechatPayResponse.agentBody = agentResponse.agentBody;
-        wechatPayResponse.agentRefno = agentResponse.agentRefno;
-        wechatPayResponse.code = agentResponse.code;
-        wechatPayResponse.dtlStatus = agentResponse.dtlStatus;
-        return wechatPayResponse;
+        val wechatPayResponse = AgentResponse<TTransactionMain>()
+        val agentResponse = wechatService.doPayQuery(transation)
+        wechatPayResponse.copyFrom(agentResponse)
+                .payload = transation
+        return wechatPayResponse
     }
 }
\ No newline at end of file
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
index 93e305d..cfccf8d 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
@@ -30,6 +30,7 @@
 
 @RestController
 @RequestMapping("/api/consume")
+@Validated
 class ConsumeAPIController(private val qrCodeService: QRCodeService,
                            private val accountUtilServcie: AccountUtilServcie,
                            private val userService: UserService,
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/transaction_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/transaction_controller.kt
index 95e6e03..a87324f 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/transaction_controller.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/transaction_controller.kt
@@ -232,7 +232,6 @@
         TenantContextHolder.getContext().tenant = tenantDetails.get()
         val agent = agentPayServiceContext.findInAppPayService<Any>(sourcetype)
                 ?: return ResponseBodyBuilder.badRequest("请求支付类型错误 <$sourcetype> 不存在")
-        TenantContextHolder.getContext().tenant = tenantDetails.get()
         val agentResponse = agent.notify(request)
 
         return ResponseBodyBuilder.ok(agentResponse.agentBody)
