前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >支付宝网站即时支付开发,MD5加签名规则处理代码展示

支付宝网站即时支付开发,MD5加签名规则处理代码展示

作者头像
小勇DW3
发布2019-05-17 12:01:27
7520
发布2019-05-17 12:01:27
举报
文章被收录于专栏:小勇DW3小勇DW3

一、如果传入进来的Object对象,最后生成制定格式的字符换 text

代码语言:javascript
复制
list拼接成字符串,map中的所有元素,按照“参数=参数值”的模式用“&”字符拼接成字符串,list的元素之间用“|”字符拼接
代码语言:javascript
复制
private static String getSignText(Object obj) {
    if (obj instanceof Collection) {
        return getListSignText((Collection<Object>) obj);
    } else if (obj instanceof Map) {
        return getMapSignText((Map) obj);
    } else if (obj instanceof Number) {
        return obj.toString();
    } else if (obj != null) {
        return obj.toString();
    } else {
        return "";
    }
}

 对list对象继续进行递归处理:

代码语言:javascript
复制
    private static String getListSignText(Collection list) {
        StringBuffer paramBuffer = new StringBuffer();
        for (Object obj : list) {
            paramBuffer.append(getSignText(obj)).append("|");
        }
        return paramBuffer.substring(0, paramBuffer.length() - 1);
    }

  最终对map对象的处理:

代码语言:javascript
复制
private static String getMapSignText(Map map) {
        String[] keys = (String[]) map.keySet().toArray(new String[0]);
        // 1. 参数名按照ASCII码表升序排序
        Arrays.sort(keys);
        // 2. 按照排序拼接参数名与参数值
        StringBuffer paramBuffer = new StringBuffer();
        for (String key : keys) {
            paramBuffer.append(key).append("=").append(getSignText(map.get(key)) == null ? "" : getSignText(map.get(key))).append("&");
        }
        return paramBuffer.substring(0, paramBuffer.length() - 1);
    }
代码语言:javascript
复制
二、对制定格式的 text  进行 MD5 加密:
代码语言:javascript
复制
DigestUtils.md5Hex(text.getBytes(charsetName));
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档