加签代码:
生成Authorization: protected static string GetAuthorization(string url, string method, string jsonParame, string privateKey, string merchantId, string serialNo)
{
var uri = new Uri(url);
string urlPath = uri.PathAndQuery;
string nonce = Guid.NewGuid().ToString();
var timestamp = DateTimeOffset.Now.ToUnixTimeSeconds();
//数据签名 HTTP请求方法\n接口地址的url\n请求时间戳\n请求随机串\n请求报文主体\n
method = string.IsNullOrEmpty(method) ? "" : method;
string message = string.Format("{0}\n{1}\n{2}\n{3}\n{4}\n", method, urlPath, timestamp, nonce, jsonParame);
string signTxt = Sign(message, privateKey);
//Authorization和格式
string authorzationTxt = string.Format("WECHATPAY2-SHA256-RSA2048 mchid=\"{0}\",nonce_str=\"{1}\",timestamp=\"{2}\",serial_no=\"{3}\",signature=\"{4}\"",
merchantId,
nonce,
timestamp,
serialNo,
signTxt
);
return authorzationTxt;
}
不明白是哪里有问题,一直无法加签成功,我用生成的字符串 去证书工具加签验签,一直加签通过。GET\n/v3/certificates\n1720320424\n32581d11-7e42-4711-aa03-0ed7c08494aa\n\n,使用商户API证书密钥时我也去掉了开头和结尾以及\n和\r也显示验签失败。
请参考下这份说明链接的内容
https://pay.weixin.qq.com/docs/merchant/development/interface-rules/signature-faqs.html
另外,工具验证的是格式,而不是证书,这里证书如果使用错误,工具也是检测不出来的