C# 参数按照ASCII码从小到大排序(字典序)

在对接第三方支付的时候,第三方会要求参数按照ASCII码从小到大排序。如下:

 1 public static void requestPay()
 2  {
 3        Dictionary<string, string> dics = new Dictionary<string, string>();
 4        dics.Add("amount", amount);
 5        dics.Add("callback_url", callback_url);
 6        dics.Add("goodsname", goodsname);
 7        dics.Add("merchno", merchno);
 8        dics.Add("notify_url", notify_url);
 9        dics.Add("ordno", ordno);
10        dics.Add("organno", organno);
11        dics.Add("version", version);
12        dics.Add("paytype", paytype);
13
14        getParamSrc(dics);
15 }
16
17 public static String getParamSrc(Dictionary<string, string> paramsMap)
18 {
19        var vDic = (from objDic in paramsMap orderby objDic.Key ascending select objDic);
20        StringBuilder str = new StringBuilder();
21        foreach (KeyValuePair<string, string> kv in vDic)
22        {
23            string pkey = kv.Key;
24            string pvalue = kv.Value;
25            str.Append(pkey + "=" + pvalue + "&");
26         }
27
28         String result = str.ToString().Substring(0, str.ToString().Length - 1);
29         return result;
30 }

原文地址:https://www.cnblogs.com/gentrywolf/p/10125602.html

时间: 2024-10-14 09:35:38

C# 参数按照ASCII码从小到大排序(字典序)的相关文章

.Net将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),并使用URL键值对的格式(即key1=value1&amp;key2=value2…)拼接成字符串stringA

前言: 前段时间因为项目进度比较繁重所以一直都没有时间更新博客,内心深深的负重感,没有履行年初立下的flag.不过这个月会把上个月没有完成的任务补上来,咱们可不是喜欢拖欠任务的攻城狮.哈哈,废话不多说,接下来是要总结下关于对接支付时我们经常会遇到的将对应集合中的参数按照ASCII码按照从小到大排序,并使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA,其实对于有些参数比较少的而已我们完全可以自己使用固定拼接的方式拼接好来,但是假如参数集合中的参

微信支付签名算法JavaScript版,参数名ASCII码从小到大排序;0,A,B,a,b;

// 支付md5加密获取sign paysignjs: function (jsonobj) { var signstr = this.obj2str(jsonobj) signstr = signstr + '&key=' + key; console.log("signstrkey:",signstr) var sign = md5util.hexMD5(signstr); //验证调用返回或微信主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验

C# 非空字段按照ASCII码从小到大排序(字典序)

public static void requestPay() { Dictionary<string, string> dics = new Dictionary<string, string>(); dics.Add("amount", amount); dics.Add("callback_url", callback_url); dics.Add("goodsname", goodsname); dics.Add(

输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。

ASCII码排序 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符. 输入 第一行输入一个数N,表示有N组测试数据.后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格. 输出 对于每组输入数据,输出一行,字符中间用一个空格分开. 样例输入 2 qwe asd 样例输出 e q w a d s #include <iostream> using namespace

二级 长度为7的字符串除首位外其余五个字符按ascii码进行排序

//编写程序函数的功能为,对长度为7的字符串除首位外其余五个字符按ascii码进行排序 void fun(char *s,int num) { char t; int i,j; for(i=1;i<num-2;i++) for(j=i+1;j<num-1;j++) { if(s[i]<s[j]) { t=s[i]; s[i]=s[j]; s[j]=t; } } }

参数签名ascii码排序的坑

参数签名中通常是按键值对中键名称的ASCII按从小到大的顺序排序后进行hash为签名字符串.不要直接使用 SortedDictionary<string, string> 有坑的,他是按数字.小写字母.大写字母的顺序排的,实际规则应该是数字.大写字母.小写字母的顺序来排才对.一直使用他在支付宝和微信的接口中都没问题,因为支付宝和微信的单词是用下划线分隔的,今天接入的一家支付公司用的驼峰命名法坑就出现了.正确的打开姿势如下: /// <summary> /// ASCII值排序 //

ACM--输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。

代码如下: #include <stdio.h> main() { char a,b,c,d; int i; scanf("%d",&i); getchar(); while(i--) { scanf("%c%c%c",&a,&b,&c); getchar(); if (a>b) {d=a;a=b;b=d;} if (a>c) {d=a;a=c;c=d;} if (b>c) {d=b;b=c;c=d;}

描述 输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。 输入 第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格。 输出 对于每组输入数据,输出一行,字符中间用一个空格分开。

#include<stdio.h>#include<string.h>int main() { int N; int i,j,t; char a[4]; char m; scanf("%d",&N); getchar(); while(N--) { gets(a); j=strlen(a); for(i=0;i<j;i++) { for(t=0;t<j-1-i;t++) { if(a[t]>a[t+1]) { m=a[t]; a[t]=

ACM 4描述 输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。输入 第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,

#include<stdio.h> #include<string.h> int main() { int n; int i,j; char a[4]; int t; char m; scanf("%d",&n);getchar(); while(n--) { gets(a); j=strlen(a); for(i=0;i<j;i++) { for(t=0;t<j-1-i;t++) { if(a[t]>a[t+1]) { m=a[t];