gpt4 book ai didi

c# - 用于多个支付网关的最佳模式

转载 作者:行者123 更新时间:2023-12-05 07:54:50 24 4
gpt4 key购买 nike

要求:

我需要与多个支付网关集成。但是,客户端仅使用其中一个可用的,并且是使用管理员设置配置的。

当前系统:

我为每个支付网关分别编写了一个库。随着网关集成请求(源)的增加,这造成了维护噩梦和项目的潜在增加。

问题

有人可以建议我在这种情况下使用的设计模式,可以创建接口(interface)和公共(public)设置并根据需要实现网关,从而减少重复代码吗?

最佳答案

我会创建一个标准接口(interface)来处理常见操作。有一组传递给这些方法的域对象。

例如,要创建付款,您可能有一个 PaymentCardDetails 模型、一个 AddressModel 等。您的界面将有一个方法 MakePayment 或类似方法,例如:

public MakePaymentResponse MakePayment(PaymentCardDetails cardDetails, AddressModel address);

那么您的每个支付网关都应该使用自己的实现来实现此接口(interface)。

然后使用 IoC(控制反转)/DI(依赖注入(inject))根据提供的配置值决定在运行时使用哪个接口(interface)。

在代码中使用支付网关的方法中,您将使用构造函数注入(inject)在接口(interface)中传递,您的 DI 框架将负责选择正确的实现。例如

public class Payment {

private readonly IPaymentGateway _paymentGateway;

public Payment(IPaymentGateway paymentGateway) {
_paymentGateway = paymentGateway;
}

public MyMethod() {
//get your models prepared etc.
_paymentGateway.MakePayment(cardDetails, addressDetails);
}

关于c# - 用于多个支付网关的最佳模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30955462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com