diff --git a/payapi-sdk/build.gradle b/payapi-sdk/build.gradle
index f77566a..1f3cc9c 100644
--- a/payapi-sdk/build.gradle
+++ b/payapi-sdk/build.gradle
@@ -1,5 +1,6 @@
 plugins {
     id 'java'
+    id 'maven-publish'
     id 'org.springframework.boot'
     id "com.palantir.git-version"
 }
@@ -7,6 +8,37 @@
 
 apply plugin: 'io.spring.dependency-management'
 
+sdkVersion = gitVersion()
+
+publishing {
+    publications {
+        mavenJava(MavenPublication) {
+            groupId = project.group
+            artifactId = 'payapi-sdk'
+            version = sdkVersion
+            from components.java
+        }
+    }
+    repositories {
+        maven {
+            // change URLs to point to your repos, e.g. http://my.org/repo
+            def releasesRepoUrl = "http://ykt-nx.supwisdom.com/repository/ecard-repo/"
+            def snapshotsRepoUrl = "http://ykt-nx.supwisdom.com/repository/ecard-repo/snapshot/"
+            url = version.endsWith('dirty') ? snapshotsRepoUrl : releasesRepoUrl
+            credentials(PasswordCredentials) {
+                username = nxUser
+                password = nxPassword
+            }
+        }
+    }
+}
+
+jar {
+    manifest {
+        attributes('Payapi-SDK-Version': sdkVersion)
+    }
+}
+
 dependencies {
     implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
     implementation 'org.springframework.boot:spring-boot-starter-data-redis'
@@ -16,4 +48,12 @@
 
     implementation 'org.springframework.cloud:spring-cloud-dependencies:Finchley.SR3'
     implementation 'org.springframework.cloud:spring-cloud-starter-openfeign:2.1.2.RELEASE'
+
+    implementation 'javax.servlet:javax.servlet-api:4.0.1'
+
+    testImplementation 'org.springframework:spring-test'
+    testImplementation 'org.springframework.boot:spring-boot-test'
+    testImplementation 'junit:junit:4.12'
+    testImplementation project(':common')
+
 }
