编辑代码

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidKeyException;
import java.nio.charset.StandardCharsets
import java.util.Base64

/**
    自定义入参:requestMethod:请求头(大写)
*/

def requestMethod = "GET"
def path="/jdyconnector/app_management/kingdee_auth_token"
def params=["app_signature":"MzZlYTk0ODk4MWZlNjdiODNmNWU4YzViNzYxNGM5MTFlOGJkN2NjMzk0MTJkZGNhZGM0NzZhN2YxZDJmOTlkZA==","app_key":"bVZgAZOv1"]

//对每个路径参数进行两次url编码
params.each{key,value->
    params[key] = URLEncoder.encode(URLEncoder.encode(params[key], 'UTF-8'), 'UTF-8');
}

//对请求路径进行url编码
def encodedUrl = URLEncoder.encode(path, 'UTF-8');

//对对象中的key进行ascii排序,输出数组
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)
//println(result)

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")
    }
}