diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/ThirdPayCall.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/ThirdPayCall.kt
index 3070350..323ac49 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/consume/ThirdPayCall.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/consume/ThirdPayCall.kt
@@ -16,7 +16,7 @@
 class CallService {
 
     companion object {
-        fun callYktPay(config: Map<String, String>, paydtl: TUserdtl, time: String, callback: (code: BaseResp) -> Unit) {
+        fun callYktPay(config: Map<String, String>, paydtl: TUserdtl, time: String): BaseResp {
             lateinit var code:BaseResp
 
             var appid = config["appid"]
@@ -51,8 +51,7 @@
                         if (result == null) {
                             code.retcode = "1"
                             code.retmsg = "返回内容为空"
-                            callback(code)
-                            return
+                            return code
                         }
                         if (!"0".equals(result.getRetcode())) {
                             if ("30".equals(result.getRetcode())) {
@@ -64,8 +63,7 @@
                                             if (3 == supStatusRevResp.getStatus() && supStatusRevResp.getRevflag() != null && !supStatusRevResp.getRevflag()) {
                                                 code.retcode = "0"
                                                 code.retmsg = "成功"
-                                                callback(code)
-                                                return
+                                                return code
                                             }
                                         }
                                     } catch (e: Exception ) {
@@ -75,13 +73,11 @@
                             }
                             code.retcode = "1"
                             code.retmsg = "交易失败:" + result.getRetmsg()
-                            callback(code)
-                            return
+                            return code
                         }
                         code.retcode = "0"
                         code.retmsg = "成功"
-                        callback(code)
-                        return
+                        return code
                     } catch (e: Exception) {
                         e.printStackTrace()
                     }
@@ -89,7 +85,7 @@
             }
             code.retcode = "1"
             code.retmsg = "请求失败"
-            callback(code)
+            return code
         }
     }
 }
\ No newline at end of file
diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt
index 61ce9f5..eb02d45 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt
@@ -84,13 +84,16 @@
         //一卡通支付款 112240
         val dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
                 .done(refno, TradeDict.DTL_STATUS_WIP, personBalancePayService)
-        CallService.callYktPay(paytypeService.getPaytypeConfigByPaytype(PaytypeUtil.YKTPAY), dtl, DateUtil.getNow()) { code ->
-            if (code.retcode == "0") {
-                 //TODO update dtl
-               var dtl = PersonTransBuilder.newBuilder(accountUtilServcie)
-                        .done(dtl.refno,TradeDict.DTL_STATUS_SUCCESS,personBalancePayService)
-            }
+        var code = CallService.callYktPay(paytypeService.getPaytypeConfigByPaytype(PaytypeUtil.YKTPAY), dtl, DateUtil.getNow())
+        if (code.retcode == "0") {
+            //TODO update dtl
+            var suc = PersonTransBuilder.newBuilder(accountUtilServcie)
+                    .done(dtl.refno,TradeDict.DTL_STATUS_SUCCESS,personBalancePayService)
+            return ResponseEntity.ok(suc)
+        }else {
+            var fail = PersonTransBuilder.newBuilder(accountUtilServcie)
+                    .done(dtl.refno,TradeDict.DTL_STATUS_FAIL,personBalancePayService)
+            return ResponseEntity.ok(fail)
         }
-        return ResponseEntity.ok(dtl)
     }
 }
\ No newline at end of file
