पिछली पोस्ट में, हमने लारवेल में भुगतान प्रसंस्करण को संभालने के लिए दो अलग-अलग तरीकों की खोज की:
हालांकि दोनों विधियां प्रभावी हैं, जब रनटाइम स्थितियों (उदाहरण के लिए, उपयोगकर्ता इनपुट, कॉन्फ़िगरेशन सेटिंग्स) के आधार पर भुगतान प्रोसेसर को गतिशील रूप से चुनने की बात आती है तो उनकी अपनी सीमाएं होती हैं।
इस तीसरे और अंतिम भाग में, हम अधिक लचीले दृष्टिकोण पर गौर करेंगे: फ़ैक्टरी पैटर्न का उपयोग करना। यह डिज़ाइन पैटर्न हमें संदर्भ के आधार पर पेमेंटप्रोसेसरइंटरफ़ेस के उचित कार्यान्वयन को चुनने की अनुमति देता है (उदाहरण के लिए, अनुरोध के आधार पर स्ट्राइप या पेपैल के बीच चयन करना)।
फ़ैक्टरी पैटर्न रनटाइम पर विभिन्न कार्यान्वयनों को गतिशील रूप से हल करने के लिए एक स्केलेबल समाधान प्रदान करता है। यहां चरण दर चरण इसे सेट करने का तरीका बताया गया है।
सबसे पहले, आइए एक पेमेंटप्रोसेसरफैक्ट्रीइंटरफेस को परिभाषित करें जो विभिन्न भुगतान प्रोसेसरों को हल करने का तरीका बताता है।
यह इंटरफ़ेस सुनिश्चित करता है कि हमारे द्वारा बनाई गई किसी भी फैक्ट्री में एक गेटप्रोसेसर विधि होगी, जो दिए गए तर्क (उदाहरण के लिए, 'स्ट्राइप' या 'पेपैल') के आधार पर उचित भुगतान प्रोसेसर को वापस करने के लिए जिम्मेदार है।
चरण 2: फ़ैक्टरी कार्यान्वयन बनाएँ
इसके बाद, हम उस कारखाने को लागू करेंगे जो प्रदाता इनपुट के आधार पर उचित भुगतान प्रोसेसर का समाधान करता है।
यह फ़ैक्टरी रनटाइम पर दिए गए इनपुट के आधार पर गतिशील रूप से सही भुगतान प्रोसेसर का चयन करती है। इस उदाहरण में, हम सीधे StripePaymentProcessor और PayPalPaymentProcessor के नए उदाहरण लौटाते हैं। यदि आवश्यक हो, तो बेहतर प्रबंधन के लिए इन कक्षाओं को लारवेल के सर्विस कंटेनर से भी हल किया जा सकता है।
चरण 3: स्ट्राइप और पेपैल प्रोसेसर लागू करें
सुनिश्चित करें कि आपके पास StripePaymentProcessor और PayPalPaymentProcessor दोनों वर्ग हैं जो PaymentProcessorInterface को लागू करते हैं।
उदाहरण: स्ट्राइपपेमेंटप्रोसेसर
उदाहरण: PayPalPaymentProcessor
इसी तरह, स्ट्राइपपेमेंटप्रोसेसर के समान पैटर्न का पालन करते हुए, PayPalPaymentProcessor वर्ग को लागू करें।
चरण 4: फ़ैक्टरी को सर्विस कंटेनर में बाइंड करें
यह सुनिश्चित करने के लिए कि फ़ैक्टरी आपके लारवेल एप्लिकेशन में उपलब्ध है, आपको पेमेंटप्रोसेसर फ़ैक्टरी को लारवेल के सर्विस कंटेनर से बांधना होगा। आप इसे AppServiceProvider में कर सकते हैं।
App\Providers\AppServiceProvider.php में, रजिस्टर विधि के अंदर निम्नलिखित जोड़ें:
public function register() { $this->app->singleton(\App\Contracts\PaymentProcessorFactoryInterface::class, \App\Services\PaymentProcessorFactory::class); }यह बाइंडिंग लारवेल को पेमेंटप्रोसेसरफैक्ट्रीइंटरफेस का अनुरोध होने पर पेमेंटप्रोसेसरफैक्ट्री का उपयोग करने के लिए कहती है, यह सुनिश्चित करते हुए कि पूरे एप्लिकेशन में फैक्ट्री का केवल एक उदाहरण है।
चरण 5: नियंत्रक में फ़ैक्टरी का उपयोग करना
अब जब फ़ैक्टरी स्थापित हो गई है, तो आप अनुरोध इनपुट जैसे रनटाइम डेटा के आधार पर गतिशील रूप से उचित भुगतान प्रोसेसर का चयन करने के लिए इसे अपने नियंत्रकों में इंजेक्ट कर सकते हैं।
उदाहरण: भुगतान नियंत्रक
paymentProcessorFactory = $paymentProcessorFactory; } public function makePayment(Request $request) { $provider = $request->input('provider'); // E.g., 'stripe' or 'paypal' $amount = $request->input('amount'); $currency = $request->input('currency'); $paymentDetails = $request->input('details'); // Get the appropriate payment processor based on the provider $paymentProcessor = $this->paymentProcessorFactory->getProcessor($provider); // Use the selected payment processor to create a payment $response = $paymentProcessor->createPayment($amount, $currency, $paymentDetails); return response()->json($response); } }इस नियंत्रक में, हम निर्भरता इंजेक्शन के माध्यम से PaymentProcessorFactoryInterface इंजेक्ट करते हैं। जब भुगतान का अनुरोध किया जाता है, तो हम अनुरोध के आधार पर भुगतान प्रदाता (उदाहरण के लिए, स्ट्राइप या पेपाल) का निर्धारण करते हैं, इसे फ़ैक्टरी को सौंपते हैं, और गतिशील रूप से उचित भुगतान प्रोसेसर का समाधान करते हैं।
चरण 6: विभिन्न भुगतान प्रदाताओं को संभालना
इस सेटअप में, नियंत्रक अब केवल अनुरोध में प्रदाता का नाम बदलकर विभिन्न भुगतान प्रदाताओं को गतिशील रूप से संभाल सकता है। यह विधि विशेष रूप से तब शक्तिशाली होती है जब आपको तर्क की नकल किए बिना या अपने कोड को विशिष्ट कार्यान्वयन के साथ मजबूती से जोड़े बिना कई भुगतान गेटवे को संभालने की आवश्यकता होती है।
निष्कर्ष
लारवेल 11 में फ़ैक्टरी पैटर्न का उपयोग रनटाइम पर विभिन्न भुगतान प्रोसेसर का चयन करने के लिए अत्यधिक लचीला दृष्टिकोण प्रदान करता है। हमारे द्वारा कवर किए गए चरणों का सारांश यहां दिया गया है:
हमने हार्डकोडेड चयन के साथ एकल भुगतान प्रोसेसर का उपयोग करके इस 3 भागों के ट्यूटोरियल को शुरू किया, फिर हम लारवेल सर्विस कंटेनर बाइंडिंग का उपयोग करके इन कोड ("संकलन समय") कॉन्फ़िगरेशन का उपयोग कर रहे थे, फिर इस भाग में हम डिज़ाइन के साथ रीफैक्टरिंग करते रहे सिद्धांतों और डिज़ाइन पैटर्न को ध्यान में रखते हुए, जिसने हमें कोड को दोबारा तैयार करने की अनुमति दी, जिससे यह हासिल हुआ:
इस सेटअप के साथ, अब हमारे पास लारवेल में भुगतान संभालने के लिए एक शक्तिशाली, लचीली प्रणाली है। यदि हमें अतिरिक्त प्रोसेसर का समर्थन करने की आवश्यकता है, तो हम प्रदाताओं के चयन के लिए तर्क को समर्थन और संशोधित करने और विभिन्न व्यावसायिक तर्क परिदृश्यों को संभालने के लिए आसानी से कारखाने का विस्तार कर सकते हैं।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3