laravel 8 如何在单个控制器中使用多个支付网关功能?

How to use multiple payment gateways function in single controller in laravel 8?

我在我的项目中使用 PayPal、Razor pay、Stripe 支付网关。当 select 用户其中一个支付网关时,它会从那里重定向到指定的控制器功能,它会重定向其特定的控制器。我想在单个控制器中编写支付网关的所有功能,以切断客户的重定向。

当用户 select 支付网关并提交表单时,它会重定向到下面提到的控制器功能

 if ($payment_mode->payment_gateway_name == "Paypal") {
                return redirect()->route('paywithpaypal', $planId);
            } else if ($payment_mode->payment_gateway_name == "Razorpay") {
                return redirect()->route('paywithrazorpay', $planId);
            } else if ($payment_mode->payment_gateway_name == "Stripe") {
                return redirect()->route('paywithstripe', $planId);
            } else if ($payment_mode->payment_gateway_name == "Bank Transfer") {
    }

并且在该控制器中定义了所有功能。

创建 类 如下:

  1. 支付控制器
  2. 单独 classes 实现 RazorpayService、StripeService、BankTransferService api
  3. 根据请求参数创建 classRazorpayService、StripeService、BankTransferService 对象的工厂方法

PaymentController 使用工厂方法创建适当服务的对象,并使用输入参数在此对象上调用适当的方法