diff --git a/payapi/src/main/java/com/supwisdom/dlpay/agent/InAppPayService.java b/payapi/src/main/java/com/supwisdom/dlpay/agent/InAppPayService.java
index c860bbf..2c66bbc 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/agent/InAppPayService.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/agent/InAppPayService.java
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.agent;
 
 import com.supwisdom.dlpay.api.domain.TTransactionMain;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -17,15 +18,19 @@
    * @param transation
    * @return
    */
+  @Transactional
   AgentResponse<T> init(TTransactionMain transation);
 
   /**
    * 当用支付完成后，第三方支付平台会发起通知给服务端，由服务端处理后续业务
    *
+   *
+   * @param refno
    * @param request     - 第三方平台通知请求的 HttpRequest
    * @return
    */
-  AgentResponse<T> notify(HttpServletRequest request);
+  @Transactional
+  AgentResponse<T> notify(String refno, HttpServletRequest request);
 
   /**
    * 由服务端主动发起的查询第三方支付平交易情况
@@ -33,5 +38,6 @@
    * @param transation - 交易参数
    * @return
    */
+  @Transactional
   AgentResponse<T> query(TTransactionMain transation);
 }
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 4b8b1c9..50288b9 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
@@ -31,8 +31,6 @@
 class WechatServiceImpl(val sourceTypeService: SourceTypeService,
                         val agentServiceProxy: AgentServiceProxy,
                         val personIdentityDao: PersonIdentityDao,
-                        val sourceTypeConfigDao: SourceTypeConfigDao,
-                        var shopSourceTypeConfigDao: ShopSourceTypeConfigDao,
                         val consumePayService: ConsumePayService,
                         val transactionService: TransactionServiceProxy,
                         val restTemplate: RestTemplate) : WechatService {
@@ -372,7 +370,7 @@
             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.notify_url = "http://ykt.supwisdom.com:10201/payapi/api/notify/inapp/wechat/100010/${transaction.refno}"
             this.trade_type = "MWEB"
             this.scene_info = "{\"h5_info\": {\"type\":\"Wap\",\"wap_url\": \" https://pay.qq.com\",\"wap_name\": \"微信支付\"}}"
         }
@@ -455,9 +453,8 @@
         return agentResponse
     }
 
