微信字典排序java_【支付宝,微信支付必备】Java实现url参数按照参数名ASCII码从小到大排序(字典序)...
/**
*
* 方法用途: 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序),并且生成url参数串
* 实现步骤:
*
* @param paraMap 要排序的Map对象
* @param urlEncode 是否需要URLENCODE
* @param keyToLower 是否需要将Key转换为全小写
* true:key转化成小写,false:不转化
* @return
*/
public static String formatUrlMap(Map paraMap, boolean urlEncode, boolean keyToLower)
{
String buff = "";
Map tmpMap = paraMap;
try
{
List> infoIds = new ArrayList>(tmpMap.entrySet());
// 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序)
Collections.sort(infoIds, new Comparator>()
{
@Override
public int compare(Map.Entry o1, Map.Entry o2)
{
return (o1.getKey()).toString().compareTo(o2.getKey());
}
});
// 构造URL 键值对的格式
StringBuilder buf = new StringBuilder();
for (Map.Entry item : infoIds)
{
if (StringUtils.isNotBlank(item.getKey()))
{
String key = item.getKey();
String val = item.getValue();
if (urlEncode)
{
val = URLEncoder.encode(val, "utf-8");
}
if (keyToLower)
{
buf.append(key.toLowerCase() + "=" + val);
} else
{
buf.append(key + "=" + val);
}
buf.append("&");
}
}
buff = buf.toString();
if (buff.isEmpty() == false)
{
buff = buff.substring(0, buff.length() - 1);
}
} catch (Exception e)
{
return null;
}
return buff;
}
DEMO演示
package com.zhiweism.easemob.api;
import java.util.HashMap;
import java.util.Map;
import com.zhiweism.util.Util;
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
//字典序列排序
Map paraMap = new HashMap();
paraMap.put("total_fee","200");
paraMap.put("appid", "wxd678efh567hg6787");
paraMap.put("body", "腾讯充值中心-QQ会员充值");
paraMap.put("out_trade_no","20150806125346");
String url = Util.formatUrlMap(paraMap, true, true);
System.out.println(url);
}
}控制台输出
appid=wxd678efh567hg6787&body=%E8%85%BE%E8%AE%AF%E5%85%85%E5%80%BC%E4%B8%AD%E5%BF%83-QQ%E4%BC%9A%E5%91%98%E5%85%85%E5%80%BC&out_trade_no=20150806125346&total_fee=200
微信字典排序java_【支付宝,微信支付必备】Java实现url参数按照参数名ASCII码从小到大排序(字典序)...相关推荐
- PHP 参数名ASCII码从小到大排序(字典序)
function ASCII($params = array()){//ksort()对数组按照键名进行升序排序ksort($params);//reset()内部指针指向数组中的第一个元素reset ...
- ASCII码从小到大排序(字典序)
签名生成的通用步骤如下: 设所有发送或者接收到的数据为集合M,将集合M内的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=valu ...
- C# 参数按照ASCII码从小到大排序(字典序)
在对接第三方支付的时候,第三方会要求参数按照ASCII码从小到大排序.如下: public static void requestPay(){Dictionary<string, string& ...
- acill排序 java_Map集合按照ASCII码从小到大(字典序)排序--JAVA
以下代码:将传参按照ASCII 码字典序排序,并将生成的字符串进行MD5加密 /** * Description:MD5工具生成token * @param value * @return */ pu ...
- java ascii码从小到大排序_待签名参数按照字段名的ascii码从小到大排序 怎么理解...
展开全部 private String getSign(Map params) { Map sortMap = new TreeMap(); sortMap.putAll(params); // 以k ...
- C# 参数签名字符串按 ASCII码排序,注意其中的坑
参数签名中通常是按键值对中键名称的ASCII按从小到大的顺序排序后进行hash为签名字符串.不要直接使用 SortedDictionary<string, string> 有坑的,他是按数 ...
- alipay 证书 java_支付宝 APP支付(证书)方式遇到的问题和解决办法
最近在做支付宝的支付功能,遇到了一些问题记录一下,方便查阅和遇到同样问题的人: 这个错误遇到的应该都比较多吧: 这个问题发生的原因是: 1.私钥是用文件路径方式请求的(建议使用密文方式) 并且 key ...
- 支付宝APP支付(基于Java实现支付宝APP支付)
贴一下支付核心代码,以供后续参考: 业务层 import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; ...
- 支付宝APP支付 (JAVA生成支付信息,uniapp拉起支付宝支付)
目录 支付APP支付 参数配置 方法配置 支付APP支付 根据接口加签方式自行选择使用密钥或者证书 (注:支付宝有些接口会说明只能使用证书) 参数配置 package com.pepay.api.al ...
最新文章
- 基于小波变换的图像压缩解压缩仿真
- pyspider 连接mysql_pyspider 导入模块报错 提示 No module named mysqldb
- Primefaces dataTable设置某个cell的样式问题
- 华为P40系列发布!新机皇临世,售价首次过万!
- (日常搬砖)voc(xml)格式的标注转换为coco(json)格式
- cloud-api-commons抽取公共类
- Python数据结构中包含中文时在Windows下正常输出
- DSOFramer使用
- 论文笔记:3DMM(ACM1999)
- UML(Unified Modeling Language) 统一建模语言
- CentOs7下Zabbix安装教程——zabbix server安装
- 左程云 Java 笔记--二叉树
- python为什么是蛇的天敌_蛇的天敌有哪些?
- sql查询每科成绩最高的人和分数
- 利用ECharts在线生成图表
- codeforce 332B Maximum Absurdity
- B-tree、B+tree详解(二)插入与删除
- Python基础–详细记录Sixth_Chapter
- (附源码)计算机毕业设计ssm高校体育馆管理信息系统
- Mutable variable is accessible from closure