Magicodes.Pay,是心莱科技团队提供的统一支付库,相关库均使用.NET标准库编写,支持.NET Framework以及.NET Core。目前支持以下支付方式和功能:

  • 支付宝APP支付

  • 支付宝Wap支付

  • 支付宝国际支付

    支持分账

  • 微信小程序支付

  • 微信APP支付

  • 统一支付回调处理

  • 支持日志函数注入(不依赖支付库)

  • 支持支付配置函数注入,以便于支持自定义配置获取逻辑,以应用于不同的场景(比如从配置文件、用户设置获取配置,或者多租户支持)

目前此库我们在很多项目上已经进行了验证,由于项目赶工,许多功能我们并没有添加、迁移或者重构过来,在后续的过程中,我们会逐步来完成这些工作。同时,在Magicodes.Admin开源库中,我们也编写了相关的Demo和实现。

Magicodes.Admin开源库地址:https://gitee.com/xl_wenqiang/Magicodes.Admin.Core

整个支付实现这块,我们在Magicodes.Admin开源库中已经提供了统一支付的Demo,而且我们将会提供根据请求头来自动调用相关支付的功能。如下图所示:

在各个业务支付场景中,我们可以非常方便的调用此统一支付,如下图所示:

VNext

这是目前的下个版本的规划:

  • 支付宝PC支付

  • 微信H5支付

  • 提供默认的回调管理逻辑,支持回调处理函数的注入

具体功能我们会根据项目的情况来迭代,如果你有好的建议或者意见,可以关注我们的公众号“magiccodes”来提交您的意见或者意见。

如何配置

相关库的配置相对比较简单,一般均使用相关Builder类来配置自定义日志逻辑、配置获取逻辑等,具体可以查阅Builder目录下的代码。

配置参考

相关配置请参考此代码:https://gitee.com/xl_wenqiang/Magicodes.Admin.Core/blob/develop/src/unity/Magicodes.Pay/Startup/PayStartup.cs

部分代码如下所示:

支付相关代码可以参考:https://gitee.com/xl_wenqiang/Magicodes.Admin.Core/blob/develop/src/unity/Magicodes.Pay/Services/PayAppService.cs

配置界面参考

如下图所示:

Demo 微信支付Demo

        if (WeChatPayApi == null){throw new UserFriendlyException("支付未开放,请联系管理员!");}var appPayInput = new WeChat.Pay.Dto.AppPayInput{Body = input.Body,OutTradeNo = input.OutTradeNo,Attach = input.CustomData,TotalFee = input.TotalAmount,SpbillCreateIp = _clientInfoProvider?.ClientIpAddress};try{var appPayOutput = WeChatPayApi.AppPay(appPayInput);return Task.FromResult(appPayOutput);}catch (Exception ex){throw new UserFriendlyException(ex.Message);}

 支付宝支付Demo

      if (AlipayAppService == null)

