diff --git a/common/src/main/java/com/supwisdom/dlpay/api/annotation/IDNoCheck.java b/common/src/main/java/com/supwisdom/dlpay/api/annotation/IDNoCheck.java
index bf486db..1760452 100644
--- a/common/src/main/java/com/supwisdom/dlpay/api/annotation/IDNoCheck.java
+++ b/common/src/main/java/com/supwisdom/dlpay/api/annotation/IDNoCheck.java
@@ -1,5 +1,6 @@
 package com.supwisdom.dlpay.api.annotation;
 
+import com.supwisdom.dlpay.api.util.IDTypes;
 import com.supwisdom.dlpay.api.validator.IDNoCheckValidator;
 
 import javax.validation.Constraint;
@@ -32,5 +33,5 @@
    *
    * @return
    */
-  String[] value();
+  IDTypes value();
 }
\ No newline at end of file
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/bean/ApiLoginInitResponse.java b/common/src/main/java/com/supwisdom/dlpay/api/bean/ApiLoginInitResponse.java
new file mode 100644
index 0000000..5eb21d4
--- /dev/null
+++ b/common/src/main/java/com/supwisdom/dlpay/api/bean/ApiLoginInitResponse.java
@@ -0,0 +1,16 @@
+package com.supwisdom.dlpay.api.bean;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class ApiLoginInitResponse extends ApiResponse {
+  private String timestamp;
+  private String token;
+}
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/bean/ApiLoginResponse.java b/common/src/main/java/com/supwisdom/dlpay/api/bean/ApiLoginResponse.java
new file mode 100644
index 0000000..1499408
--- /dev/null
+++ b/common/src/main/java/com/supwisdom/dlpay/api/bean/ApiLoginResponse.java
@@ -0,0 +1,17 @@
+package com.supwisdom.dlpay.api.bean;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+public class ApiLoginResponse extends ApiResponse {
+  private String jwt;
+  private String appid;
+  private String expiredAt;
+
+}
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/bean/ApiResponse.java b/common/src/main/java/com/supwisdom/dlpay/api/bean/ApiResponse.java
similarity index 80%
rename from payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/bean/ApiResponse.java
rename to common/src/main/java/com/supwisdom/dlpay/api/bean/ApiResponse.java
index 4b18413..1f34e8c 100644
--- a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/bean/ApiResponse.java
+++ b/common/src/main/java/com/supwisdom/dlpay/api/bean/ApiResponse.java
@@ -1,4 +1,4 @@
-package com.supwisdom.dlpay.paysdk.bean;
+package com.supwisdom.dlpay.api.bean;
 
 
 import lombok.Getter;
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/bean/ApiVersionResponse.java b/common/src/main/java/com/supwisdom/dlpay/api/bean/ApiVersionResponse.java
new file mode 100644
index 0000000..911777c
--- /dev/null
+++ b/common/src/main/java/com/supwisdom/dlpay/api/bean/ApiVersionResponse.java
@@ -0,0 +1,14 @@
+package com.supwisdom.dlpay.api.bean;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class ApiVersionResponse extends ApiResponse {
+  private String version;
+}
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/bean/CitizenPayResponse.java b/common/src/main/java/com/supwisdom/dlpay/api/bean/CitizenPayResponse.java
new file mode 100644
index 0000000..c0b92e5
--- /dev/null
+++ b/common/src/main/java/com/supwisdom/dlpay/api/bean/CitizenPayResponse.java
@@ -0,0 +1,16 @@
+package com.supwisdom.dlpay.api.bean;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+public class CitizenPayResponse extends ApiResponse {
+  private String refno;
+  private String billno;
+  private Double amount;
+}
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/bean/OpenShopParam.java b/common/src/main/java/com/supwisdom/dlpay/api/bean/OpenShopParam.java
index 4fc1ae1..3be30ad 100644
--- a/common/src/main/java/com/supwisdom/dlpay/api/bean/OpenShopParam.java
+++ b/common/src/main/java/com/supwisdom/dlpay/api/bean/OpenShopParam.java
@@ -1,9 +1,12 @@
 package com.supwisdom.dlpay.api.bean;
 
 import com.supwisdom.dlpay.api.APIRequestParam;
