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") {
}
并且在该控制器中定义了所有功能。
创建 类 如下:
- 支付控制器
- 单独 classes 实现 RazorpayService、StripeService、BankTransferService api
- 根据请求参数创建 classRazorpayService、StripeService、BankTransferService 对象的工厂方法
PaymentController 使用工厂方法创建适当服务的对象,并使用输入参数在此对象上调用适当的方法
我在我的项目中使用 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") {
}
并且在该控制器中定义了所有功能。
创建 类 如下:
- 支付控制器
- 单独 classes 实现 RazorpayService、StripeService、BankTransferService api
- 根据请求参数创建 classRazorpayService、StripeService、BankTransferService 对象的工厂方法
PaymentController 使用工厂方法创建适当服务的对象,并使用输入参数在此对象上调用适当的方法