{

           throw new UserFriendlyException("支付未开放,请联系管理员!");        }        var appPayInput = new Alipay.Dto.AppPayInput        {            Body = input.Body,            Subject = input.Subject,            TradeNo = input.OutTradeNo,            PassbackParams = input.CustomData,            TotalAmount = input.TotalAmount        };        try        {            var appPayOutput = await AlipayAppService.AppPay(appPayInput);            return appPayOutput.Response.Body;        }        catch (Exception ex)        {            throw new UserFriendlyException(ex.Message);        } 支付宝国际支付Demo

        if (GlobalAlipayAppService == null){throw new UserFriendlyException("支付未开放,请联系管理员!");}var payInput = new Alipay.Global.Dto.PayInput{Body = input.Body,Subject = input.Subject,TradeNo = input.OutTradeNo,//PassbackParams = input.CustomData,TotalFee = input.TotalAmount,};try{return await GlobalAlipayAppService.Pay(payInput);}catch (Exception ex){throw new UserFriendlyException(ex.Message);}

 国际支付宝分账参考界面

支付回调
 目的

统一回调处理逻辑和回调处理地址

 代码参考

上图的PayAction参考:

        void PayAction(string key, string outTradeNo, string transactionId, int totalFee, JObject data){using (var paymentCallbackManagerObj = iocManager.ResolveAsDisposable<PaymentCallbackManager>()){var paymentCallbackManager = paymentCallbackManagerObj?.Object;if (paymentCallbackManager == null){throw new ApplicationException("支付回调管理器异常,无法执行回调!");}AsyncHelper.RunSync(async () => await paymentCallbackManager.ExecuteCallback(key, outTradeNo, transactionId, totalFee, data));}}

完整回调代码请参考此代码:https://gitee.com/xl_wenqiang/Magicodes.Admin.Core/blob/develop/src/unity/Magicodes.Pay/Startup/PayStartup.cs

回调逻辑参考:

扫码关注

如果喜欢作者的文章,请关注“magiccodes”订阅号以便第一时间获得最新内容。本文版权归作者和湖南心莱信息科技有限公司共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

QQ群:

编程交流群<85318032>

产品交流群<897857351>

更多内容,扫码关注

开源库支付库Magicodes.Pay发布相关推荐

  1. Magicodes.Pay已支持Volo Abp

    Magicodes.Pay已支持Volo Abp 简介 Magicodes.Pay希望打造一个统一支付库,相关库均使用.NET标准库编写,支持.NET Framework以及.NET Core.目前已 ...

  2. Magicodes.Pay,打造开箱即用的统一支付库,已提供ABP模块封装

    Magicodes.Pay,打造开箱即用的统一支付库,已提供ABP模块封装 简介 Magicodes.Pay,是心莱科技团队提供的统一支付库,相关库均使用.NET标准库编写,支持.NET Framew ...

  3. 开源ImageFilter库For IOS源码发布

    开源ImageFilter库For IOS源码发布        鉴于之前有朋友反映将ImageFilterForC直接用于XCODE开发会报出错误的原因.最近正好入手一部MAC PRO,所以顺便将I ...

  4. OpenCV 4.2.0 发布,Intel 开源的计算机视觉库

    OpenCV 是 Intel 开源的计算机视觉库.它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法.OpenCV 拥有包括 300 多个 C 函数的跨平台的中. ...

  5. 《安富莱嵌入式周报》第306期:开源独轮车,Cortex-M85修订版r1发布,Terathon图形数学库,不断变革的IDE开发环境,各个厂家总动员

    往期周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - P ...

  6. Android开源项目及库整理总结

    自己总结的Android开源项目及库. github排名https://github.com/trending, github搜索:https://github.com/search UI Aweso ...

  7. Android开源项目及库整理总结 字数10731 阅读2704 评论2 喜欢85 自己总结的Android开源项目及库。 github排名https://github.com/trending,

    Android开源项目及库整理总结 字数10731 阅读2704 评论2 喜欢85 自己总结的Android开源项目及库. github排名https://github.com/trending, g ...

  8. 【PySlowFast】Facebook开源算法代码库PySlowFast,轻松复现前沿视频理解模型

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 在近些年的视频理解研究中,Facebook AI Research 贡献了许多精彩 ...

  9. python开源代码-这7个开源的Python库,让你轻松代码分析

    原标题:这7个开源的Python库,让你轻松代码分析 开源最前线(ID:OpenSourceTop) 猿妹编译 来源:https://opensource.com/article/18/7/7-pyt ...

最新文章

  1. 语言用加法实现加饭运算_面试官:这个经典的并发问题用 Go 语言如何实现?...
  2. nodejs async
  3. Scala mapValues踩坑记:谨慎使用Scala Map的mapValues, 你需要的可能是transform
  4. 交通仿真软件测试自学,[2018年最新整理]各类交通仿真软件综合介绍.docx
  5. python char 相等_用 Python 实现 Excel文本函数
  6. 【实践】Pytorch nn.Transformer的mask理解
  7. golang ide 下载
  8. Mac 笔记本 对Micro sd卡烧制镜像详解
  9. vb查询mysql数据库实例_初识vb数据库开发之实例5(数据查询)
  10. EasyRecovery免费版一键数据恢复还原软件
  11. 固定IP和自动IP切换bat脚本
  12. PostgreSQL 源码解读(35)- 查询语句#20(查询优化-简化Having和Grou...
  13. 输入底面半径和高,求圆柱体的表面积
  14. 计算机科学概论读后感
  15. 解决远程连接服务器的最大连接数
  16. vuex 的实现原理
  17. 如何在JavaScript中使用Axios
  18. 腾讯soso,请停止你们的流氓蜘蛛爬虫
  19. SpringSecurity-三更草堂-学习笔记
  20. thymeleaf将小数转成整数的方法(去掉小数)

热门文章

  1. 编译安装Centos7.2+Apache2.4.25+PHP7.2.10+Mysql5.6.16
  2. 在Kubernetes集群上部署和管理JFrog Artifactory
  3. 898A. Rounding#数的舍入
  4. H5开发中常用的js方法
  5. javascript事件之:jQuery事件中实例对象和拓展对象之间的通信
  6. 今天正式开通51CTO技术博客
  7. VForum 2008系列之六:分论坛视频-虚拟世界中的应用
  8. 【C#/.NET】不用AutoMapper,我用啥呢?
  9. 如何从一个 C# 的 dump 中挖到机器相关的信息?
  10. C#开源类库推荐:拼多多开放平台SDK,开源免费,支持.NET Core!