简介
Magicodes.Pay希望打造一个统一支付库,相关库均使用.NET标准库编写,支持.NET Framework以及.NET Core。目前已提供Abp及Abp VNext模块的封装,支持开箱即用。
目前已提供Abp(含Abp VNext)模块的封装,支持开箱即用。支持以下支付方式和功能:
当前教程仅适用于Abp VNext。主要步骤如下:
如果仅需某个支付,仅需引用该支付的包。下面以通联支付为例,我们需要在工程中引用此包:
在对应工程的Abp的模块(AbpModule)中,添加对“AbpAllinpayModule”的依赖,如:
整个支付过程中(无论是支付成功还是出现异常),均会记录交易日志。交易日志会记录交易过程中的一些信息,比如客户端信息、交易参数、自定义参数以及异常信息。因此我们需要针对EF添加对TransactionLog的支持。需要在DbContext中添加的完整代码如下所示:
我们需要实现“IPaymentCallbackAction”接口来编写自定义的回调逻辑,一个逻辑需注册一个,通过业务关键字来匹配对应的回调逻辑,比如“缴费支付”、“充值”。如以下示例所示:
注意Key不要重复。
如未自动注册,可以使用以下代码进行手动注册:
支付参数支持配置文件或SettingManager配置,下面以配置文件为例,配置如下所示:
如上述代码所示,配置节点 “Allinpay”对应提供程序的Key。相关支付提供程序的Key如下所示:
值得注意的是,默认情况,回调统一由【Magicodes.Pay.Notify】下的“PayNotifyController”控制器来处理,因此回调地址配置格式如下所示:
配置完成后,就可以使用统一封装的IPayAppService来发起支付。仅需注入IPayAppService,然后调用Pay方法即可。也可以自行再次封装,如下述代码所示:
通过IPayAppService统一支付有如下好处:
如果使用Abp相关模块,则使用起来比较简单,具体您可以参考相关单元测试的编写。主要有以下步骤:
如果仅需某个支付,仅需引用该支付的包。下面以通联支付为例,我们需要在工程中引用此包:
在对应工程的Abp的模块(AbpModule)中,添加对“AbpAllinpayModule”的依赖,如:
整个支付过程中(无论是支付成功还是出现异常),均会记录交易日志。交易日志会记录交易过程中的一些信息,比如客户端信息、交易参数、自定义参数以及异常信息。因此我们需要针对EF添加对TransactionLog的支持。需要在DbContext中添加的完整代码如下所示:
我们需要实现“IPaymentCallbackAction”接口来编写自定义的回调逻辑,一个逻辑需注册一个,通过业务关键字来匹配对应的回调逻辑,比如“缴费支付”、“充值”。如以下示例所示:
注意Key不要重复。
我们可以将回调逻辑写在一个公共的程序集,然后使用以下代码进行注册:
除了上面的方式,我们还可以通过注入IPaymentManager对象,通过其RegisterCallbackAction方法来注册自定义的回调逻辑。
支付参数支持配置文件和SettingManager配置,下面以配置文件为例,配置如下所示:
如上述代码所示,配置节点 “Allinpay”对应提供程序的Key。相关支付提供程序的Key如下所示:
值得注意的是,默认情况,回调统一由【Magicodes.Pay.Notify】下的“PayNotifyController”控制器来处理,因此回调地址配置格式如下所示:
配置完成后,就可以使用统一封装的IPayAppService来发起支付。仅需注入IPayAppService,然后调用Pay方法即可。也可以自行再次封装,如下述代码所示:
通过IPayAppService统一支付有如下好处:
请参考Abp相关模块的封装或者历史代码。
检查日志,相关环节基本上均有日志输出。系统初始化时会打印已注册的支付服务以及回调逻辑,回调时会打印回调进度。如已发起支付,可以查看数据库的交易日志表的数据来辅助排查问题。