zoukankan      html  css  js  c++  java
  • 微信红包签名算法 C#代码实现

    string stringA = "appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA";
    
                string stringSignTemp = stringA + "&key=192006250b4c09247ec02edce69f6a2d";
    
                string sign = MD5Helper.GetMD5Hash(stringSignTemp).ToUpper();
     public class MD5Helper
        {
            public static string GetMD5Hash(string value)
            {
                MD5 md5 = new MD5CryptoServiceProvider();
                byte[] hashByte = md5.ComputeHash(Encoding.Default.GetBytes(value));
                StringBuilder sb = new StringBuilder();
                foreach (byte b in hashByte)
                {
                    sb.Append(b.ToString("x").PadLeft(2, '0'));
                }
                return sb.ToString();
            }
        }

    假设传送的参数如下:

    appid: wxd930ea5d5a258f4f

    mch_id: 10000100

    device_info: 1000

    body: test

    nonce_str: ibuaiVcKdpRxkhJA

    第一步:对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:

    stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA";

    第二步:拼接API密钥:

    stringSignTemp="stringA&key=192006250b4c09247ec02edce69f6a2d"

    sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A9CF3B7"

    最终得到最终发送的数据:

    <xml>

    <appid>wxd930ea5d5a258f4f</appid>

    <mch_id>10000100</mch_id>

    <device_info>1000<device_info>

    <body>test</body>

    <nonce_str>ibuaiVcKdpRxkhJA</nonce_str>

    <sign>9A0A8659F005D6984697E2CA0A9CF3B7</sign>

    <xml>

    https://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter=4_3

  • 相关阅读:
    php分享三十:php版本选择
    php分享二十九:命名空间
    高性能mysql读书笔记(一):Schema与数据类型优化
    php分享二十八:mysql运行中的问题排查
    php分享二十七:批量插入mysql
    php分享二十六:读写日志
    Python | 一行命令生成动态二维码
    Python-获取法定节假日
    GoLang-字符串
    基础知识
  • 原文地址:https://www.cnblogs.com/weiweictgu/p/4898231.html
Copyright © 2011-2022 走看看