1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package com.pj.api.jh.utils;
- import cn.hutool.core.util.StrUtil;
- import cn.hutool.crypto.SecureUtil;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.stereotype.Component;
- import java.util.Map;
- import java.util.SortedMap;
- import java.util.TreeMap;
- /**
- * Created with IntelliJ IDEA.
- *
- * @Auther: lzm
- */
- @Component
- @Slf4j
- public class MerchantApiUtil {
- /**
- * 获取参数签名
- *
- * @param paramMap 签名参数
- * @param paySecret 签名密钥
- * @return
- */
- public static String getSign(Map<String, Object> paramMap, String paySecret) {
- SortedMap<String, Object> smap = new TreeMap<String, Object>(paramMap);
- if (smap.get("sign") != null) {
- smap.remove("sign");
- }
- StringBuilder stringBuffer = new StringBuilder();
- for (Map.Entry<String, Object> m : smap.entrySet()) {
- Object value = m.getValue();
- if (value != null && StrUtil.isNotBlank(String.valueOf(value))) {
- stringBuffer.append(m.getKey()).append("=").append(value).append("&");
- }
- }
- stringBuffer.delete(stringBuffer.length() - 1, stringBuffer.length());
- String argPreSign = stringBuffer.append("&paySecret=").append(paySecret).toString();
- log.info("待签名数据:" + argPreSign);
- return SecureUtil.md5(argPreSign).toUpperCase();
- }
- /**
- * 验证商户签名
- *
- * @param paramMap 签名参数
- * @param paySecret 签名私钥
- * @param signStr 原始签名密文
- * @return
- */
- public static boolean isRightSign(Map<String, Object> paramMap, String paySecret, String signStr) {
- if (StrUtil.isBlank(signStr)) {
- return false;
- }
- String sign = getSign(paramMap, paySecret);
- if (signStr.equals(sign)) {
- return true;
- } else {
- return false;
- }
- }
- }
|