|
@@ -25,21 +25,19 @@ namespace Essensoft.AspNetCore.WeChatPay
|
|
|
|
|
|
public WeChatPayOptions Options { get; set; }
|
|
|
|
|
|
- protected internal HttpClientHandler ClientHandler { get; set; }
|
|
|
-
|
|
|
protected internal HttpClientEx Client { get; set; }
|
|
|
|
|
|
public WeChatPayCertificateClient(IOptions<WeChatPayOptions> optionsAccessor)
|
|
|
{
|
|
|
Options = optionsAccessor?.Value ?? new WeChatPayOptions();
|
|
|
- ClientHandler = new HttpClientHandler();
|
|
|
|
|
|
+ var clientHandler = new HttpClientHandler();
|
|
|
if (File.Exists(Options.Certificate)) // 是文件则以文件名的形式创建,否则以Base64String方式
|
|
|
- ClientHandler.ClientCertificates.Add(new X509Certificate2(Options.Certificate, Options.MchId));
|
|
|
+ clientHandler.ClientCertificates.Add(new X509Certificate2(Options.Certificate, Options.MchId));
|
|
|
else
|
|
|
- ClientHandler.ClientCertificates.Add(new X509Certificate2(Convert.FromBase64String(Options.Certificate), Options.MchId));
|
|
|
+ clientHandler.ClientCertificates.Add(new X509Certificate2(Convert.FromBase64String(Options.Certificate), Options.MchId));
|
|
|
|
|
|
- Client = new HttpClientEx(ClientHandler);
|
|
|
+ Client = new HttpClientEx(clientHandler);
|
|
|
}
|
|
|
|
|
|
public WeChatPayCertificateClient(string appId, string appSecret, string mchId, string key, string certificate)
|
|
@@ -57,15 +55,11 @@ namespace Essensoft.AspNetCore.WeChatPay
|
|
|
sortedTxtParams.Add(MCHAPPID, Options.AppId);
|
|
|
sortedTxtParams.Add(MCHID, Options.MchId);
|
|
|
}
|
|
|
- else if (request is WeChatPayGetPublicKeyRequest)
|
|
|
+ else if (request is WeChatPayGetPublicKeyRequest || request is WeChatPayPayBankRequest || request is WeChatPayQueryBankRequest)
|
|
|
{
|
|
|
sortedTxtParams.Add(MCH_ID, Options.MchId);
|
|
|
sortedTxtParams.Add(SIGN_TYPE, "MD5");
|
|
|
}
|
|
|
- else if (request is WeChatPayPayBankRequest || request is WeChatPayQueryBankRequest)
|
|
|
- {
|
|
|
- sortedTxtParams.Add(MCH_ID, Options.MchId);
|
|
|
- }
|
|
|
else if (request is WeChatPayGetTransferInfoRequest)
|
|
|
{
|
|
|
sortedTxtParams.Add(APPID, Options.AppId);
|
|
@@ -104,7 +98,7 @@ namespace Essensoft.AspNetCore.WeChatPay
|
|
|
throw new Exception("sign check fail: Body is Empty!");
|
|
|
}
|
|
|
|
|
|
- var sign = response.Sign;
|
|
|
+ var sign = response?.Sign;
|
|
|
if (!response.IsError && !string.IsNullOrEmpty(sign))
|
|
|
{
|
|
|
var cal_sign = Md5.GetMD5WithKey(response.Parameters, Options.Key);
|