+import com.supwisdom.dlpay.api.annotation.IDNoCheck;
+import com.supwisdom.dlpay.api.annotation.MobileNumber;
 import com.supwisdom.dlpay.api.annotation.Sign;
 import com.supwisdom.dlpay.api.exception.RequestParamCheckException;
 import com.supwisdom.dlpay.api.annotation.ShopType;
+import com.supwisdom.dlpay.api.util.IDTypes;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -13,6 +16,7 @@
 
 @Getter
 @Setter
+@IDNoCheck(value = IDTypes.IDTYPE_LIST, idno = "idno", idtype = "idtype", message = "证件类型错误")
 public class OpenShopParam extends APIRequestParam {
   @Sign
   @NotEmpty(message = "商户唯一号不能为空")
@@ -33,6 +37,7 @@
   @Sign
   private String idno;
   @Sign
+  @MobileNumber
   private String mobile;
   @Sign
   @Email(message = "Email 格式错误")
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/bean/OpenUserParam.java b/common/src/main/java/com/supwisdom/dlpay/api/bean/OpenUserParam.java
index 5ec9602..ceaae42 100644
--- a/common/src/main/java/com/supwisdom/dlpay/api/bean/OpenUserParam.java
+++ b/common/src/main/java/com/supwisdom/dlpay/api/bean/OpenUserParam.java
@@ -1,11 +1,13 @@
 package com.supwisdom.dlpay.api.bean;
 
 import com.supwisdom.dlpay.api.APIRequestParam;
+import com.supwisdom.dlpay.api.annotation.IDNoCheck;
 import com.supwisdom.dlpay.api.annotation.MobileNumber;
 import com.supwisdom.dlpay.api.annotation.Sex;
 import com.supwisdom.dlpay.api.annotation.Sign;
 import com.supwisdom.dlpay.api.exception.RequestParamCheckException;
 import com.supwisdom.dlpay.api.util.Constants;
+import com.supwisdom.dlpay.api.util.IDTypes;
 import lombok.Getter;
 import lombok.Setter;
 import org.apache.commons.lang3.StringUtils;
@@ -13,8 +15,10 @@
 import javax.validation.constraints.Email;
 import javax.validation.constraints.NotEmpty;
 
+
 @Setter
 @Getter
+@IDNoCheck(value = IDTypes.IDTYPE_LIST, idno = "idno", idtype = "idtype", message = "证件类型错误")
 public class OpenUserParam extends APIRequestParam {
   @Sign
   @NotEmpty(message = "用户唯一号不能为空")
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/bean/PayReverseResponse.java b/common/src/main/java/com/supwisdom/dlpay/api/bean/PayReverseResponse.java
new file mode 100644
index 0000000..2c3c819
--- /dev/null
+++ b/common/src/main/java/com/supwisdom/dlpay/api/bean/PayReverseResponse.java
@@ -0,0 +1,14 @@
+package com.supwisdom.dlpay.api.bean;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@NoArgsConstructor
+@AllArgsConstructor
+@Getter
+@Setter
+public class PayReverseResponse extends ApiResponse {
+  private String refno;
+}
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/bean/QueryTransDtlResponse.java b/common/src/main/java/com/supwisdom/dlpay/api/bean/QueryTransDtlResponse.java
new file mode 100644
index 0000000..118bd56
--- /dev/null
+++ b/common/src/main/java/com/supwisdom/dlpay/api/bean/QueryTransDtlResponse.java
@@ -0,0 +1,22 @@
+package com.supwisdom.dlpay.api.bean;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Setter
+@Getter
+@AllArgsConstructor
+@NoArgsConstructor
+public class QueryTransDtlResponse extends ApiResponse {
+  private String refno;
+  private String outTradeNo;
+  private Double amount;
+  private String status;
+  private String sourceType;
+  private String payinfo;
+  private String reverseFlag;
+  private String transdesc;
+}
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/bean/ShopResponse.java b/common/src/main/java/com/supwisdom/dlpay/api/bean/ShopResponse.java
new file mode 100644
index 0000000..25dd194
--- /dev/null
+++ b/common/src/main/java/com/supwisdom/dlpay/api/bean/ShopResponse.java
@@ -0,0 +1,15 @@
+package com.supwisdom.dlpay.api.bean;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+public class ShopResponse extends ApiResponse {
+  private Integer shopid;
+  private String shopaccno;
+}
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/bean/UserResponse.java b/common/src/main/java/com/supwisdom/dlpay/api/bean/UserResponse.java
similarity index 69%
rename from payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/bean/UserResponse.java
rename to common/src/main/java/com/supwisdom/dlpay/api/bean/UserResponse.java
index a646aed..1afe052 100644
--- a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/bean/UserResponse.java
+++ b/common/src/main/java/com/supwisdom/dlpay/api/bean/UserResponse.java
@@ -1,10 +1,14 @@
-package com.supwisdom.dlpay.paysdk.bean;
+package com.supwisdom.dlpay.api.bean;
 
+import lombok.AllArgsConstructor;
 import lombok.Getter;
+import lombok.NoArgsConstructor;
 import lombok.Setter;
 
 @Getter
 @Setter
+@AllArgsConstructor
+@NoArgsConstructor
 public class UserResponse extends ApiResponse {
   private String userid;
   private String uid;
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/util/Constants.java b/common/src/main/java/com/supwisdom/dlpay/api/util/Constants.java
index da6d48f..3c4aebe 100644
--- a/common/src/main/java/com/supwisdom/dlpay/api/util/Constants.java
+++ b/common/src/main/java/com/supwisdom/dlpay/api/util/Constants.java
@@ -3,4 +3,5 @@
 public class Constants {
   public static final String SEX_MALE = "male";
   public static final String SEX_FEMALE = "female";
+
 }
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/util/IDTypes.java b/common/src/main/java/com/supwisdom/dlpay/api/util/IDTypes.java
new file mode 100644
index 0000000..999f37f
--- /dev/null
+++ b/common/src/main/java/com/supwisdom/dlpay/api/util/IDTypes.java
@@ -0,0 +1,26 @@
+package com.supwisdom.dlpay.api.util;
+
+public enum IDTypes {
+  IDTYPE_IDCARD("idcard"), // 身份证
+  IDTYPE_PASSPORT("passport"), // 护照
+  IDTYPE_DRIVING_LICENSE("driving_license"), // 驾照
+  IDTYPE_HK_MACAU_PASS("hk_macau_pass"), // 港澳通行证
+  IDTYPE_STUDENT_IDCARD("student_idcard"), // 学生证
+  IDTYPE_OTHER("unknown"),
+  IDTYPE_LIST(new IDTypes[]{IDTYPE_IDCARD, IDTYPE_PASSPORT,
+      IDTYPE_DRIVING_LICENSE, IDTYPE_HK_MACAU_PASS, IDTYPE_STUDENT_IDCARD, IDTYPE_OTHER}); // 其它
+
+  IDTypes(Object data) {
+    this.data = data;
+  }
+
+  public String value() {
+    return this.data.toString();
+  }
+
+  public Object getData() {
+    return this.data;
+  }
+
+  private Object data;
+}
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/validator/IDNoCheckValidator.java b/common/src/main/java/com/supwisdom/dlpay/api/validator/IDNoCheckValidator.java
index 5fba275..812ad55 100644
--- a/common/src/main/java/com/supwisdom/dlpay/api/validator/IDNoCheckValidator.java
+++ b/common/src/main/java/com/supwisdom/dlpay/api/validator/IDNoCheckValidator.java
@@ -1,18 +1,41 @@
 package com.supwisdom.dlpay.api.validator;
 
 import com.supwisdom.dlpay.api.annotation.IDNoCheck;
+import com.supwisdom.dlpay.api.util.IDTypes;
+import org.apache.commons.beanutils.BeanUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import javax.validation.ConstraintValidator;
 import javax.validation.ConstraintValidatorContext;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Arrays;
 
-public class IDNoCheckValidator implements ConstraintValidator<IDNoCheck, String> {
+public class IDNoCheckValidator implements ConstraintValidator<IDNoCheck, Object> {
   private String idnoField;
   private String idtypeField;
   private String[] idtypeList;
 
   @Override
-  public boolean isValid(String value, ConstraintValidatorContext context) {
+  public boolean isValid(Object value, ConstraintValidatorContext context) {
+    try {
+      String idtype = BeanUtils.getProperty(value, idtypeField);
+      if (idtype == null) {
+        return true;
+      }
+      if (!Arrays.asList(idtypeList).contains(idtype)) {
+        return false;
+      }
+      String idno = BeanUtils.getProperty(value, idnoField);
+      if (StringUtils.isEmpty(idno)) {
+        return false;
+      }
+    } catch (IllegalAccessException e) {
+      e.printStackTrace();
+    } catch (InvocationTargetException e) {
+      e.printStackTrace();
+    } catch (NoSuchMethodException e) {
+      e.printStackTrace();
+    }
     return false;
   }
 
@@ -23,6 +46,16 @@
     if (StringUtils.isEmpty(idnoField) || StringUtils.isEmpty(idtypeField)) {
       throw new IllegalArgumentException("IDNO 和 IDType 字段必须指定");
     }
-    idtypeList = constraintAnnotation.value();
+    Object value = constraintAnnotation.value().getData();
+    if (value instanceof IDTypes[]) {
+      idtypeList = new String[((IDTypes[]) value).length];
+      for (int i = 0; i < ((IDTypes[]) value).length; ++i) {
+        idtypeList[i] = ((IDTypes[]) value)[i].value();
+      }
+    } else if (value instanceof String) {
+      idtypeList = new String[]{(String) value};
+    } else {
+      throw new IllegalArgumentException("IDTypes 类型错误");
+    }
   }
 }
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/ApiLoginHelper.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/ApiLoginHelper.java
index 3bb233c..ccd2a06 100644
--- a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/ApiLoginHelper.java
+++ b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/ApiLoginHelper.java
@@ -1,7 +1,7 @@
 package com.supwisdom.dlpay.paysdk;
 
-import com.supwisdom.dlpay.paysdk.bean.ApiLoginInitResponse;
-import com.supwisdom.dlpay.paysdk.bean.ApiLoginResponse;
+import com.supwisdom.dlpay.api.bean.ApiLoginInitResponse;
+import com.supwisdom.dlpay.api.bean.ApiLoginResponse;
 import com.supwisdom.dlpay.paysdk.proxy.ApiLoginProxy;
 import com.supwisdom.dlpay.paysdk.utils.JwtContext;
 import com.supwisdom.dlpay.paysdk.utils.Utils;
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/bean/ApiLoginInitResponse.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/bean/ApiLoginInitResponse.java
deleted file mode 100644
index 405d4ae..0000000
--- a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/bean/ApiLoginInitResponse.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.supwisdom.dlpay.paysdk.bean;
-
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-public class ApiLoginInitResponse extends ApiResponse {
-  private String timestamp;
-  private String token;
-}
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/bean/ApiLoginResponse.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/bean/ApiLoginResponse.java
deleted file mode 100644
index 787fe90..0000000
--- a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/bean/ApiLoginResponse.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.supwisdom.dlpay.paysdk.bean;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-public class ApiLoginResponse extends ApiResponse {
-  private String jwt;
-  private String appid;
-  private String expiredAt;
-
-}
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/bean/CitizenPayInitResponse.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/bean/CitizenPayInitResponse.java
deleted file mode 100644
index cf28b8b..0000000
--- a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/bean/CitizenPayInitResponse.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.supwisdom.dlpay.paysdk.bean;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-public class CitizenPayInitResponse extends ApiResponse {
-  private String refno;
-  private String billno;
-  private Double amount;
-}
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/bean/ShopResponse.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/bean/ShopResponse.java
deleted file mode 100644
index f4cec8c..0000000
--- a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/bean/ShopResponse.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.supwisdom.dlpay.paysdk.bean;
-
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter
-@Setter
-public class ShopResponse extends ApiResponse {
-  private Integer shopid;
-  private String shopaccno;
-}
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/ApiCommonProxy.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/ApiCommonProxy.java
new file mode 100644
index 0000000..47a8e53
--- /dev/null
+++ b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/ApiCommonProxy.java
@@ -0,0 +1,11 @@
+package com.supwisdom.dlpay.paysdk.proxy;
+
+import com.supwisdom.dlpay.api.bean.ApiVersionResponse;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+
+@FeignClient(name = "apiCommonProxy", url = "${payapi.url}")
+public interface ApiCommonProxy {
+  @GetMapping(value = "/api/common/version")
+  ApiVersionResponse apiVersion();
+}
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/ApiLoginProxy.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/ApiLoginProxy.java
index 22d5427..f564a00 100644
--- a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/ApiLoginProxy.java
+++ b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/ApiLoginProxy.java
@@ -1,15 +1,13 @@
 package com.supwisdom.dlpay.paysdk.proxy;
 
-import com.supwisdom.dlpay.paysdk.bean.ApiLoginInitResponse;
-import com.supwisdom.dlpay.paysdk.bean.ApiLoginResponse;
+import com.supwisdom.dlpay.api.bean.ApiLoginInitResponse;
+import com.supwisdom.dlpay.api.bean.ApiLoginResponse;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 
-import javax.servlet.http.HttpServletRequest;
-
 @FeignClient(value = "apiLoginProxy", url = "${payapi.url}")
 public interface ApiLoginProxy {
   @RequestMapping(value = "/api/auth/gettoken", method = RequestMethod.GET)
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/CitizenCardPayProxy.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/CitizenCardPayProxy.java
index d2e758f..e46d5f7 100644
--- a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/CitizenCardPayProxy.java
+++ b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/CitizenCardPayProxy.java
@@ -2,7 +2,7 @@
 
 import com.supwisdom.dlpay.api.bean.CitizenCardPayfinishParam;
 import com.supwisdom.dlpay.api.bean.CitizenCardPayinitParam;
-import com.supwisdom.dlpay.paysdk.bean.CitizenPayInitResponse;
+import com.supwisdom.dlpay.api.bean.CitizenPayResponse;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -11,8 +11,8 @@
 @FeignClient(value = "citizenCardPay", url = "${payapi.url}")
 public interface CitizenCardPayProxy {
   @RequestMapping(value = "/api/consume/citizencard/payinit", method = RequestMethod.GET)
-  CitizenPayInitResponse citizencardPayinit(@RequestBody CitizenCardPayinitParam param);
+  CitizenPayResponse citizencardPayinit(@RequestBody CitizenCardPayinitParam param);
 
   @RequestMapping(value = "/api/consume/citizencard/payfinish", method = RequestMethod.GET)
-  CitizenPayInitResponse citizencardPayFinish(@RequestBody CitizenCardPayfinishParam param);
+  CitizenPayResponse citizencardPayFinish(@RequestBody CitizenCardPayfinishParam param);
 }
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/PayReverseProxy.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/PayReverseProxy.java
deleted file mode 100644
index 827e685..0000000
--- a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/PayReverseProxy.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.supwisdom.dlpay.paysdk.proxy;
-
-import com.supwisdom.dlpay.api.bean.ConsumePayCancelParam;
-import com.supwisdom.dlpay.api.bean.ConsumePayRefundParam;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-
-import java.util.Map;
-
-@FeignClient(name = "payReverseProxy", url = "${payapi.url}")
-public interface PayReverseProxy {
-  @PostMapping("/api/consume/paycancel")
-  ResponseEntity<Map<String, String>> payCancel(@RequestBody ConsumePayCancelParam param);
-
-  @PostMapping("/api/consume/payrefund")
-  ResponseEntity<Map<String, String>> payRefund(@RequestBody ConsumePayRefundParam param);
-}
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/ShopProxy.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/ShopProxy.java
index e965ded..0184e91 100644
--- a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/ShopProxy.java
+++ b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/ShopProxy.java
@@ -2,7 +2,7 @@
 
 import com.supwisdom.dlpay.api.bean.OpenShopParam;
 import com.supwisdom.dlpay.api.bean.QueryShopParam;
-import com.supwisdom.dlpay.paysdk.bean.ShopResponse;
+import com.supwisdom.dlpay.api.bean.ShopResponse;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/TransactionProxy.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/TransactionProxy.java
new file mode 100644
index 0000000..570587a
--- /dev/null
+++ b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/TransactionProxy.java
@@ -0,0 +1,18 @@
+package com.supwisdom.dlpay.paysdk.proxy;
+
+import com.supwisdom.dlpay.api.bean.*;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+@FeignClient(name = "payTransactionProxy", url = "${payapi.url}")
+public interface TransactionProxy {
+  @PostMapping("/api/consume/paycancel")
+  PayReverseResponse payCancel(@RequestBody ConsumePayCancelParam param);
+
+  @PostMapping("/api/consume/payrefund")
+  PayReverseResponse payRefund(@RequestBody ConsumePayRefundParam param);
+
+  @PostMapping("/api/consume/queryresult")
+  QueryTransDtlResponse queryDtlResult(@RequestBody QueryDtlResultParam param);
+}
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java
index 3420e6c..ddcf198 100644
--- a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java
+++ b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java
@@ -3,7 +3,7 @@
 import com.supwisdom.dlpay.api.bean.ModifyUserParam;
 import com.supwisdom.dlpay.api.bean.OpenUserParam;
 import com.supwisdom.dlpay.api.bean.QueryUserParam;
-import com.supwisdom.dlpay.paysdk.bean.UserResponse;
+import com.supwisdom.dlpay.api.bean.UserResponse;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
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 ff65c09..bd7f8d5 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
@@ -2,10 +2,10 @@
 
 
 import com.supwisdom.dlpay.api.bean.CitizenCardPayinitParam;
+import com.supwisdom.dlpay.api.bean.CitizenPayResponse;
 import com.supwisdom.dlpay.paysdk.ApiLoginHelper;
 import com.supwisdom.dlpay.paysdk.proxy.ApiLoginProxy;
 import com.supwisdom.dlpay.paysdk.proxy.CitizenCardPayProxy;
-import com.supwisdom.dlpay.paysdk.bean.CitizenPayInitResponse;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
@@ -16,7 +16,6 @@
 import org.springframework.cloud.openfeign.FeignAutoConfiguration;
 import org.springframework.cloud.openfeign.ribbon.FeignRibbonClientAutoConfiguration;
 import org.springframework.context.annotation.ComponentScan;
-import org.springframework.test.context.TestPropertySource;
 import org.springframework.test.context.junit4.SpringRunner;
 
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -53,7 +52,7 @@
     initParam.setAmount(100);
     initParam.setTransdate("20190708");
     initParam.setTranstime("172713");
-    CitizenPayInitResponse payInit = citizenCardPayProxy.citizencardPayinit(initParam);
+    CitizenPayResponse payInit = citizenCardPayProxy.citizencardPayinit(initParam);
     assertThat("pay initialized " + payInit.getRetmsg() + payInit.getException(),
         payInit.getRetcode(), equalTo(0));
   }
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 4ecb7df..9479e50 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
@@ -42,15 +42,9 @@
     fun queryDtlResult(@RequestBody param: QueryDtlResultParam): ResponseEntity<Any> {
         consumePayService.getTransactionMainDtl(param.refno, param.billno, param.shopaccno)?.let {
             return ResponseEntity.ok(ResponseBodyBuilder.create()
-                    .data("refno", it.refno)
-                    .data("billno", it.outTradeNo)
-                    .data("amount", it.shopDtl.amount)
-                    .data("status", it.status)
-                    .data("sourcetype", it.personDtl.sourceType)
-                    .data("payinfo", it.personDtl.payinfo)
-                    .data("reverseflag", it.reverseFlag)
-                    .data("transdesc", it.shopDtl.transdesc)
-                    .success("查询成功"))
+                    .success(QueryTransDtlResponse(it.refno, it.outTradeNo, it.shopDtl.amount,
+                            it.status, it.sourceType, it.personDtl.payinfo, it.reverseFlag,
+                            it.shopDtl.transdesc), "查询成功"))
         } ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
                 .fail(TradeErrorCode.TRANSACTION_NOT_EXISTS, "流水不存在"))
     }
@@ -188,10 +182,9 @@
                     }.init(transactionService)
 
             return ResponseEntity.ok(ResponseBodyBuilder.create()
-                    .data("refno", transaction.refno)
-                    .data("billno", transaction.outTradeNo)
-                    .data("amount", transaction.shopDtl.amount)
-                    .success("交易初始化成功"))
+                    .success(CitizenPayResponse(transaction.refno,
+                            transaction.outTradeNo,
+                            transaction.shopDtl.amount), "交易初始化成功"))
         }
 
         return ResponseEntity.ok(ResponseBodyBuilder.create()
@@ -213,10 +206,9 @@
         if (code.retcode == "0") {
             transactionService.success(param.refno, "支付").let {
                 return ResponseEntity.ok(ResponseBodyBuilder.create()
-                        .data("refno", it.refno)
-                        .data("billno", it.outTradeNo)
-                        .data("amount", it.shopDtl.amount)
-                        .success("交易确认成功"))
+                        .success(CitizenPayResponse(it.refno,
+                                it.outTradeNo,
+                                it.shopDtl.amount), "交易确认成功"))
             }
 
         } else {
@@ -246,8 +238,7 @@
             }
             transactionService.success(cancelTrans.refno)
             return ResponseEntity.ok(ResponseBodyBuilder.create()
-                    .data("refno", cancelTrans.refno)
-                    .success("交易确认成功"))
+                    .success(PayReverseResponse(cancelTrans.refno), "交易确认成功"))
         } ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
                 .fail(TradeErrorCode.TRANSACTION_NOT_EXISTS, "流水不存在"))
     }
