优化
diff --git a/payapi-common/build.gradle b/payapi-common/build.gradle
index d0cdb6d..a1776a5 100644
--- a/payapi-common/build.gradle
+++ b/payapi-common/build.gradle
@@ -36,6 +36,7 @@
     implementation 'javax.validation:validation-api:2.0.1.Final'
     implementation 'javax.servlet:javax.servlet-api:4.0.1'
     implementation 'commons-beanutils:commons-beanutils:1.9.3'
+    implementation 'commons-codec:commons-codec:1.13'
     implementation('org.springframework.boot:spring-boot-starter-validation:2.1.6.RELEASE')
 
     implementation 'org.hibernate:hibernate-validator:6.0.2.Final'
diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/util/HMACUtil.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/util/HMACUtil.java
index f268646..06d7277 100644
--- a/payapi-common/src/main/java/com/supwisdom/dlpay/api/util/HMACUtil.java
+++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/util/HMACUtil.java
@@ -1,29 +1,17 @@
 package com.supwisdom.dlpay.api.util;
 
-import javax.crypto.Mac;
-import javax.crypto.spec.SecretKeySpec;
+import org.apache.commons.codec.binary.Hex;
+import org.apache.commons.codec.digest.HmacAlgorithms;
+import org.apache.commons.codec.digest.HmacUtils;
 
 public class HMACUtil {
   public static String sha256HMAC(String message, String secret) {
-    String hash = "";
-    try {
-      Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
-      SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
-      sha256_HMAC.init(secret_key);
-      byte[] bytes = sha256_HMAC.doFinal(message.getBytes());
-      hash = byteArrayToHexString(bytes);
-      System.out.println(hash);
-    } catch (Exception e) {
-      System.out.println("Error HmacSHA256 ===========" + e.getMessage());
-    }
-    return hash;
+    byte[] bytes = HmacUtils.getInitializedMac(HmacAlgorithms.HMAC_SHA_256, secret.getBytes())
+        .doFinal(message.getBytes());
+    return Hex.encodeHexString(bytes, true);
   }
 
   private static String byteArrayToHexString(byte[] bytes) {
-    StringBuilder builder = new StringBuilder();
-    for (byte b : bytes) {
-      builder.append(String.format("%02x", ((int) b) & 0xFF));
-    }
-    return builder.toString();
+    return Hex.encodeHexString(bytes, true);
   }
 }