/**
* 根据ip地址判断是否来之支付宝的ip
* @param ip
* @return
* @throws AlipayException
*/
public static boolean checkIsAlipayIp(String checkIp) throws AlipayException{
Pattern pattern = Pattern.compile("\\b((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\.((?!\\d\\d\\d)\\d+|1\\d\\d|2[0-4]\\d|25[0-5])\\b");
Matcher matcher = pattern.matcher(checkIp);
if(!matcher.matches()){
throw new AlipayException(AlipayExceptionConstants.IP_ADDRESS_NOT_MATCH, checkIp);
}
long cur = getIpNum(checkIp);
for(AlipayIpRegionEnum e:AlipayIpRegionEnum.values()){
long start = getIpNum(e.getStartIp());
long end = getIpNum(e.getEndIp());
if(cur>=start && cur<=end){
return true;
}
}
return false;
}
public static long getIpNum(String ipAddress){
String[] ip = ipAddress.split("\\.");
return Long.parseLong(ip[0]) * 256 * 256 * 256 + Long.parseLong(ip[1]) * 256 * 256 + Long.parseLong(ip[2]) * 256 + Long.parseLong(ip[3]);
}