测震仪,1144.us众里寻她千百,综艺熊
如果你是从微信支付官网下载的 .net c#【微信支付】api对应的sdk 调用示例
查看源码,会发现这个sdk中的 wxpaydata 的类的 calchmacsha256hash 签名方法采用的是 encoding.default 编码,如果要编码的字符串为中文,则会出现签名错误
所有需要修改sdk中这个方法的代码:将编码改为utf8
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;
}
在签名的类型使用 sign_type_md5 方式:
这个时候需要修改下单方法中的 wxpayapi 类 unifiedorder 方法
inputobj.setvalue("sign_type", wxpaydata.sign_type_md5);//签名类型
//签名
inputobj.setvalue("sign", inputobj.makesign(wxpaydata.sign_type_md5));
注意客户端中的签名方式也需要跟服务端保持一直,如果下单用的是 sign_type_md5,则客户端用sign_type_md5,如果客户端用sign_type_hmac_sha256,则服务端用sign_type_hmac_sha256
最后:建议使用方案一,个人觉得 256 签名更难破解,更安全一些!
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Blazor server side 自家的一些开源的, 实用型项目的进度之 CEF客户端
.NET IoC模式依赖反转(DIP)、控制反转(Ioc)、依赖注入(DI)
vue+.netcore可支持业务代码扩展的开发框架 VOL.Vue 2.0版本发布
网友评论