asp.net core 支付宝支付( 电脑2.0)
支付宝电脑支付实测在手机浏览器也可以唤醒手机支付宝进行支付,因此也可以作为支付宝手机web支付方式。支付宝电脑支付流程为使用支付宝官方sdk通过获取的支付宝参数构造DefaultAopClient实例,操作实例设置SetBizModel,设置SetNotifyUrl最后执行SdkExecute方法得到AlipayTradeAppPayResponse实例的Body属性,前端只需要获取该Body值写入到document中(相当于写入一个自动提交的表单)即可跳转到支付宝支付。
1.asp.net core平台没有支付宝官方sdk,但可以在nuget中搜索Alipay.AopSdk.Core(第三方库)并安装,该sdk功能和官方 framework版本的sdk的功能一致可以直接使用

2.定义支付宝配置类,配置类可以填写默认参数使用默认值,也可以从数据库/配置中读取配置赋值到该类,定义如下
public class AlipayConfig
{
// 应用ID,您的APPID
public string app_id = ""; // 支付宝网关
public string gatewayUrl = "https://openapi.alipay.com/gateway.do"; // 商户私钥,您的原始格式RSA私钥
public string private_key = ""; // 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥,注意不是应用公钥,不是应用公钥,不是应用公钥。
public string alipay_public_key = ""; // 签名方式
public string sign_type = "RSA2"; // 编码格式
public string charset = "UTF-8"; // 同步回调地址
public string return_url = "; // 异步回调地址
public string notify_url = "";
}
3.支付宝电脑2.0支付业务类,控制器中直接调用该业务方法,返回的一串表单字符串ajax传给前端直接追加写入到body中即可跳转支付宝支付
public class AlipayService
{
#region 字段
AlipayConfig alipayConfig = new AlipayConfig(); #endregion #region 构造方法
public AlipayService()
{ }
public AlipayService(AlipayConfig alipayConfig)
{
this.alipayConfig = alipayConfig;
}
#endregion /// <summary>
/// 支付宝电脑网站2.0支付,成功返回表单信息直接写入Response,失败返回空
/// </summary>
/// <param name="out_trade_no">订单号</param>
/// <param name="subject">订单名称</param>
/// <param name="total_amout">付款金额</param>
/// <param name="body">商品描述</param>
/// <returns></returns>
public string GetAliPayTradePayRes(string out_trade_no, string subject, string total_amout, string body)
{
DefaultAopClient client = new DefaultAopClient(alipayConfig.gatewayUrl, alipayConfig.app_id, alipayConfig.private_key, "json", "1.0", alipayConfig.sign_type, alipayConfig.alipay_public_key, alipayConfig.charset, false); // 组装业务参数model
AlipayTradePagePayModel model = new AlipayTradePagePayModel();
model.Body = body;
model.Subject = subject;
model.TotalAmount = total_amout;
model.OutTradeNo = out_trade_no;
model.ProductCode = "FAST_INSTANT_TRADE_PAY"; AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
// 设置同步回调地址
request.SetReturnUrl(alipayConfig.return_url);
// 设置异步通知接收地址
request.SetNotifyUrl(alipayConfig.notify_url);
// 将业务model载入到request
request.SetBizModel(model); AlipayTradePagePayResponse response = null;
try
{
response = client.pageExecute(request, null, "post");
//返回正常生成的表单信息,自动提交到支付宝页面,原生成信息可见改为隐藏
return response.Body.Replace("<form", "<form style='display:none'");
}
catch (Exception exp)
{
return "";
}
}
}
asp.net core 支付宝支付( 电脑2.0)的更多相关文章
- yii2 支付宝支付教程 [ 2.0 版本 ]
yii2 支付宝支付教程 [ 2.0 版本 ] 支付宝支付流程个人理解大致就这三步1.前台页面将支付信息数据通过立即支付按钮 ajax提交到订单处理层2.在订单处理层引用支付宝的接口 将支付数据写入 ...
- ASP.NET Core Web 支付功能接入 支付宝-电脑网页支付篇
这篇文章将介绍ASP.NET Core中使用 开源项目 Payment,实现接入支付宝-电脑网页支付接口及同步跳转及异步通知功能. 开发环境:Win 10 x64.VS2017 15.6.4..NET ...
- 【转载】ASP.NET Core Web 支付功能接入 支付宝-电脑网页支付篇
转自:http://www.cnblogs.com/essenroc/p/8627775.html 这篇文章将介绍ASP.NET Core中使用 开源项目 Payment,实现接入支付宝-电脑网页支付 ...
- ASP.NET Core Web 支付功能接入 微信-扫码支付篇
这篇文章将介绍ASP.NET Core中使用 开源项目 Payment,实现接入微信-扫码支付及异步通知功能. 开发环境:Win 10 x64.VS2017 15.6.4..NET Core SDK ...
- 【转载】ASP.NET Core Web 支付功能接入 微信-扫码支付篇
转自:http://www.cnblogs.com/essenroc/p/8630730.html 这篇文章将介绍ASP.NET Core中使用 开源项目 Payment,实现接入微信-扫码支付及异步 ...
- ASP.NET Core Web 支付功能接入 微信-扫码支付篇(转)
原文 https://www.cnblogs.com/essenroc/p/8630730.html // 随着版本更迭,新版本可能无法完全适用,请参考仓库内的示例. 这篇文章将介绍ASP.NET C ...
- 升级 asp.net core 1.1 到 2.0 preview
Upgrading to .NET Core 2.0 Preview 1 更新 依赖的类库 改为 标准库 2 web app 更改 csproj 文件---升级版本 <PropertyGrou ...
- ASP.NET Core 1.0 静态文件、路由、自定义中间件、身份验证简介
概述 ASP.NET Core 1.0是ASP.NET的一个重要的重新设计. 例如,在ASP.NET Core中,使用Middleware编写请求管道. ASP.NET Core中间件对HttpCon ...
- 探索ASP.NET Core 3.0系列一:新的项目文件、Program.cs和generic host
前言:在这篇文章中我们来看看ASP.Net Core 3.0应用程序中一些基本的部分—— .csproj项目文件和Program.cs文件.我将会介绍它们从 ASP.NET Core 2.x 中的默认 ...
随机推荐
- 【输入法】Rime-中州韵 基本设置 附:官方定制指南
前言 不知不觉就到了年终了,距离上次更新博客已经有一个半月,这段时间天天在加班,也没作一下新的学习计划,趁着元旦放假,写一点好玩的东西,这次要记录的是一点关于Rime相关的东西,文章本身不会长,只是说 ...
- jQuery 选择城市,显示对应的即时时区时间
因客户需要,我们CRM系统中,jQuery 弄个时区插件 如图: HTML: <div id="cityDate"> <i class="P_arrow ...
- MySQL锁解决并发问题详解
文章分为以下几个要点 问题描述以及解决过程 MySQL锁机制 数据库加锁分析 下面讨论的都是基于MySQL的InnoDB. 0. 问题描述以及解决过程 因为涉及到公司利益问题,所以下面很多代码和数据库 ...
- PHP 将amr音频文件转换为mp3格式
说下整体思路 1.服务器安装ffmpeg 2.使用ffmpeg -i 指令来转换amr为mp3格式(这个到时候写在PHP代码中,使用exec函数执行即可) 3.在网页端使用HTML5的audio标签来 ...
- 第18月第21日 vue cnpm
1. 首先我们需要下载npm,因为我已经提前安装了node.js,安装包里面集成了npm,然后我们就可以利用npm命令从获取淘宝镜像的cnpm了. 1.打开命令行窗口,输入 npm install - ...
- Database学习 - mysql数据类型约束
mysql数据类型 - 属性
- Dom4j向XML中增加节点与属性——(四)
先获取到节点,然后在节点山添加Element 添加节点 添加属性 设置开始标签与结束标签的值book.addElement("描述").addAttribute("nam ...
- C++ 中的指针、引用以及函数调用中的问题
参考链接:https://www.cnblogs.com/dolphin0520/archive/2011/04/03/2004869.html 函数传参的方式有三种: (1)值传递: (2)引用传递 ...
- gamma校正
1 gamma校正背景 在电视和图形监视器中,显像管发生的电子束及其生成的图像亮度并不是随显像管的输入电压线性变化,电子流与输入电压相比是按照指数曲线变化的,输入电压的指数要大于电子束的指数.这说明暗 ...
- Linux串口—struct termios结构体【转】
转自:https://blog.csdn.net/yemingzhu163/article/details/5897156 一.数据成员 termios 函数族提供了一个常规的终端接口,用于控制非同步 ...