基于.Net Core开发的支付SDK,简化支付功能开发

简介: 基于.Net Core开发的支付SDK,简化支付功能开发

更多开源项目请查看:一个专注推荐.Net开源项目的榜单


在我们做项目中,不管是电商系统、外卖系统、还是上门维修系统等等,都需要支付功能,这就需要我们与第三方支付平台进行对接,但是第三方平台文档,往往都存在很多小细节问题,基本都需要靠调试来完成支付功能,特别是第三平台升级后,我们又需要进行调整,极其浪费时间。


所以,今天给大家推荐一个基于.Net Core开发的支付SDK,让我们可以快速集成支付功能。


项目简介

这是基于.NetCore 开发的支付SDK,支持微信支付、支付宝支付平台,作者一直在迭代升级,支持最新版本.Net Core 7。

技术架构

1、跨平台:这是基于.NetCore开发的系统,可以部署在Docker,Windows,Linux,Mac;

项目结构


src文件夹为支付宝、微信SDK源码,samples文件夹为示例源码。


SDK功能

1、支持:支付宝、微信支付平台,封装了的所有API,简化操作。


2、微信:支持V2、V3版本。


3、示例代码:包含二维码/条码/声波支付、网页支付、H5支付、APP支付,以及退款流程、订单查等功能的示例。

使用示例

支付宝网页支付,前端源码

<form asp-controller="Alipay" asp-action="PagePay" target="_blank">
    <div asp-validation-summary="All" class="text-danger"></div>
    <div class="form-group">
        <label asp-for="OutTradeNo"></label>
        <input type="text" class="form-control" asp-for="OutTradeNo" value="@DateTime.Now.ToString("yyyyMMddHHmmssfff")" />
    </div>
    <div class="form-group">
        <label asp-for="Subject"></label>
        <input type="text" class="form-control" asp-for="Subject" value="电脑网站支付测试" />
    </div>
    <div class="form-group">
        <label asp-for="ProductCode"></label>
        <input type="text" class="form-control" asp-for="ProductCode" value="FAST_INSTANT_TRADE_PAY" />
    </div>
    <div class="form-group">
        <label asp-for="Body"></label>
        <input type="text" class="form-control" asp-for="Body" value="电脑网站支付描述信息" />
    </div>
    <div class="form-group">
        <label asp-for="TotalAmount"></label>
        <input type="text" class="form-control" asp-for="TotalAmount" value="0.01" />
    </div>
    <div class="form-group">
        <label asp-for="ReturnUrl"></label>
        <input type="text" class="form-control" asp-for="ReturnUrl" value="http://domain.com/alipay/return/pagepay" />
    </div>
    <div class="form-group">
        <label asp-for="NotifyUrl"></label>
        <input type="text" class="form-control" asp-for="NotifyUrl" value="http://domain.com/alipay/notify/pagepay" />
    </div>
    <button type="submit" class="btn btn-primary">提交请求</button>
</form>

后端源码

处理前端请求的参数,并提交至支付宝。

/// <summary>
/// 电脑网站支付
/// </summary>
/// <param name="viewModel"></param>
[HttpPost]
public async Task<IActionResult> PagePay(AlipayTradePagePayViewModel viewModel)
{
    var model = new AlipayTradePagePayModel
    {
        Body = viewModel.Body,
        Subject = viewModel.Subject,
        TotalAmount = viewModel.TotalAmount,
        OutTradeNo = viewModel.OutTradeNo,
        ProductCode = viewModel.ProductCode
    };
    var req = new AlipayTradePagePayRequest();
    req.SetBizModel(model);
    req.SetNotifyUrl(viewModel.NotifyUrl);
    req.SetReturnUrl(viewModel.ReturnUrl);
    var response = await _client.PageExecuteAsync(req, _optionsAccessor.Value);
    return Content(response.Body, "text/html", Encoding.UTF8);
}


支付成功异步回调

/// <summary>
/// 电脑网站支付异步通知
/// </summary>
[Route("pagepay")]
[HttpPost]
public async Task<IActionResult> PagePay()
{
    try
    {
        var notify = await _client.CertificateExecuteAsync<AlipayTradePagePayNotify>(Request, _optionsAccessor.Value);
        switch (notify.TradeStatus)
        {
            case AlipayTradeStatus.Success: // 支付成功
                _logger.LogInformation("电脑网站支付异步通知-交易支付成功 => OutTradeNo: " + notify.OutTradeNo);
                return AlipayNotifyResult.Success;
            case AlipayTradeStatus.Closed: // 交易关闭
                _logger.LogInformation("电脑网站支付异步通知-未付款交易超时关闭,或支付完成后全额退款 => OutTradeNo: " + notify.OutTradeNo);
                return AlipayNotifyResult.Success;
            case AlipayTradeStatus.Finished: // 交易完结
                _logger.LogInformation("电脑网站支付异步通知-交易结束,不可退款 => OutTradeNo: " + notify.OutTradeNo);
                return AlipayNotifyResult.Success;
            default:
                return AlipayNotifyResult.Failure;
        }
    }
    catch (AlipayException ex)
    {
        _logger.LogWarning("出现异常: " + ex.Message);
        return AlipayNotifyResult.Failure;
    }}

