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 a8dde97..4c0ff3d 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/agent/AgentResponse.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/agent/AgentResponse.java
@@ -1,5 +1,7 @@
 package com.supwisdom.dlpay.agent;
 
+import java.lang.reflect.ParameterizedType;
+
 public class AgentResponse<T> {
   public static final String AGENTCODE_SUCCESS = "0";
 
@@ -69,4 +71,24 @@
   public void setPayload(T payload) {
     this.payload = payload;
   }
+
+  private T newNullPayload(Class<T> clazz) {
+    try {
+      return clazz.newInstance();
+    } catch (InstantiationException | IllegalAccessException e) {
+      throw new IllegalArgumentException("can't instance " + clazz.getName());
+    }
+  }
+
+  @SuppressWarnings("unchecked")
+  private Class<T> getPayloadBeanType() {
+    Class<T> cls = (Class<T>) ((ParameterizedType) getClass()
+        .getGenericSuperclass())
+        .getActualTypeArguments()[0];
+    return cls;
+  }
+
+  public AgentResponse() {
+    this.payload = newNullPayload(getPayloadBeanType());
+  }
 }
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/alipay_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/alipay_service_impl.kt
index 0bcb1bf..9dadacd 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/alipay_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/alipay_service_impl.kt
@@ -79,6 +79,7 @@
                 transaction.shopDtl.shopaccno,
                 qrcodePayTrans.isAnonymous, false)
         val agentResponse = AgentResponse<QrcodePayTrans>()
+        agentResponse.payload = qrcodePayTrans
         if (checkCfg(config, agentResponse)) {
             val request = AlipayTradePayRequest()
             request.bizModel = AlipayTradePayModel().apply {
@@ -97,7 +98,7 @@
                         agentResponse.agentMsg = response.msg
                         agentResponse.agentCode = response.code
                         qrcodePayTrans.agentRefno = response.tradeNo
-                        agentServiceProxy.qrcodePayTransSaveOrUpdate(qrcodePayTrans)
+                        agentResponse.payload = agentServiceProxy.qrcodePayTransSaveOrUpdate(qrcodePayTrans)
                     } else {
                         agentResponse.code = AgentCode.FAIL
                         agentResponse.agentMsg = response.msg
@@ -148,14 +149,14 @@
                 this.totalAmount = transaction.shopDtl.amount.toString()
                 this.productCode = productCode
             }
-            request.notifyUrl = StringUtil.urlAppend(config[PaytypeUtil.CFG_ALIPAY_NOTIFY],transaction.tenantid)
-            request.returnUrl = StringUtil.urlAppend(config[PaytypeUtil.CFG_ALIPAY_RETURNURL],transaction.tenantid)
+            request.notifyUrl = StringUtil.urlAppend(config[PaytypeUtil.CFG_ALIPAY_NOTIFY], transaction.tenantid)
+            request.returnUrl = StringUtil.urlAppend(config[PaytypeUtil.CFG_ALIPAY_RETURNURL], transaction.tenantid)
             try {
                 /**
                  * h5 支付方式
                  * */
                 if (transaction.transCode == TradeCode.TRANSCODE_H5PAY) {
-                    var form = alipayClient.pageExecute(request).body
+                    val form = alipayClient.pageExecute(request).body
                     //body 为Html
                     agentResponse.agentBody = form
                     agentResponse.code = AgentCode.REQUIRE_QUERY
