收藏
评论

.net环境下统一下单签名失败

使用系统提供的.net SDK包WxPayAPI进行统一下单签名,使用默认的SIGN_TYPE_HMAC_SHA256进行签名,一直签名失败,最后通过微信支付接口签名校验工具对比发现是签名算出来的结果错误的。


找了很久才找到原因:Data类的CalcHMACSHA256Hash函数中对字符串转换成二进制数组的编码错误,将var enc = Encoding.Default;改为var enc = Encoding.UTF8;就可以了。


估计是腾讯的开发人员的电脑配置不一样,一般电脑的Encoding.Default默认编码格式是中文编码GB2312。希望官方能把这个Bug改过来,方便后来的开发者



另外,最好把.ToString("x2")中的小写x改为大写X,毕竟官方文档中要求的是转为大写的十六进制字符串

最后一次编辑于  03-25
赞 1
收藏