\ No newline at end of file
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/ApiLoginProxy.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/ApiLoginProxy.java
new file mode 100644
index 0000000..efb2afd
--- /dev/null
+++ b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/ApiLoginProxy.java
@@ -0,0 +1,31 @@
+package com.supwisdom.dlpay.paysdk;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.http.ResponseEntity;
+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;
+import java.util.Map;
+
+@FeignClient(value = "apiLoginProxy", url = "${payapi.url}")
+public interface ApiLoginProxy {
+  @RequestMapping(value = "/api/auth/gettoken", method = RequestMethod.GET)
+  ResponseEntity<Map<String, String>> loginInit(@RequestParam("appid") String appid);
+
+  @RequestMapping(value = "/api/auth/gettoken/{clientid}", method = RequestMethod.GET)
+  ResponseEntity<Map<String, String>> loginInitWithClientId(@RequestParam("appid") String appid,
+                                       @PathVariable(value = "clientid") String clientid);
+
+  @RequestMapping(value = "/api/auth/authentication", method = RequestMethod.GET)
+  ResponseEntity<Map<String, String>> login(@RequestParam("appid") String appid, @RequestParam("secret") String secret);
+
+  @RequestMapping(value = "/api/auth/authentication/{clientid}", method = RequestMethod.GET)
+  ResponseEntity<Map<String, String>> loginWithClientId(@RequestParam("appid") String appid, @RequestParam("secret") String secret,
+                                   @PathVariable(value = "clientid") String clientid);
+
+  @RequestMapping(value = "/api/auth/refresh", method = RequestMethod.GET)
+  ResponseEntity<Map<String, String>> refresh(HttpServletRequest request);
+}
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/CitizenCardPay.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/CitizenCardPay.java
deleted file mode 100644
index f815fe1..0000000
--- a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/CitizenCardPay.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.supwisdom.dlpay.paysdk;
-
-import com.supwisdom.dlpay.api.bean.CitizenCardPayfinishParam;
-import com.supwisdom.dlpay.api.bean.CitizenCardPayinitParam;
-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;
-
-@FeignClient(value = "citizenCardPay", url = "${payapi.url}")
-public interface CitizenCardPay {
-  @PostMapping("/api/consume/citizencard/payinit")
-  ResponseEntity citizencardPayinit(@RequestBody CitizenCardPayinitParam param);
-
-  @PostMapping("/api/consume/citizencard/payfinish")
-  ResponseEntity citizencardPayinit(@RequestBody CitizenCardPayfinishParam param);
-}
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/CitizenCardPayProxy.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/CitizenCardPayProxy.java
new file mode 100644
index 0000000..c5e38b1
--- /dev/null
+++ b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/CitizenCardPayProxy.java
@@ -0,0 +1,20 @@
+package com.supwisdom.dlpay.paysdk;
+
+import com.supwisdom.dlpay.api.bean.CitizenCardPayfinishParam;
+import com.supwisdom.dlpay.api.bean.CitizenCardPayinitParam;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import java.util.Map;
+
+@FeignClient(value = "citizenCardPay", url = "${payapi.url}")
+public interface CitizenCardPayProxy {
+  @RequestMapping(value = "/api/consume/citizencard/payinit", method = RequestMethod.GET)
+  ResponseEntity<Map<String, String>> citizencardPayinit(@RequestBody CitizenCardPayinitParam param);
+
+  @RequestMapping(value = "/api/consume/citizencard/payfinish", method = RequestMethod.GET)
+  ResponseEntity<Map<String, String>> citizencardPayFinish(@RequestBody CitizenCardPayfinishParam param);
+}
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/PayAPIRequestInterceptor.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/PayAPIRequestInterceptor.java
new file mode 100644
index 0000000..305c665
--- /dev/null
+++ b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/PayAPIRequestInterceptor.java
@@ -0,0 +1,18 @@
+package com.supwisdom.dlpay.paysdk;
+
+import com.supwisdom.dlpay.paysdk.utils.Constants;
+import feign.RequestInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
+
+@Component
+public class PayAPIRequestInterceptor {
+  @Bean
+  public RequestInterceptor headerInterceptor() {
+    return requestTemplate -> {
+      // 小示例，没什么卵用
+      requestTemplate.header(Constants.HEADER_TENANT_ID, "{tenantid}");
+    };
+  }
+}
+
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/PayReverseProxy.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/PayReverseProxy.java
new file mode 100644
index 0000000..fc2ad65
--- /dev/null
+++ b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/PayReverseProxy.java
@@ -0,0 +1,19 @@
+package com.supwisdom.dlpay.paysdk;
+
+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/YktPayProxy.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/YktPayProxy.java
new file mode 100644
index 0000000..238b008
--- /dev/null
+++ b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/YktPayProxy.java
@@ -0,0 +1,19 @@
+package com.supwisdom.dlpay.paysdk;
+
+import com.supwisdom.dlpay.api.bean.CitizenCardPayfinishParam;
+import com.supwisdom.dlpay.api.bean.YktCardPayinitParam;
+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 = "yktPayProxy", url = "${payapi.url}")
+public interface YktPayProxy {
+  @PostMapping("/api/consume/ykt/payinit")
+  ResponseEntity<Map<String, String>> yktPayInit(@RequestBody YktCardPayinitParam param);
+
+  @PostMapping("/api/consume/ykt/payfinish")
+  ResponseEntity<Map<String, String>> yktPayFinish(@RequestBody CitizenCardPayfinishParam param);
+}
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/utils/Constants.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/utils/Constants.java
new file mode 100644
index 0000000..ba565ee
--- /dev/null
+++ b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/utils/Constants.java
@@ -0,0 +1,5 @@
+package com.supwisdom.dlpay.paysdk.utils;
+
+public class Constants {
+  public static final String HEADER_TENANT_ID = "X-TENANT-ID";
+}
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
new file mode 100644
index 0000000..76407f5
--- /dev/null
+++ b/payapi-sdk/src/test/java/com/supwisdom/dlpay/paysdktest/CitizenCardPayProxyTest.java
@@ -0,0 +1,49 @@
+package com.supwisdom.dlpay.paysdktest;
+
+
+import com.supwisdom.dlpay.paysdk.ApiLoginProxy;
+import com.supwisdom.dlpay.paysdk.CitizenCardPayProxy;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
+import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.cloud.netflix.ribbon.RibbonAutoConfiguration;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.cloud.openfeign.FeignAutoConfiguration;
+import org.springframework.cloud.openfeign.ribbon.FeignRibbonClientAutoConfiguration;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.http.ResponseEntity;
+import org.springframework.test.context.junit4.SpringRunner;
+
+
+@RunWith(SpringRunner.class)
+@SpringBootTest(properties = {
+    "payapi.url=http://localhost:8080/payapi"},
+    classes = CitizenCardPayProxyTest.class)
+@ImportAutoConfiguration({RibbonAutoConfiguration.class,
+    FeignRibbonClientAutoConfiguration.class, FeignAutoConfiguration.class,
+    HttpMessageConvertersAutoConfiguration.class})
+@EnableFeignClients(basePackages = "com.supwisdom.dlpay.paysdk")
+@ComponentScan(basePackages = {"com.supwisdom.dlpay.paysdk"})
+public class CitizenCardPayProxyTest {
+  private final static String appid = "700001";
+
+  private final static String tenantId = "{tenant_id}";
+
+  @Autowired
+  private ApiLoginProxy apiLoginProxy;
+
+  @Autowired
+  private CitizenCardPayProxy citizenCardPayProxy;
+
+  @org.junit.Test
+  public void citizencardPayinit() {
+    ResponseEntity loginInit = apiLoginProxy.loginInit(appid);
+    System.out.println("Data " + loginInit.getBody());
+  }
+
+  public static void main(String[] args) {
+
+  }
+}