@@ -272,8 +263,7 @@
             }
             transactionService.success(refundTrans.refno)
             return ResponseEntity.ok(ResponseBodyBuilder.create()
-                    .data("refno", refundTrans.refno)
-                    .success("交易确认成功"))
+                    .success(PayReverseResponse(refundTrans.refno), "交易确认成功"))
         } ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
                 .fail(TradeErrorCode.TRANSACTION_NOT_EXISTS, "流水不存在"))
     }
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/controller/framework_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/controller/framework_controller.kt
index 3d2e5d2..a55845f 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/controller/framework_controller.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/controller/framework_controller.kt
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.framework.controller
 
 import com.jcabi.manifests.Manifests
+import com.supwisdom.dlpay.api.bean.ApiVersionResponse
 import com.supwisdom.dlpay.framework.ResponseBodyBuilder
 import org.springframework.http.ResponseEntity
 import org.springframework.web.bind.annotation.GetMapping
@@ -16,13 +17,11 @@
         return try {
             Manifests.read("Payapi-Version").let {
                 ResponseEntity.ok(ResponseBodyBuilder.create()
-                        .data("version", it)
-                        .success())
+                        .success(ApiVersionResponse(it)))
             }
         } catch (e: IllegalArgumentException) {
             ResponseEntity.ok(ResponseBodyBuilder.create()
-                    .data("version", "unknown")
-                    .success())
+                    .success(ApiVersionResponse("unknown")))
         }
     }
 }
