xinyunyou

如果你是从微信支付官网下载的 .NET C#【微信支付】API对应的SDK 调用示例

查看源码,会发现这个SDK中的 WxPayData 的类的 CalcHMACSHA256Hash 签名方法采用的是 Encoding.Default 编码,如果要编码的字符串为中文,则会出现签名错误

所有需要修改SDK中这个方法的代码:将编码改为UTF8////微信这个货,中国人,居然不指定UTF-8


private string CalcHMACSHA256Hash(string plaintext, string salt)
{
string result = "";
var enc = Encoding.UTF8; //修改Default为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-12-12
  • 2021-08-12
  • 2021-06-04
  • 2021-12-09
  • 2021-08-13
  • 2021-09-20
  • 2021-09-17
  • 2022-01-16
猜你喜欢
  • 2021-09-26
  • 2022-01-16
  • 2021-06-02
  • 2021-06-30
  • 2021-12-12
  • 2021-11-05
  • 2021-12-27
相关资源
相似解决方案