ASP.NET Core 2.0 使用支付宝PC网站支付实现代码

最近在使用ASP.NET Core来进行开发,刚好有个接入支付宝支付的需求,百度了一下没找到相关的资料,看了官方的SDK以及Demo都还是.NET Framework的,所以就先根据官方SDK的源码,用.NET Standard 2.0 实现了支付宝服务端SDK,Alipay.AopSdk.Core(github:https://github.com/stulzq/Alipay.AopSdk.Core) ,支持.NET CORE 2.0。为了使用方便,已上传至Nuget可以直接使用。

支付宝有比较多的支付产品,比如当面付、APP支付、手机网站支付、电脑网站支付等,本次讲的是电脑网站支付。

ASP.NET Core 2.0 使用支付宝PC网站支付实现代码

如果你没有时间阅读文章,可以直接从github获取Demo原来进行查看,非常简单。github: https://github.com/stulzq/Alipay.Demo.PCPayment

创建项目

新建一个ASP.NET Core 2.0 MVC项目

ASP.NET Core 2.0 使用支付宝PC网站支付实现代码

配置

由于我在开发的时候支付接口并没有申请下来,所以使用的是支付宝沙箱环境来进行开发的。

支付宝沙箱环境介绍:蚂蚁沙箱环境(Beta)是协助开发者进行接口功能开发及主要功能联调的辅助环境。沙箱环境模拟了开放平台部分产品的主要功能和主要逻辑,在开发者应用上线审核前,开发者可以根据自身需求,先在沙箱环境中了解、组合和调试各种开放接口,进行开发调通工作,从而帮助开发者在应用上线审核完成后,能更快速、更顺利的进行线上调试和验收工作。
如果在签约或创建应用前想要进行集成测试,可以使用沙箱环境。

沙箱环境支持使用个人账号或企业账号登陆。

沙箱环境地址:

1.生成密钥

下载支付宝官方提供的密钥生成工具来进行生成,详细介绍:

2.设置应用公钥

我们生成密钥之后,需要到支付宝后台设置应用公钥,就是我们生成的公钥。

ASP.NET Core 2.0 使用支付宝PC网站支付实现代码

设置之后,支付宝会给我们一个支付宝公钥,保存这个支付宝公钥

ASP.NET Core 2.0 使用支付宝PC网站支付实现代码

这个支付宝公钥和我们自己生成的公钥是不一样的,我们在配置SDK时用的公钥就是支付宝公钥

3.配置SDK

新建一个Config类,在里面存储我们的配置。

public class Config{ // 应用ID,您的APPID public static string AppId = ""; // 支付宝网关 public static string Gatewayurl = ""; // 商户私钥,您的原始格式RSA私钥 public static string PrivateKey = ""; // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。 public static string AlipayPublicKey = ""; // 签名方式 public static string SignType = "RSA2"; // 编码格式 public static string CharSet = "UTF-8";}

应用ID和支付宝网关都可以在支付宝后台查看。

ASP.NET Core 2.0 使用支付宝PC网站支付实现代码

商户私钥即我们自己生成的私钥,公钥就是支付宝公钥这里一定要注意,别用错了。这里的公钥私钥直接填写字符串即可。

签名方式推荐使用RSA2,使用RSA2,支付宝会用SHA256withRsa算法进行接口调用时的验签(不限制密钥长度)。

编码格式,如果我们是直接配置的字符串(公钥、私钥),那么就是我们代码的编码,如果使用的是文件(公钥、私钥),那么就是文件的编码。

完成配置如下:

ASP.NET Core 2.0 使用支付宝PC网站支付实现代码

添加SDK

官方SDK的源码(.NET Framework),用.NET Standard 2.0 实现的支付宝服务端SDK,Alipay.AopSdk.Core(github:https://github.com/stulzq/Alipay.AopSdk.Core) ,支持.NET Core 2.0。
通过Nuget安装:Install-Package Alipay.AopSdk.Core

ASP.NET Core 2.0 使用支付宝PC网站支付实现代码

支付

添加一个控制器 PayController

/// 发起支付请求/// </summary>/// <param>外部订单号,商户网站订单系统中唯一的订单号</param>/// <param>订单名称</param>/// <param>付款金额</param>/// <param>商品描述</param>/// <returns></returns>[HttpPost] public void PayRequest(string tradeno,string subject,string totalAmout,string itemBody){ DefaultAopClient client = new DefaultAopClient(Config.Gatewayurl, Config.AppId, Config.PrivateKey, "json", "2.0", Config.SignType, Config.AlipayPublicKey, Config.CharSet, false); // 组装业务参数model AlipayTradePagePayModel model = new AlipayTradePagePayModel(); model.Body = itemBody; model.Subject = subject; model.TotalAmount = totalAmout; model.OutTradeNo = tradeno; model.ProductCode = "FAST_INSTANT_TRADE_PAY"; AlipayTradePagePayRequest request = new AlipayTradePagePayRequest(); // 设置同步回调地址 request.SetReturnUrl("http://localhost:5000/Pay/Callback"); // 设置异步通知接收地址 request.SetNotifyUrl(""); // 将业务model载入到request request.SetBizModel(model); var response = client.SdkExecute(request); Console.WriteLine($"订单支付发起成功,订单号:{tradeno}"); //跳转支付宝支付 Response.Redirect(Config.Gatewayurl + "?" + response.Body);}

运行:

图1

ASP.NET Core 2.0 使用支付宝PC网站支付实现代码

图2

ASP.NET Core 2.0 使用支付宝PC网站支付实现代码

图3

ASP.NET Core 2.0 使用支付宝PC网站支付实现代码

支付异步回调通知

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdpwzs.html