Net Core 3 Mvc AliPay Demo
AliPay - PC
钻研了几天的Webpack, 这几天回归了我的本行.Net, 跟随大佬的脚步, 开始做上了支付宝的支付.
创建项目
首先创建一基于.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"
}
}
AliPay - Scan
接续上一篇博客, 在PC的支付过程中, 是通过在PC端把相关支付参数携带并跳转到支付宝, 在支付宝的网页中形成付款二维码, 付款成功之后再跳转回来, 而在本文的扫码支付则是通过支付参数从支付宝获取一个支付唯一的Link, 之后将此Link在本地生成二维码, 从而实现扫码付.
环境准备
本Demo的环境沿用上一篇PC Pay的环境, Link:
https://www.cnblogs.com/jerryqi/p/11771584.html
在上一节的基础上, 首先使用nuget安装QRCoder, 该类库用于将文本信息转换为二维码.
书写代码
首先新建一个F2FPayController, 里面主要包含两个Action, Scan和ScanCodeGen, 前者用来显示View来提供一个表单供填写参数并显示支付二维码, 后者则用来接收前端传过来的参数, 通过调用相关API返回二维码, 具体代码请参照我的Gitee:
https://gitee.com/jerryqi/netcore-practice/tree/master/AliPay
完成之后, 启动应用, 你就可以放肆消费了.
Net Core 3 Mvc AliPay Demo的更多相关文章
- Core开发-MVC 使用dotnet 命令创建Controller和View
NET Core开发-MVC 使用dotnet 命令创建Controller和View 使用dotnet 命令在ASP.NET Core MVC 中创建Controller和View,之前讲解过使 ...
- [.Net Core] 在 Mvc 中简单使用日志组件
在 Mvc 中简单使用日志组件 基于 .Net Core 2.0,本文只是蜻蜓点水,并非深入浅出. 目录 使用内置的日志组件 简单过渡到第三方组件 - NLog 使用内置的日志 下面使用控制器 Hom ...
- ASP.NET Core 配置 MVC - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 配置 MVC - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 配置 MVC 前面几章节中,我们都是基于 ASP.NET 空项目 ...
- 一、Core基于MVC的全局过滤器验证
一.Core基于MVC的过滤器验证 1.添加一个过滤器.在Startup 中ConfigureServices方法里添加一个Filters 即我们自己授权代码类. public void Config ...
- 基于ASP.NET core的MVC站点开发笔记 0x01
基于ASP.NET core的MVC站点开发笔记 0x01 我的环境 OS type:mac Software:vscode Dotnet core version:2.0/3.1 dotnet sd ...
- 【ASP.NET Core】MVC中自定义视图的查找位置
.NET Core 的内容处处可见,刷爆全球各大社区,所以,老周相信各位大伙伴已经看得不少了,故而,老周不考虑一个个知识点地去写,那样会成为年度最大的屁话,何况官方文档也很详尽.老周主要扯一下大伙伴们 ...
- Spring MVC入门Demo
1 参考http://blog.csdn.net/haishu_zheng/article/details/51490299,用第二种方法创建一个名为springmvcdemo的Maven工程. 2 ...
- .NET core Quartz 定时任务框架 demo
开始先建个空的web项目. 创建一个新类 QuartzFactory 狠狠的复制就完事了. public class QuartzFactory : IJobFactory { private rea ...
- 【ASP.NET Core】MVC模型绑定——实现同一个API方法兼容JSON和Form-data输入
在上一篇文章中,老周给大伙伴们大致说了下 MVC 下的模型绑定,今天咱们进行一下细化,先聊聊模型绑定中涉及到的一些组件对象. ------------------------------------- ...
随机推荐
- CF gym 100962D Deep Purple [后缀树,树链剖分,线段树]
Codeforces 思路 感觉这个离线的思路好神仙啊qwq 对于每个询问\([l,r]\)其实就是要求\(p_{max}\),使得\(lcs(s[1,p],s[1,r])>p-l\),也就是\ ...
- Elasticsearch单机部署
1.下载安装包 下载地址:https://www.elastic.co/downloads/elasticsearch 我这里下载的是 elasticsearch-6.4.0.tar.gz保存至/op ...
- Ubuntu16.04启动tomcat缓慢问题之解决方案
问题信息: -May- ::] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of Secur ...
- SET NOCOUNT 的用法
SET NOCOUNT 使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息. 语法 SET NOCOUNT { ON | OFF } 注释 当 SET NOCOUNT ...
- 聊聊Beaglebone Black的cape和device tree overlay和dtc命令【转】
本文转载自:https://blog.csdn.net/wyt2013/article/details/16846171 本文是我早期写的,语言略混乱.请直接看我最新整理的,适用于初学者的文章< ...
- Django微信小程序后台开发教程
本文链接:https://blog.csdn.net/qq_43467898/article/details/83187698Django微信小程序后台开发教程1 申请小程序,创建hello worl ...
- Java开发手册-编程规约精选
# Java开发手册-编程规约精选 ## 总约 - 采用驼峰写法 ## 变量 - 首字母小写 ## 方法 - 方法名首字母小写- 参数首字母小写 ## 引用 - <阿里巴巴Java开发手册> ...
- shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)
shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查) Shell脚本与MySQL数据库交互(增删改查) # 环境准备:安装mariadb 数据库 [ro ...
- Tensorflow 循环神经网络 基本 RNN 和 LSTM 网络 拟合、预测sin曲线
时序预测一直是比较重要的研究问题,在统计学中我们有各种的模型来解决时间序列问题,但是最近几年比较火的深度学习中也有能解决时序预测问题的方法,另外在深度学习领域中时序预测算法可以解决自然语言问题等. 在 ...
- 十一、LoadRunner组成和工作原理
一.LoadRunner组成 虚拟用户发生器:Vuser Generator 压力调度和监控中心:Controller 压力生产器:Load Generator 压力结果分析工具:Analysis