Net Core 3 Mvc AliPay Demo - PC Pay

AliPay

钻研了几天的Webpack, 这几天回归了我的本行.Net, 跟随大佬的脚步, 开始做上了支付宝的支付, 该Demo先分析传统的PC端网页支付, 面对面的支付将会在下一篇博客更新.

创建项目

首先创建一基于.Net Core3.0的MVC项目, 然后引用一下大佬写的支付类库Alipay.AopSdk.AspnetCore. 这一步很关键, 方法大佬都给你分装好了, 配置完了之后直接调用就行.

注册框架

.Net Core天生自带依赖注入, 要想在代码中直接使用注册的服务, 就需要在项目启动时注册该服务. 在Startup的ConfigureServices中添加如下代码:

var alipayOptions = Configuration.GetSection("Alipay").Get<AlipayOptions>();
services.AddAlipay(options => options.SetOption(alipayOptions));

上述代码实际上是注册了AlipayOptions, 而这些配置参数来源于配置文件, 格式如下:

{
  "Alipay": {
    "AlipayPublicKey": "",
    "AppId": "",
    "CharSet": "UTF-8",
    "Gatewayurl": "https://openapi.alipaydev.com/gateway.do",
    "PrivateKey": "",
    "SignType": "RSA2",
    "Uid": ""
  }
}

最简单的方法是你直接把它扔进appsettings.json, 而我采用了稍微复杂一点的方法, 注册自定义的配置文件alipay.json, 自定义配置文件不会自动加载, 需要在Program.cs中添加如下注册代码:

Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.ConfigureAppConfiguration(config =>
        {
            config.AddJsonFile("alipay.json");
        });
        webBuilder.UseStartup<Startup>();
    });

书写代码

上述都还只是准备工作, 这部分是代码, 新建一个PayController, 里面包含发起支付、订单查询、退款、退款查询、订单关闭五大功能, 每个功能包含一个Post的Action来接收前端传过来的参数, 和一个Get的Action+View来渲染界面, 具体代码请参照我的Gitee:

https://gitee.com/jerryqi/netcore-practice/tree/master/AliPay

实际上原理很简单, 其实就是给出一个简单的前端界面, 允许使用者自定义参数来调用API, 要写的简单的话, 就写一个Console把API调用一遍就行了, 但是这样不太直观. 总结来说, 就是前端传参数到后端, 后端封装成请求请求支付宝, 支付宝返回结果.

开通账号

做支付测试, 首先需要有一个测试账号啊, 我没有土豪到拿白花花的银子去做测试啊, 支付宝就有这一样一个沙箱测试环境, 相当于一个阉割版的支付宝, 里面拥有完整的支付功能, 在这个里面你可以随意给自己充钱, 并且随意花钱, 做一会真正的土豪. 地址:

https://openhome.alipay.com/platform/appDaily.htm?tab=info

打开之后, 你直接用自己的个人支付宝扫码登陆进去就算注册成功了, 登陆上去之后一次打开: 开发者中心->研发服务, 结下来就是各个参数的配置:

沙箱应用

在该选项卡需要配置RSA或者RSA2密钥, 生成工具可以使用AliPay推荐的-支付宝开放平台开发助手, 下载地址:

https://docs.open.alipay.com/291/105971

生成的应用公钥填入: RSA(SHA1)密钥, 填入完之后, 支付宝会相应的生成支付宝公钥. 在该选项卡需要记住以下几个参数:

  • 开发者助手生成的私钥
  • 支付宝生成的公钥
  • APPID
    此处还要下载一个沙箱测试专用的支付宝, 下载链接在该选项卡下方可以找到.

    沙箱账号

    打开沙箱账号选项卡, 里面提供了两个账号, 一个商家信息, 一个买家信息, 分别的作用是:

    商家信息

    这里面有个要用到的重要参数:
  • 商户UID

    买家信息

    这个信息是你上述步骤下载的沙箱版支付宝的登陆账号以及密码, 也是这里, 你可以随意给自己的账号充钱, 土豪一把.

配置打通

在开通账号的步骤中, 我提到了四个重要的参数, 对配置文件一次对好入座:

  • 需要注意的是我们使用支付宝开放平台开发助手生成的是RSA(SHA1)密钥, 因此SignType是RSA
{
  "Alipay": {
    "AlipayPublicKey": "支付宝生成的公钥",
    "AppId": "APPID",
    "CharSet": "UTF-8",
    "Gatewayurl": "https://openapi.alipaydev.com/gateway.do",
    "PrivateKey": "开发者助手生成的私钥",
    "SignType": "RSA",
    "Uid": "商户UID"
  }
}

完成之后, 启动应用, 你就可以放肆消费了.