项目地址


Github:


https://github.com/essensoft/paylink


Gitee:


https://gitee.com/essensoft/paylink


- End -


推荐阅读


一个简单、功能完整的WMS仓库管理系统

推荐一个.Net分布式微服务开发框架

一款统计摸鱼时长的开源项目

一个基于.Net开发齐全的加密库

用C#自己动手写个操作系统,爽!


相关文章
|
1月前
|
存储 开发框架 JSON
ASP.NET Core OData 9 正式发布
【10月更文挑战第8天】Microsoft 在 2024 年 8 月 30 日宣布推出 ASP.NET Core OData 9,此版本与 .NET 8 的 OData 库保持一致,改进了数据编码以符合 OData 规范,并放弃了对旧版 .NET Framework 的支持,仅支持 .NET 8 及更高版本。新版本引入了更快的 JSON 编写器 `System.Text.UTF8JsonWriter`,优化了内存使用和序列化速度。
|
2月前
|
开发框架 监控 前端开发
在 ASP.NET Core Web API 中使用操作筛选器统一处理通用操作
【9月更文挑战第27天】操作筛选器是ASP.NET Core MVC和Web API中的一种过滤器,可在操作方法执行前后运行代码,适用于日志记录、性能监控和验证等场景。通过实现`IActionFilter`接口的`OnActionExecuting`和`OnActionExecuted`方法,可以统一处理日志、验证及异常。创建并注册自定义筛选器类,能提升代码的可维护性和复用性。
|
2月前
|
开发框架 .NET 中间件
ASP.NET Core Web 开发浅谈
本文介绍ASP.NET Core,一个轻量级、开源的跨平台框架,专为构建高性能Web应用设计。通过简单步骤,你将学会创建首个Web应用。文章还深入探讨了路由配置、依赖注入及安全性配置等常见问题,并提供了实用示例代码以助于理解与避免错误,帮助开发者更好地掌握ASP.NET Core的核心概念。
98 3
|
1月前
|
开发框架 JavaScript 前端开发
一个适用于 ASP.NET Core 的轻量级插件框架
一个适用于 ASP.NET Core 的轻量级插件框架
|
2月前
|
开发框架 NoSQL .NET
利用分布式锁在ASP.NET Core中实现防抖
【9月更文挑战第5天】在 ASP.NET Core 中,可通过分布式锁实现防抖功能,仅处理连续相同请求中的首个请求,其余请求返回 204 No Content,直至锁释放。具体步骤包括:安装分布式锁库如 `StackExchange.Redis`;创建分布式锁服务接口及其实现;构建防抖中间件;并在 `Startup.cs` 中注册相关服务和中间件。这一机制有效避免了短时间内重复操作的问题。
|
3月前
|
开发框架 监控 .NET
开发者的革新利器:ASP.NET Core实战指南,构建未来Web应用的高效之道
【8月更文挑战第28天】本文探讨了如何利用ASP.NET Core构建高效、可扩展的Web应用。ASP.NET Core是一个开源、跨平台的框架,具有依赖注入、配置管理等特性。文章详细介绍了项目结构规划、依赖注入配置、中间件使用及性能优化方法,并讨论了安全性、可扩展性以及容器化的重要性。通过这些技术要点,开发者能够快速构建出符合现代Web应用需求的应用程序。
57 0
|
3月前
|
缓存 数据库连接 API
Entity Framework Core——.NET 领域的 ORM 利器,深度剖析其最佳实践之路
【8月更文挑战第28天】在软件开发领域,高效的数据访问与管理至关重要。Entity Framework Core(EF Core)作为一款强大的对象关系映射(ORM)工具,在 .NET 开发中扮演着重要角色。本文通过在线书店应用案例,展示了 EF Core 的核心特性和优势。我们定义了 `Book` 实体类及其属性,并通过 `BookStoreContext` 数据库上下文配置了数据库连接。EF Core 提供了简洁的 API,支持数据的查询、插入、更新和删除操作。
116 0
|
3月前
|
JavaScript 前端开发 Java
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
91 0
|
16天前
|
Java Linux API
Android SDK
【10月更文挑战第21天】
48 1
|
26天前
|
程序员 开发工具 Android开发
Android|使用阿里云推流 SDK 实现双路推流不同画面
本文记录了一种使用没有原生支持多路推流的阿里云推流 Android SDK,实现同时推送两路不同画面的流的方法。
46 7
下一篇
无影云桌面