\ No newline at end of file
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt
index 81f099d..84c0f8a 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt
@@ -1,6 +1,8 @@
 package com.supwisdom.dlpay.framework.controller
 
 import com.google.code.kaptcha.Producer
+import com.supwisdom.dlpay.api.bean.ApiLoginInitResponse
+import com.supwisdom.dlpay.api.bean.ApiLoginResponse
 import com.supwisdom.dlpay.exception.TransactionCheckException
 import com.supwisdom.dlpay.framework.ResponseBodyBuilder
 import com.supwisdom.dlpay.framework.core.JwtConfig
@@ -99,9 +101,7 @@
                 apiClientRepository.save(it)
             }
             return ResponseEntity.ok(ResponseBodyBuilder.create()
-                    .data("token", token)
-                    .data("timestamp", now)
-                    .success())
+                    .success(ApiLoginInitResponse(token, now)))
         }
     }
 
@@ -137,10 +137,8 @@
                 }
 
                 ResponseEntity.ok(ResponseBodyBuilder.create()
-                        .data("jwt", token.jwtToken)
-                        .data("appid", appid)
-                        .data("expiredAt", DateUtil.getUTCTime(token.expiration.valueInMillis))
-                        .success())
+                        .success(ApiLoginResponse(token.jwtToken,
+                                appid, DateUtil.getUTCTime(token.expiration.valueInMillis))))
             } else {
                 ResponseEntity.status(HttpStatus.UNAUTHORIZED).build()
             }
