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只能用正式环境的网关,沙箱环境亦然。
沙箱网关: 正式网关:
3.扫码提示二维码无效
如果使用的沙箱环境进行的支付,那么不能使用正式版本的支付宝app进行扫码,需要使用沙箱版支付宝,在沙箱后台可以下载。