import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidKeyException;
import java.nio.charset.StandardCharsets
import java.util.Base64
def requestMethod = "GET"
def path="/jdyconnector/app_management/kingdee_auth_token"
def params=["app_signature":"MzZlYTk0ODk4MWZlNjdiODNmNWU4YzViNzYxNGM5MTFlOGJkN2NjMzk0MTJkZGNhZGM0NzZhN2YxZDJmOTlkZA==","app_key":"bVZgAZOv1"]
params.each{key,value->
params[key] = URLEncoder.encode(URLEncoder.encode(params[key], 'UTF-8'), 'UTF-8');
}
def encodedUrl = URLEncoder.encode(path, 'UTF-8');
def sortParamsList = params.entrySet().toSorted() {it.key};
def paramResult = sortParamsList.join('&')
def timestamp = 1670305063559
def hash = requestMethod+"\n"+encodedUrl+"\n"+paramResult+"\nx-api-nonce:4427456950"+"\nx-api-timestamp:"+timestamp+"\n"
println(hash)
def hashResult = hmac_sha256(hash,"f2adcfef73369bfc4e1384677d38a0ff").encodeHex().toString()
byte[] bytesToEncode = hashResult.getBytes(StandardCharsets.UTF_8)
String encodedString = Base64.getEncoder().encodeToString(bytesToEncode)
println(encodedString)
def hmac_sha256(String data,String secretKey) {
try {
Mac mac = Mac.getInstance("HmacSHA256")
SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getBytes(), "HmacSHA256")
mac.init(secretKeySpec)
byte[] digest = mac.doFinal(data.getBytes())
return digest
} catch (InvalidKeyException e) {
throw new RuntimeException("Invalid key exception while converting to HMac SHA256")
}
}