支付宝(Alipay)服务端SDK,采用.NET Standard 2.0,支持.NET Core >= 2.0,与官方SDK接口完全相同。完全可以按照官方文档进行开发。除了支持支付以外,官方SDK支持的功能本SDK全部支持,且用法几乎一样,代码都可参考官方文档代码。。由于精力有限,所以只做了几个Demo,但是其他功能可以参照官方的Demo来使用。可以使用官方文档中的示例代码。如有问题请加QQ群4656606。
本项目代码基于官方.NET Framework 代码重构而来以及加入了ASP.NET Core的扩展支持。
Install-Package Install-Package 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";
});
}
//通过di注入
private readonly IAlipayService _alipayService;
public xxxController(IAlipayService alipayService)
{
_alipayService = alipayService;
}
_alipayService.Execute();
Install-Package 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
里添加如下信息
"Alipay": {
"AlipayPublicKey": "",
"AppId": "",
"CharSet": "UTF-8",
"Gatewayurl": "https://openapi.alipaydev.com/gateway.do",
"PrivateKey": "",
"SignType": "RSA2",
"Uid": ""
}
添加配置代码可改为如下:
public void ConfigureServices(IServiceCollection services)
{
//配置alipay服务
ConfigureAlipay(services);
services.AddMvc();
}
private void ConfigureAlipay(IServiceCollection services)
{
var alipayOptions = Configuration.GetSection("Alipay").Get<AlipayOptions>();
//检查RSA私钥
AlipayConfigChecker.Check(alipayOptions.SignType, alipayOptions.PrivateKey);
services.AddAlipay(options => options.SetOption(alipayOptions)).AddAlipayF2F();
}
通过方法AlipayConfigChecker.Check
来在启动时对配置的私钥进行格式检查
AlipayConfigChecker.Check(string signType,string privateKey)
该方法有两个参数第一个为签名算法类型,第二个为私钥。此方法作用为检查私钥是否有效。建议与注入配置的代码一致。
解压tool文件夹下keygen.zip
压缩包,运行start.bat
即可在keys目录下生成公钥和私钥,长度为2048。
这里生成的公钥和私钥,只需将私钥配置到配置文件文件中,公钥需要设置到支付宝后台。然后设置SignType
为RSA2
。配置文件中的公钥配置,不是我们自己生成的这个,需要到支付宝后台获取,这里需要注意一下。
官方文档:
实现支付、支付同步回调、支付异步通知、订单查询、退款、退款查询、订单关闭、扫码支付功能