Magicodes.Pay,打造开箱即用的统一支付库,已提供ABP模块封装
Magicodes.Pay,打造開箱即用的統一支付庫,已提供ABP模塊封裝
簡介
Magicodes.Pay,是心萊科技團隊提供的統一支付庫,相關庫均使用.NET標準庫編寫,支持.NET Framework以及.NET Core。目前已提供Abp模塊的封裝,支持開箱即用。
Nuget
新的包
已棄用的包,不再更新
主要功能
Magicodes.Pay,是心萊科技團隊提供的統一支付庫,相關庫均使用.NET標準庫編寫,支持.NET Framework以及.NET Core。目前已提供Abp模塊的封裝,支持開箱即用。目前支持以下支付方式和功能:
支付寶支付
APP支付
Wap支付
支付寶國際支付
支持分賬
微信支付
小程序支付
APP支付
訂單查詢
企業付款(提現)
退款申請
普通紅包
通聯支付
小程序支付
統一支付回調處理
支持日志函數注入(不依賴支付庫)
支持支付配置函數注入,以便于支持自定義配置獲取邏輯,以應用于不同的場景(比如從配置文件、用戶設置獲取配置,或者多租戶支持)
針對ABP提供模塊封裝,添加模塊依賴即可立即使用。主要包括:
支付渠道注冊(IPaymentRegister)
支付回調邏輯處理(IPaymentCallbackAction)
統一支付服務實現(IToPayService)
統一支付服務封裝(見IPayAppService)
支付管理器封裝(IPaymentManager),包含:
交易日志封裝,自動記錄客戶端信息以及自動異常處理和記錄
僅需編寫一次回調邏輯,即可支持多個支付渠道
業務參數支持更大長度(500)
開始使用
如果使用Abp相關模塊,則使用起來比較簡單,具體您可以參考相關單元測試的編寫。主要有以下步驟:
引用對應的Abp支付的Nuget包 如果僅需某個支付,僅需引用該支付的包。下面以通聯支付為例,我們需要在工程中引用此包:
添加模塊依賴 在對應工程的Abp的模塊(AbpModule)中,添加對“AbpAllinpayModule”的依賴,如:
在DbContext中添加名為“TransactionLogs”的DbSet 整個支付過程中(無論是支付成功還是出現異常),均會記錄交易日志。交易日志會記錄交易過程中的一些信息,比如客戶端信息、交易參數、自定義參數以及異常信息。因此我們需要針對EF添加對TransactionLog的支持。需要在DbContext中添加的完整代碼如下所示:
注冊回調邏輯 我們需要實現“IPaymentCallbackAction”接口來編寫自定義的回調邏輯。如以下示例所示:
{
/// <summary>
/// 業務Key
/// </summary>
public string Key { get; set; } = "繳費支付";
/// <summary>
/// 執行回調
/// </summary>
/// <returns></returns>
public async Task Process(IUnitOfWorkManager unitOfWork, TransactionLog transactionLog)
{
var data = transactionLog.CustomData.FromJsonString<JObject>();
//業務處理
await Task.FromResult(0);
}
}
注意Key不要重復。
向容器中注冊回調邏輯
我們可以將回調邏輯寫在一個公共的程序集,然后使用以下代碼進行注冊:
IocManager.IocContainer.Register(//注冊自定義支付回調邏輯
Classes.FromAssembly(typeof(ApplicationCoreModule).GetAssembly())
.BasedOn<IPaymentCallbackAction>()
.LifestyleTransient()
.Configure(component => component.Named(component.Implementation.FullName))
.WithServiceFromInterface()
);
除了上面的方式,我們還可以通過注入IPaymentManager對象,通過其RegisterCallbackAction方法來注冊自定義的回調邏輯。
發起支付
通過容器獲得IPayAppService,然后調用Pay方法即可。也可以自行封裝:
public async Task<object> Payment(PaymentInput input){
return await _payAppService.Pay(new PayInputBase()
{
Body = $"{input.Name} {input.ChargeProjectName}",
CustomData = input.ToJsonString(),
Key = "繳費支付",
OpenId = input.OpenId,
Subject = input.ChargeProjectName,
TotalAmount = input.Amount,
PayChannel = input.PayChannel
});
}
通過IPayAppService統一支付有如下好處:
統一支付(無論支付寶還是微信各種端的支付,均可統一)
自動記錄交易日志以及進行相關邏輯處理
自定義數據依賴交易日志進行存儲,而不依賴支付渠道,因此支持無業務參數的支付渠道,也支持存儲更多自定義數據
非ABP集成
請參考Abp相關模塊的封裝或者歷史代碼。
官方訂閱號
關注“麥扣聊技術”訂閱號免費獲取:
最新文章、教程、文檔
視頻教程
基礎版免費授權
模板
解決方案
編程心得和理念
相關QQ群
編程交流群<85318032>
產品交流群<897857351>
官方博客/文檔站
http://www.cnblogs.com/codelove/
https://docs.xin-lai.com/
其他開源庫地址
https://gitee.com/magicodes/Magicodes.Admin.Core
https://github.com/xin-lai
總結
以上是生活随笔為你收集整理的Magicodes.Pay,打造开箱即用的统一支付库,已提供ABP模块封装的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软发布研究报告:企业数据管理普遍混乱,
- 下一篇: FineUICore基础版部署到dock