src/com/tm/common/wechat/pay/util/SignUtil.java
(开头部分) 1KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
package com.tm.common.wechat.pay.util;
import java.util.Map;
import java.util.TreeMap;
import java.util.Map.Entry;
/**
* @author fuwei
* 签名
*/
public class SignUtil {
/**
* @param params 参数集
* @param paternerKey 秘钥
* @return
*/
public static String createSign(Map<String, Object> params){
String stringSignTemp = packageSign(params) + "&key=" + WeiXinConfig.paternerKey;
return Md5Util.md5(stringSignTemp);
}
/**
* @param params
* @return
* 将参数集转为 &x=a&x=b&x=c ...格式,满足微信加密要求
*/
protected static String packageSign(Map<String, Object> params) {
// 先将参数以其参数名的字典序升序进行排序
TreeMap<String, Object> sortedParams = new TreeMap<String, Object>(params);
// 遍历排序后的字典,将所有参数按"key=value"格式拼接在一起
StringBuilder sb = new StringBuilder();
boolean first = true;
for (Entry<String, Object> param : sortedParams.entrySet()) {
String value = param.getValue()+"";
if (isBlank(value)) {
continue;
}
if (first) {
first = false;
} else {
sb.append("&");
}
sb.append(param.getKey()).append("=");
sb.append(value);
}
return sb.toString();
}
/**
* @param params
* @return
* map转为xml
*/
public static String toXml(Map<String, String> params) {
StringBuilder xml = new StringBuilder();
xml.append("<xml>");
for (Entry<String, String> entry : params.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
// 略过空值
后面还有 12 行代码,购买后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
