收藏
回答

微信支付V2接口统一下单接口HMAC-SHA256签名总是错误

我们使用的是微信支付的V2接口,但是在统一下单的时候,如果使用HMAC-SHA256签名,则调用接口后总是会报错“错误的签名,验签失败”,但是MD5却是可以的,在.NET Framework 4.0、4.6.1等环境下都失败,使用:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=20_1 这个签名验证工具,也都是错的。

使用的测试代码是:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=11_1 这里下载的.NET版本。

请教各位,这可能是什么问题呢?

在线客服说他使用我的appid等信息测试后签名是一致的。

回答关注问题邀请回答
收藏

2 个回答

  • 田景-汉合软件
    田景-汉合软件
    2021-08-31

    这个问题终于知道什么原因了,必须把Encoding.Default改为Encoding.UTF8,因为body参数有中文

    private string CalcHMACSHA256Hash(string plaintext, string salt)

            {

                string result = "";

                //var enc = Encoding.Default;

                var enc = Encoding.UTF8;

                byte[]

                baText2BeHashed = enc.GetBytes(plaintext),

                baSalt = enc.GetBytes(salt);

                System.Security.Cryptography.HMACSHA256 hasher = new HMACSHA256(baSalt);

                byte[] baHashedText = hasher.ComputeHash(baText2BeHashed);

                result = string.Join("", baHashedText.ToList().Select(b => b.ToString("x2")).ToArray());

                return result;

            }

    2021-08-31
    有用 1
    回复 1
    • Adrian@优趣科技
      Adrian@优趣科技
      07-24
      哥们,你这个函数是用在哪里能解决问题的?
      07-24
      回复
  • Memory
    Memory
    2021-07-15

    使用HMAC-SHA256签名报签名错误,计算签名的参数和传参不一致导致的问题

    2021-07-15
    有用
    回复 1
    • 田景-汉合软件
      田景-汉合软件
      2021-07-16
      传的参数顺序是没有问题的,和这上面提供的验签工具生成的完全一致。
      2021-07-16
      回复
登录 后发表内容