错误是由于发起转账时 user_name字段有值导致的(不传值时正常)
虽然对这个字段进行了加密 但是请求后依然出现以上错误(请求逻辑如下图),搞了很久都没成功。
谁有成功案例可以分享下?能帮助快速解决问题的,愿意发百元红包以表谢意!
谁有成功案例可以分享下?能帮助快速解决问题的,愿意发百元红包以表谢意!
谁有成功案例可以分享下?能帮助快速解决问题的,愿意发百元红包以表谢意!
加密方法实现如下(官方示例不能正常执行)
原始代码如下
public static string GenerateMerchantSignature(this X509Certificate2 x509, string method, string url, string timestamp, string nonce, string body,
HashAlgorithmName hashAlgorithm, RSASignaturePadding? padding = null)
{
var signMessage = $"{method}\n{url}\n{timestamp}\n{nonce}\n{body ?? string.Empty}\n";
return x509.GenerateSignature(signMessage, hashAlgorithm, padding);
}
public static string GenerateSignature(this X509Certificate2 x509, string message, string hashAlgorithmName = "SHA256", RSASignaturePadding? padding = null)
=> GenerateSignature(x509, message, new HashAlgorithmName(hashAlgorithmName), padding);
public static string GenerateSignature(this X509Certificate2 x509, string message, HashAlgorithmName hashAlgorithm, RSASignaturePadding? padding = null)
{
try
{
using var rsa = x509.GetRSAPrivateKey();
byte[] dataBytes = Encoding.UTF8.GetBytes(message);
byte[] signatureBytes = rsa.SignData(dataBytes, hashAlgorithm, padding ?? RSASignaturePadding.Pkcs1);
return Convert.ToBase64String(signatureBytes);
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message);
throw;
}
}