
com.sc.channel.wxpay.utils.WecatSignUtil Maven / Gradle / Ivy
The newest version!
package com.sc.channel.wxpay.utils;
import com.sc.utils.beanmap.BeanUtil;
import com.sc.utils.utils.xml.XmlUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
public class WecatSignUtil {
public static final Log logger = LogFactory.getLog(WecatSignUtil.class);
public static String sign(Object object, String key) {
if (object == null) {
return null;
}
Map data = BeanUtil.object2Map(object);
if (data == null || data.isEmpty()) {
return null;
}
return sign(data, key);
}
public static String sign(Map data, String key) {
if (data == null || data.isEmpty()) {
return null;
}
StringBuilder buf = new StringBuilder();
TreeMap map = new TreeMap(data);
Iterator> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = it.next();
Object k = entry.getKey();
if ("class".equals(k) || "key".equals(k) || "sign".equals(k)) {
continue;
}
Object v = entry.getValue();
if (v == null || "".equals(v.toString())) {
continue;
}
buf.append(k);
buf.append("=");
buf.append(v);
buf.append("&");
}
buf.append("key=" + key);
logger.debug(buf.toString());
String sign = EncryptUtil.md5(buf.toString()).toUpperCase();
return sign;
}
public static Map doVerifySign(String resultStr, String key) {
Map resultMap = XmlUtil.parseXml(resultStr);
String resultSign = sign(resultMap, key);
if (resultMap.get("sign") == null || !resultMap.get("sign").equals(resultSign)) {
System.out.println("sign is not correct, " + resultMap.get("sign") + " " + resultSign);
throw new RuntimeException("签名校验不通过");
}
return resultMap;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy