基于.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#自己动手写个操作系统,爽!


相关文章
|
5月前
|
开发框架 .NET C#
ASP.NET Core Blazor 路由配置和导航
大家好,我是码农刚子。本文系统介绍Blazor单页应用的路由机制,涵盖基础配置、路由参数、编程式导航及高级功能。通过@page指令定义路由,支持参数约束、可选参数与通配符捕获,结合NavigationManager实现页面跳转与参数传递,并演示用户管理、产品展示等典型场景,全面掌握Blazor路由从入门到实战的完整方案。
479 6
|
人工智能 芯片
D1net阅闻|OpenAI员工疯狂暗示,内部已成功开发ASI?被曝训出GPT-5但雪藏
D1net阅闻|OpenAI员工疯狂暗示,内部已成功开发ASI?被曝训出GPT-5但雪藏
|
11月前
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
450 0
|
缓存 算法 安全
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
577 12
|
Linux API C#
基于 .NET 开发的多功能流媒体管理控制平台
基于 .NET 开发的多功能流媒体管理控制平台
252 9
|
Web App开发 前端开发 调度
一款基于 .NET + Blazor 开发的智能访客管理系统
一款基于 .NET + Blazor 开发的智能访客管理系统
231 8
|
前端开发 JavaScript C#
基于.NET8+Vue3开发的权限管理&个人博客系统
基于.NET8+Vue3开发的权限管理&个人博客系统
218 7
|
网络协议 C#
基于.NET WinForm开发的一款硬件及协议通讯工具
基于.NET WinForm开发的一款硬件及协议通讯工具
187 7
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
534 5
|
开发框架 算法 中间件
ASP.NET Core 中的速率限制中间件
在ASP.NET Core中,速率限制中间件用于控制客户端请求速率,防止服务器过载并提高安全性。通过`AddRateLimiter`注册服务,并配置不同策略如固定窗口、滑动窗口、令牌桶和并发限制。这些策略可在全局、控制器或动作级别应用,支持自定义响应处理。使用中间件`UseRateLimiter`启用限流功能,并可通过属性禁用特定控制器或动作的限流。这有助于有效保护API免受滥用和过载。 欢迎关注我的公众号:Net分享 (239字符)
348 1