微信支付 中文出現簽名失敗解決辦法


如果你是從微信支付官網下載的 .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;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM