签名规则
1、线下分配appid和appsecret,针对不同的调用方分配不同的appid和appsecret
2、加入timestamp(时间戳),10分钟内数据有效
3、加入流水号nonce(防止重复提交),至少为10位。
4、加入signature,所有数据的签名信息。
1.pom
<!--DigestUtils依赖-->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
2.签名生成工具类
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.util.StringUtils;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.TreeMap;
public class SignUtils {
private SignUtils() {
}
public static String getTimestamp() {
//生成时间戳
long timestampLong = System.currentTimeMillis();
String timestampStr = String.valueOf(timestampLong);
return timestampStr;
}
public static String getNonceStr(int length) {
//生成随机字符串
String str = "zxcvbnmlkjhgfdsaqwertyuiopQWERTYUIOPASDFGHJKLZXCVBNM1234567890";
Random random = new Random();
StringBuffer randomStr = new StringBuffer();
// 设置生成字符串的长度,用于循环
for (int i = 0; i < length; ++i) {
//从62个的数字或字母中选择
int number = random.nextInt(62);
//将产生的数字通过length次承载到sb中
randomStr.append(str.charAt(number));
}
//将承载的字符转换成字符串
return randomStr.