@@ -173,10 +171,8 @@
                 }
 
                 ResponseEntity.ok(ResponseBodyBuilder.create()
-                        .data("jwt", token.jwtToken)
-                        .data("appid", appid)
-                        .data("expiredAt", DateUtil.getUTCTime(token.expiration.valueInMillis))
-                        .success())
+                        .success(ApiLoginResponse(token.jwtToken,
+                                appid, DateUtil.getUTCTime(token.expiration.valueInMillis))))
             } else {
                 ResponseEntity.status(HttpStatus.UNAUTHORIZED).build()
             }
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/framework_util.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/framework_util.kt
index b25a725..1f63e38 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/framework_util.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/framework_util.kt
@@ -1,6 +1,8 @@
 package com.supwisdom.dlpay.framework
 
 import com.google.gson.Gson
+import com.supwisdom.dlpay.api.APIRequestParam
+import com.supwisdom.dlpay.api.bean.ApiResponse
 import com.supwisdom.dlpay.api.exception.RequestParamCheckException
 import com.supwisdom.dlpay.exception.TransactionCheckException
 import com.supwisdom.dlpay.exception.TransactionException
@@ -36,6 +38,12 @@
         return build()
     }
 
+    fun success(bean: ApiResponse, msg: String? = null): ApiResponse {
+        bean.retcode = 0
+        bean.retmsg = msg ?: "成功"
+        return bean
+    }
+
     fun fail(code: Int, msg: String): Map<String, Any> {
         if (code == 0) {
             throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, "错误码未正确定义")
@@ -44,6 +52,15 @@
         return build()
     }
 