-    override fun doPayNotify(param: Map<String, String>): AgentResponse<QrcodePayTrans> {
+    override fun doPayNotify(transaction: TTransactionMain?, param: Map<String, String>): AgentResponse<QrcodePayTrans> {
         val agentResponse = AgentResponse<QrcodePayTrans>()
-        val transaction = consumePayService.getTransactionMainDtl(param["out_trade_no"], null, null)
         if (transaction == null) {
             agentResponse.code = AgentCode.REFNO_NOT_EXISTS
             agentResponse.agentCode = AgentResponse.AGENTCODE_FAIL
@@ -493,12 +490,6 @@
         val resultCode = param["result_code"]
         if (!returnCode.isNullOrEmpty() && "SUCCESS" == returnCode
                 && !resultCode.isNullOrEmpty() && "SUCCESS" == resultCode) {
-            val transid = param["transaction_id"]
-            if (transid.isNullOrEmpty()) {
-                transactionService.success(transaction.refno)
-            } else {
-                transactionService.success(transaction.refno, transid, true)
-            }
             agentResponse.code = AgentCode.SUCCESS
             agentResponse.agentCode = resultCode
         } else {
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/inapp_alipay.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/inapp_alipay.kt
index 0286f15..f87f922 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/inapp_alipay.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/inapp_alipay.kt
@@ -16,7 +16,7 @@
         TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
     }
 
-    override fun notify(request: HttpServletRequest): AgentResponse<AlipayInAppResponse>? {
+    override fun notify(String: refno, request: HttpServletRequest): AgentResponse<AlipayInAppResponse>? {
         TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
     }
 
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 841d411..2010519 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
@@ -3,11 +3,9 @@
 import com.supwisdom.dlpay.agent.AgentCode
 import com.supwisdom.dlpay.agent.AgentResponse
 import com.supwisdom.dlpay.agent.InAppPayService
-import com.supwisdom.dlpay.api.domain.TShopdtl
 import com.supwisdom.dlpay.api.domain.TTransactionMain
-import com.supwisdom.dlpay.api.service.SourceTypeService
+import com.supwisdom.dlpay.api.service.TransactionServiceProxy
 import mu.KotlinLogging
-import org.dom4j.Element
 import org.dom4j.io.SAXReader
 import org.springframework.stereotype.Component
 import java.util.HashMap
@@ -15,8 +13,8 @@
 
 
 @Component("wechatInAppAgent")
-class WechatInAppService(private val sourceTypeService: SourceTypeService,
-                         private val wechatService: WechatService)
+class WechatInAppService(private val wechatService: WechatService,
+                         private val transactionServiceProxy: TransactionServiceProxy)
     : InAppPayService<TTransactionMain> {
 
     private val logger = KotlinLogging.logger { }
@@ -30,8 +28,8 @@
         return wechatPayResponse;
     }
 
-    override fun notify(request: HttpServletRequest): AgentResponse<TTransactionMain>? {
-        val wechatPayResponse = AgentResponse<TTransactionMain>();
+    override fun notify(refno: String, request: HttpServletRequest): AgentResponse<TTransactionMain>? {
+        val wechatPayResponse = AgentResponse<TTransactionMain>()
         // 解析结果存储在HashMap
         val map = HashMap<String, String>()
         // 读取输入流
@@ -43,11 +41,14 @@
         }
         // 释放资源
         request.inputStream.close()
-        val resp = wechatService.doPayNotify(map)
+        val transation = transactionServiceProxy.findTransactionByRefno(refno)
+        val resp = wechatService.doPayNotify(transation, map)
         if (resp.code == AgentCode.SUCCESS) {
+            wechatPayResponse.payload = transactionServiceProxy.success(refno)
             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>"
+            wechatPayResponse.payload = transactionServiceProxy.fail(refno, resp.agentMsg)
         }
         return wechatPayResponse
     }
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/wechat_service.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/wechat_service.kt
index fc9e813..7dddd0c 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/wechat_service.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/wechat_service.kt
@@ -27,7 +27,7 @@
 
     fun doPayQuery(transaction: TTransactionMain): AgentResponse<QrcodePayTrans>
 
-    fun doPayNotify(param: Map<String, String>): AgentResponse<QrcodePayTrans>
+    fun doPayNotify(transaction: TTransactionMain?, param: Map<String, String>): AgentResponse<QrcodePayTrans>
 }
 
 @Component("wechatAgent")
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 a87324f..5710c4a 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
@@ -221,9 +221,10 @@
                                   private val transactionServiceProxy: TransactionServiceProxy,
                                   private val agentPayServiceContext: AgentPayServiceContext) {
 
-    @PostMapping("/inapp/{sourcetype}/{tenant}")
+    @PostMapping("/inapp/{sourcetype}/{tenant}/{refno}")
     fun inAppPayCallback(@PathVariable("sourcetype") sourcetype: String,
                          @PathVariable("tenant") tenant: String,
+                         @PathVariable("refno") refno: String,
                          request: HttpServletRequest): ResponseEntity<*> {
         val tenantDetails = tenantDetailsRegistrar.getTenantDetailsById(tenant)
         if (!tenantDetails.isPresent) {
@@ -232,7 +233,7 @@
         TenantContextHolder.getContext().tenant = tenantDetails.get()
         val agent = agentPayServiceContext.findInAppPayService<Any>(sourcetype)
                 ?: return ResponseBodyBuilder.badRequest("请求支付类型错误 <$sourcetype> 不存在")
-        val agentResponse = agent.notify(request)
+        val agentResponse = agent.notify(refno, request)
 
         return ResponseBodyBuilder.ok(agentResponse.agentBody)
     }
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt
index 77c3e01..b0aefd2 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt
@@ -392,6 +392,10 @@
         return success(refno, "", true)
     }
 
+    override fun readByRefnoForUpdate(refno: String): TTransactionMain {
+        return transactionMainDao.findByRefnoForUpdate(refno)
+    }
+
     //////////////////////////////////////////////////////////////////
 // 回退业务接口，包括撤销和退款
     override fun refundInit(originRefno: String, refundAmount: Double, builder: TransactionBuilder): TTransactionMain {
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/transaction_service.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/transaction_service.kt
index ca4ef1d..cb4a931 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/transaction_service.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/transaction_service.kt
@@ -34,6 +34,9 @@
     @Transactional
     fun success(refno: String): TTransactionMain
 
+    @Transactional
+    fun readByRefnoForUpdate(refno: String): TTransactionMain
+
     /**
      * 退款类业务
      */
@@ -149,6 +152,10 @@
         return transactionMainDao.findByRefno(refno)
     }
 
+    fun findTransactionByRefnoForUpdate(refno: String): TTransactionMain {
+        return transactionMainDao.findByRefnoForUpdate(refno)
+    }
+
     fun findByOutTradeNo(refno: String): TTransactionMain? {
         return transactionMainDao.findByOutTradeNo(refno)
     }
