首页 > 代码库 > 参数签名ascii码排序的坑
参数签名ascii码排序的坑
参数签名中通常是按键值对中键名称的ASCII按从小到大的顺序排序后进行hash为签名字符串。不要直接使用 SortedDictionary<string, string> 有坑的,他是按数字、小写字母、大写字母的顺序排的,实际规则应该是数字、大写字母、小写字母的顺序来排才对。一直使用他在支付宝和微信的接口中都没问题,因为支付宝和微信的单词是用下划线分隔的,今天接入的一家支付公司用的驼峰命名法坑就出现了。正确的打开姿势如下:
/// <summary>/// ASCII值排序/// </summary>public class OrdinalComparer : System.Collections.Generic.IComparer<String>{ public int Compare(String x, String y) { return string.CompareOrdinal(x, y); }}//使用//SortedDictionary<string, string> sDic 待排序的键值对var sArr = sDic.OrderBy(x => x.Key, new OrdinalComparer()).ToDictionary(x => x.Key, y => y.Value);//然后 foreach sArr 就OK了
参数签名ascii码排序的坑
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。