+    fun fail(bean: ApiResponse, code: Int, msg: String): ApiResponse {
+        if (code == 0) {
+            throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, "错误码未正确定义")
+        }
+        bean.retcode = code
+        bean.retmsg = msg
+        return bean
+    }
+
     fun exception(code: Int, exception: Exception, msg: String? = null): Map<String, Any> {
         data("exception", exception.message ?: "$exception")
         result(code, msg)
@@ -56,18 +73,39 @@
         return build()
     }
 
+    fun exception(bean: ApiResponse, code: Int, cause: Throwable?, msg: String? = null): ApiResponse {
+        bean.retcode = code
+        bean.retmsg = msg ?: "失败"
+        bean.exception = cause?.message ?: "unknown exception"
+        return bean
+    }
+
     fun transException(exception: TransactionException, msg: String): Map<String, Any> {
         data("exception", exception.message!!)
         result(exception.code(), "$msg - [${exception.message}]")
         return build()
     }
 
+    fun transException(bean: ApiResponse, exception: TransactionException, msg: String): ApiResponse {
+        bean.retcode = exception.code()
+        bean.retmsg = "$msg - [${exception.message}]"
+        bean.exception = "$exception"
+        return bean
+    }
+
     fun requestException(exception: RequestParamCheckException, msg: String): Map<String, Any> {
         data("exception", exception.message!!)
         result(exception.errCode, "$msg - [${exception.message}]")
         return build()
     }
 
+    fun requestException(bean: ApiResponse, exception: RequestParamCheckException, msg: String): ApiResponse {
+        bean.retcode = exception.errCode
+        bean.retmsg = "$msg - [${exception.message}]"
+        bean.exception = "$exception"
+        return bean
+    }
+
     fun data(name: String, value: Any): ResponseBodyBuilder {
         if (name in RESERVED_KEY) {
             throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, "返回值 <$name> 为保留值，不能使用")
