1.Alipay.AopSdk.Core.AopException:“您使用的私鑰格式錯誤,請檢查RSA私鑰配置,charset = UTF-8”
出現這個問題,就是配置不正確。首先先保證你的密鑰信息等是正確的,然后由於新版本新增了ASP.NET Core使用的相關組件,所以配置不放在Config.cs里面了,新的使用方式如下:
重要的事情說三遍!!! 這里需要注意的是,上面的配置信息也需要放在 appsettings.Development.json 里面,因為asp.net core會根據當前運行環境來配置具有運行環境名稱的配置文件。
在啟動時進行私鑰檢查
AlipayConfigChecker.Check(string signType,string privateKey)
兩個參數第一個為簽名算法類型,第二個為私鑰。此方法作用為檢查私鑰是否有效。建議與注入配置的代碼一致。
演示:
services.AddAlipay(options =>
{
options.AlipayPublicKey = Configuration["Alipay:AlipayPublicKey"];
options.AppId = Configuration["Alipay:AppId"];
options.CharSet = Configuration["Alipay:CharSet"];
options.Gatewayurl = Configuration["Alipay:Gatewayurl"];
options.PrivateKey = Configuration["Alipay:PrivateKey"];
options.SignType = Configuration["Alipay:SignType"];
options.Uid = Configuration["Alipay:Uid"];
}).AddAlipayF2F();
AlipayConfigChecker.Check(Configuration["Alipay:SignType"],Configuration["Alipay:PrivateKey"])
Alipay.AopSdk.AspnetCore
public void ConfigureServices(IServiceCollection services)
{
services.AddAlipay(options =>
{
options.AlipayPublicKey = "支付寶公鑰";
options.AppId = "應用ID";
options.CharSet = "密鑰編碼";
options.Gatewayurl = "支付網關";
options.PrivateKey = "商家私鑰";
options.SignType = "簽名方式 RSA/RSA2";
options.Uid = "商戶ID";
});
}
使用:
private readonly IAlipayService _alipayService;
public xxxController(IAlipayService alipayService)
{
_alipayService = alipayService;
}
_alipayService.Execute();
Alipay.AopSdk.F2FPay.AspnetCore
public void ConfigureServices(IServiceCollection services)
{
services.AddAlipay(options =>
{
options.AlipayPublicKey = "支付寶公鑰";
options.AppId = "應用ID";
options.CharSet = "密鑰編碼";
options.Gatewayurl = "支付網關";
options.PrivateKey = "商家私鑰";
options.SignType = "簽名方式 RSA/RSA2";
options.Uid = "商戶ID";
}).AddAlipayF2F();
}
使用:
private readonly IAlipayF2FService _alipayF2FService;
public xxxController(IAlipayF2FService alipayF2FService)
{
_alipayF2FService = alipayF2FService;
}
_alipayF2FService.Execute();
這里的配置信息推薦放在appsettings.json里面
services.AddAlipay(options =>
{
options.AlipayPublicKey = Configuration["Alipay:AlipayPublicKey"];
options.AppId = Configuration["Alipay:AppId"];
options.CharSet = Configuration["Alipay:CharSet"];
options.Gatewayurl = Configuration["Alipay:Gatewayurl"];
options.PrivateKey = Configuration["Alipay:PrivateKey"];
options.SignType = Configuration["Alipay:SignType"];
options.Uid = Configuration["Alipay:Uid"];
}).AddAlipayF2F();
appsettings.json
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Error"
}
},
"Alipay": {
"AlipayPublicKey": "",
"AppId": "",
"CharSet": "UTF-8",
"Gatewayurl": "https://openapi.alipaydev.com/gateway.do",
"PrivateKey": "",
"SignType": "RSA2",
"Uid": ""
}
}
另一種原因
生成的key有問題,請保證key是用支付寶RSA密鑰生成工具生成的或者openssh命令生成的,格式為PKCS1
2.AppId無效
(1)首先確保AppId是正確的,然后調試代碼查看Appid是否被正確獲取,若沒有被正確獲取查看上面appsettings.Development.json的問題。
(2)AppID和支付寶網關匹配不正確,正式環境的AppId只能用正式環境的網關,沙箱環境亦然。
沙箱網關:https://openapi.alipaydev.com/gateway.do 正式網關:https://openapi.alipay.com/gateway.do
3.掃碼提示二維碼無效
如果使用的沙箱環境進行的支付,那么不能使用正式版本的支付寶app進行掃碼,需要使用沙箱版支付寶,在沙箱后台可以下載。