diff --git a/payapi-sdk/src/test/java/com/supwisdom/dlpay/paysdktest/CitizenCardPayProxyTest.java b/payapi-sdk/src/test/java/com/supwisdom/dlpay/paysdktest/CitizenCardPayProxyTest.java
index 7d47710..77b24b2 100644
--- a/payapi-sdk/src/test/java/com/supwisdom/dlpay/paysdktest/CitizenCardPayProxyTest.java
+++ b/payapi-sdk/src/test/java/com/supwisdom/dlpay/paysdktest/CitizenCardPayProxyTest.java
@@ -7,7 +7,7 @@
 import com.supwisdom.dlpay.paysdk.proxy.*;
 import com.supwisdom.mutlitenant.client.annotations.EnableTenantJwtClient;
 import com.supwisdom.mutlitenant.client.config.JwtTenantAuthentication;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
@@ -62,7 +62,7 @@
   private ConsumePropxy consumePropxy;
 
 
-  @org.junit.Test
+  @Test
   public void citizencardPayinit() {
     ApiVersionResponse version = apiCommonProxy.apiVersion();
 
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/agent/domain/InAppPayTrans.java b/payapi/src/main/java/com/supwisdom/dlpay/agent/domain/InAppPayTrans.java
index 933557a..6577aeb 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/agent/domain/InAppPayTrans.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/agent/domain/InAppPayTrans.java
@@ -1,7 +1,5 @@
 package com.supwisdom.dlpay.agent.domain;
 
-import org.joda.time.DateTime;
-
 import javax.persistence.*;
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
index 2eda4b3..42ee1e4 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
@@ -2,8 +2,6 @@
 
 import com.supwisdom.dlpay.framework.tenant.TenantCacheKeyGen
 import com.supwisdom.multitenant.TenantContextHolder
-import com.supwisdom.multitenant.annotations.EnableHttpHeaderTenantInterceptor
-import com.supwisdom.multitenant.annotations.EnableSessionTenantInterceptor
 import com.supwisdom.multitenant.exceptions.TenantNotDefException
 import com.supwisdom.multitenant.jwt.JwtTenantConfigAdapter
 import com.supwisdom.multitenant.jwt.annotations.EnableJwtTenantInterceptor
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/advices.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/advices.kt
index 29f00d5..47182ef 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/advices.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/advices.kt
@@ -19,9 +19,11 @@
 import org.springframework.security.core.context.SecurityContextHolder
 import org.springframework.stereotype.Component
 import org.springframework.transaction.TransactionSystemException
+import org.springframework.validation.annotation.Validated
 import org.springframework.web.bind.MethodArgumentNotValidException
 import org.springframework.web.bind.annotation.ControllerAdvice
 import org.springframework.web.bind.annotation.ExceptionHandler
+import org.springframework.web.bind.annotation.ResponseStatus
 import org.springframework.web.bind.annotation.RestControllerAdvice
 import org.springframework.web.context.request.WebRequest
 import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler
@@ -49,6 +51,7 @@
         return ResponseEntity.ok().body(ResponseBodyBuilder.create()
                 .exception(TradeErrorCode.BUSINESS_DEAL_ERROR, undeclared, "业务处理报错"))
     }
+
 }
 
 @ControllerAdvice("com.supwisdom.dlpay")
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 44e0753..b895284 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
@@ -24,16 +24,18 @@
 import org.springframework.data.redis.connection.RedisConnectionFactory
 import org.springframework.data.redis.core.RedisTemplate
 import org.springframework.http.HttpRequest
+import org.springframework.http.HttpStatus
 import org.springframework.http.ResponseEntity
-import org.springframework.web.bind.annotation.GetMapping
-import org.springframework.web.bind.annotation.PathVariable
-import org.springframework.web.bind.annotation.PostMapping
-import org.springframework.web.bind.annotation.RestController
+import org.springframework.validation.annotation.Validated
+import org.springframework.web.bind.annotation.*
+import javax.validation.ConstraintViolationException
 import javax.validation.Valid
 import kotlin.math.roundToInt
 
 
-@RestController("/api/transaction")
+@RestController
+@RequestMapping("/api/transaction")
+@Validated
 class TransactionController(private val transactionServiceProxy: TransactionServiceProxy,
                             private val systemUtilService: SystemUtilService,
                             private val accountUtilServcie: AccountUtilServcie,
@@ -91,7 +93,7 @@
     }
 
     @PostMapping("/inapp/payinit")
-    fun inAppPayInit(@Valid param: InAppPayParam): ResponseEntity<*> {
+    fun inAppPayInit(@Valid @RequestBody param: InAppPayParam): ResponseEntity<*> {
         val response = InAppPayResponse()
         if (transactionContainer.count() > 100) {
             return ResponseBodyBuilder.internalServerError("第三方请求异常")
@@ -178,6 +180,7 @@
         }
         return ResponseBodyBuilder.successEntity(response)
     }
+
 }
 
 class TransactionContainer(private val name: String,
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/security.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/security.kt
index 324c5a6..b355603 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/security.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/security.kt
@@ -52,7 +52,7 @@
         try {
             jwtTokenContext.jwt.ifPresent { jwt ->
                 val auth = UsernamePasswordAuthenticationToken(jwt.uid, null,
-                        (jwt.authorities as ArrayList<*>)
+                        (jwt.authorities as ArrayList<Any>)
                                 .map { SimpleGrantedAuthority(it as String) })
                 SecurityContextHolder.getContext().authentication = auth
             }
