开源库支付库Magicodes.Pay发布
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发布的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 8中的范围类型(Range Typ
- 下一篇: NetCore基于EasyNetQ的高级