日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/4 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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”的依賴,如:

  • [DependsOn(typeof(AbpAllinpayModule))]
  • 在DbContext中添加名為“TransactionLogs”的DbSet 整個支付過程中(無論是支付成功還是出現異常),均會記錄交易日志。交易日志會記錄交易過程中的一些信息,比如客戶端信息、交易參數、自定義參數以及異常信息。因此我們需要針對EF添加對TransactionLog的支持。需要在DbContext中添加的完整代碼如下所示:

  • public DbSet<TransactionLog> TransactionLogs { get; set; }
  • 注冊回調邏輯 我們需要實現“IPaymentCallbackAction”接口來編寫自定義的回調邏輯。如以下示例所示:

  • public class TestPaymentCallbackAction : 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模块封装的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。