很简单,body签名错误是编码格式不对的原因,更改签名格式就可以了
我是下载的微信最新的.net版本的sdk
这是signType=SIGN_TYPE_HMAC_SHA256的解决方案
在 lib/data.cs里面的 CalcHMACSHA256Hash签名方法
private string CalcHMACSHA256Hash(string plaintext, string salt)
{
string result = "";
var enc = Encoding.UTF8; //更改自动获取为UTF-8格式
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;
}