• 河南农信移动支付解析


    河南农信,HNNX。

    重点:

    1.C#和JAVA 的UrlEncode结果不同,不能使用C#自带的UrlEncode。

    2.http header 和 body 里的键值对都参与签名,transCode不参与。

     3.RSA with SHA256 算出的值byte[] ,转字符串时为16进制字符串,小写。

     4.测试环境和生产环境的channelId、ChannelNbr 是一样的,channelId=45、ChannelNbr=03。

     5.由于pfx证书文件不方便保存和部署,我这边是把pfx里的私钥导出来,存入数据库,用来签名。公钥证书也是保存的字符串到数据库。

    说明:

    不能使用C#自带的UrlEncode,C#  JAVA urlencode  结果不兼容。C# 需要encode的部分是小写。JAVA 需要encode的部分是大写。

    使用下面这个方法处理。

    /// <summary>
            /// java UrlEncode 特点是:需要UrlEncode字符,UrlEncode后要大写。
            /// </summary>
            /// <param name="str"></param>
            /// <param name="charSet"></param>
            /// <returns></returns>
            public static string CSharpToJavaUrlEncode(string str,string charSet)
            {
                Encoding enc = Encoding.GetEncoding(charSet);
    
                StringBuilder stringBuilder = new StringBuilder();
                for (int i = 0; i < str.Length; i++)
                {
                    string t = str[i].ToString();
                    string k = HttpUtility.UrlEncode(t, enc);
                    if (t == k)
                    {
                        stringBuilder.Append(t);
                    }
                    else
                    {
                        stringBuilder.Append(k.ToUpper());
                    }
                }
                return stringBuilder.ToString();
            }

  • 相关阅读:
    flask_第一个程序
    Web框架_MVC vs MVT
    python_使用qrcode生成二维码
    HDU 4641
    SPOJ NSUBSTR
    SPOJ LCS2 多个串的最长公共子串
    SPOJ LCS 后缀自动机找最大公共子串
    POJ 1509 循环同构的最小表示法
    HDU 4821 字符串hash
    SPOJ GSS1 静态区间求解最大子段和
  • 原文地址:https://www.cnblogs.com/runliuv/p/15006973.html
Copyright © 2020-2023  润新知