支付寶異步接口和同步接口驗簽失敗:AlipaySignature.RSACheckV1一直為false的原因
廣告:
原因:不同的服務器不一樣,有的服務器正常,有的服務器一直為false,有下面解決方案
bool flag = AlipaySignature.RSACheckV1(sArray, config.alipay_public_key, config.charset, config.sign_type, false);
首先把 AopSdk 項目文件的 AlipaySignature.cs
RSACheckContent(string signContent, string sign, string publicKeyPem, string charset, string signType, bool keyFromFile)
catch
{
return false;
}
改成如下面:
catch (Exception ex) //20200110 改動更新 加上 Exception ex
{
throw (ex);
// return false;
}
這樣就可以看到錯誤的原因。
然后程序提示下面錯誤:
事件代碼: 3005
事件消息: 發生了未處理的異常。
事件時間: 2020/1/11 14:46:54
事件時間(UTC): 2020/1/11 6:46:54
事件 ID: 2e48baa260194296a0646eb3355c505d
事件序列: 6
事件匹配項: 1
事件詳細信息代碼: 0
應用程序信息:
應用程序域: /LM/W3SVC/19/ROOT-2-132231988145201111
信任級別: Full
應用程序虛擬路徑: /
應用程序路徑: D:\webwww2016\xiyaoheweb2016\testweb\
計算機名: WINDOWS2012R2
進程信息:
進程 ID: 4244
進程名: w3wp.exe
帳戶名: IIS APPPOOL\alipay
異常信息:
異常類型: CryptographicException
異常消息: 系統找不到指定的文件。
請求信息:
請求 URL: http://hong.ysneo.com/test.aspx
請求路徑: /test.aspx
用戶主機地址: 123.59.44.206
用戶:
是否已經過身份驗證: False
身份驗證類型:
線程帳戶名: IIS APPPOOL\alipay
線程信息:
線程 ID: 3
線程帳戶名: IIS APPPOOL\alipay
是否正在模擬: False
堆棧跟蹤: 在 Aop.Api.Util.AlipaySignature.RSACheckContent(String signContent, String sign, String publicKeyPem, String charset, String signType, Boolean keyFromFile) 位置 E:\aspnet2.0\nyweb_jia\支付寶支付\alipay-sdk-NET20170615-xiyaohe\Util\AlipaySignature.cs:行號 311
在 Aop.Api.Util.AlipaySignature.RSACheckV1Test(String sign, String signContent, String publicKeyPem, String charset, String signType, Boolean keyFromFile) 位置 E:\aspnet2.0\nyweb_jia\支付寶支付\alipay-sdk-NET20170615-xiyaohe\Util\AlipaySignature.cs:行號 175
在 Test.Page_Load(Object sender, EventArgs e)
在 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
在 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
在 System.Web.UI.Control.OnLoad(EventArgs e)
在 System.Web.UI.Control.LoadRecursive()
在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
解決方法:(3選一)
1. 打開IIS7.5設置,應用程序池--》找到自己的應用程序(網站名稱)-->右鍵-->高級設置-->在進程模型區域,有個-用戶加載配置文件-選擇后面為true.這個問題就解決了。
2 RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
改成:
CspParameters RSAParams = new CspParameters(); // 20200111
RSAParams.Flags = CspProviderFlags.UseMachineKeyStore;//
System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(1024, RSAParams);//
3.
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); 改成
RSACryptoServiceProvider.UseMachineKeyStore = true; //new add 添加這一行
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
廣告: