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 积分,解读结果公开显示在下面。

还没有人解读过这个文件。