增加 readme
diff --git a/java/build.gradle b/java/build.gradle
index 8d5987f..15f4636 100644
--- a/java/build.gradle
+++ b/java/build.gradle
@@ -12,7 +12,8 @@
 }
 
 dependencies {
-   implementation 'commons-codec:commons-codec:1.15' 
+    implementation 'commons-codec:commons-codec:1.15' 
+    implementation 'com.eatthepath:java-otp:0.2.0'
 }
 
 application {
diff --git a/java/src/main/java/com/supwisdom/dlsmk/DLSMK.java b/java/src/main/java/com/supwisdom/dlsmk/DLSMK.java
index 419d72f..916d7b2 100644
--- a/java/src/main/java/com/supwisdom/dlsmk/DLSMK.java
+++ b/java/src/main/java/com/supwisdom/dlsmk/DLSMK.java
@@ -1,8 +1,15 @@
 package com.supwisdom.dlsmk;
 
-import java.util.Map;
+import com.eatthepath.otp.TimeBasedOneTimePasswordGenerator;
+
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.time.Duration;
+import java.time.Instant;
 import java.util.HashMap;
-import org.apache.commons.codec.binary.Base64;
+import java.util.Map;
 
 public class DLSMK {
     static byte[] decodeHex(String hex) {
@@ -26,12 +33,14 @@
     public static void main(String[] args) {
         System.setProperty("java.library.path" , ".");
         System.out.println("Version " + DLSMKQrCode.version());
-        String key = "wDp3_3NPEi-R0peokVv010GkDk1mRTp3tUB_lCEVRAAABQM";
+        String key = "wDp3_3NPEi-R0peokVv010GkDk1mRTp3tUB_lCEVRAAABQo=";
 
-        String qrcode = "Ntd0wHly2IiweNP61JiewTmZ27JM3Vs-vjZaz45Ly8FoE5mB8QfvJBNJOGYsDQsFBrJqutQxVnyGfWcCbocIbWe2MwOdnfjZLLjAMZKQe_cDKntkfU2rJIo93IyS4TdJ";
+        long systimeMillis = 1604469519L * 1000;
+        String qrcode = "Szgp1QkGFy0DJ6mPVg4wMuOE5XuSe7eZrocdPDAs_iq_H7xzb10vQJwRfk6hn6-_fa6SRKRKd00gExbAShJOTgAj2urAPuQm_NxATJs26I4u6khR74iK7oubHjY1Z6qg";
 
         Map<Object, Object> result = new HashMap();
-        if (DLSMKQrCode.decode(key, qrcode, 0L, result)) {
+        long curr = System.currentTimeMillis();
+        if (DLSMKQrCode.decode(key, qrcode, systimeMillis / 1000 - curr / 1000 , result)) {
             System.out.println("Decode OK");
             String cardno = result.get("cardno").toString();
             System.out.format("cardno : %s\n", cardno);
@@ -41,7 +50,10 @@
             System.out.println();
 
             result.clear();
-            DLSMKQrCode.genTac(sign, cardno, 100, "20201102164539", result);
+            int amount = 100;
+            String dt = "20201102164539";
+            DLSMKQrCode.genTac(sign, cardno, amount, dt, result);
+            System.out.format("transaction amount <%d> datetime <%s>\n", amount, dt);
             System.out.format("tac : %s", result.get("tac"));
             System.out.println();
         } else {