/**
* @param map Request Body
* @param signKey
* @return
*/
public static String createSign(Map<String, Object> map, String signKey) {
Set<String> kyes = new TreeSet<>(map.keySet());
StringBuilder stringBuilder = new StringBuilder();
Object v;
for (String key : kyes) {
v = map.get(key);
if (ToolUtil.isNotEmpty(v) && !"sign".equals(key)) {
stringBuilder.append(key).append("=").append(v).append("&");
}
}
stringBuilder.setLength(stringBuilder.length() - 1);
String str = stringBuilder.();
log.info("String after parameter assembly:{}", str);
String base64Str = Base64.encode(str);
log.info("Encrypted String:{}", base64Str);
log.info("signKey:{}", signKey);
String sign = MD5Util.encrypt(base64Str + signKey);
log.info("Generated Signature:{}", sign);
return sign;
}
protected String SIGN_KEY = "F50E217D0D7447DC9B6A9F87806F41AC";
protected String MERCHANT_NO = "3800068";
/**
* Send request, and encapsulate encrypted and signed data
*
* @param url
* @param args
*/
protected String sendRequest(String url, Object args) {
//The first 16 digits are the signature key
String signKey = SIGN_KEY.substring(0, 16);
//The last 16 digits are AES keys
String encryptKey = SIGN_KEY.substring(16);
OpenApiReq param = new OpenApiReq();
param.setMerchantNo(MERCHANT_NO);
param.setData(AgentSignUtil.encrypt(args, encryptKey));
param.setSign(AgentSignUtil.createSign(param, signKey));
System.out.println("Request URL:"+url+";Request Body:"+JSONObject.toJSONString(param));
String result = HttpUtil.post(url, JSONObject.toJSONString(param));
System.out.println("Request Result:"+result);
return result;
}