"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > फ़ैक्टरी पैटर्न का उपयोग करके लारवेल में डायनामिक भुगतान प्रोसेसर चयन

फ़ैक्टरी पैटर्न का उपयोग करके लारवेल में डायनामिक भुगतान प्रोसेसर चयन

2024-11-04 को प्रकाशित
ब्राउज़ करें:584

Dynamic Payment Processor Selection in Laravel  Using the Factory Pattern

पिछली पोस्ट में, हमने लारवेल में भुगतान प्रसंस्करण को संभालने के लिए दो अलग-अलग तरीकों की खोज की:

  • हार्डकोडेड सेवा बाइंडिंग
  • प्रासंगिक बंधन.

हालांकि दोनों विधियां प्रभावी हैं, जब रनटाइम स्थितियों (उदाहरण के लिए, उपयोगकर्ता इनपुट, कॉन्फ़िगरेशन सेटिंग्स) के आधार पर भुगतान प्रोसेसर को गतिशील रूप से चुनने की बात आती है तो उनकी अपनी सीमाएं होती हैं।

इस तीसरे और अंतिम भाग में, हम अधिक लचीले दृष्टिकोण पर गौर करेंगे: फ़ैक्टरी पैटर्न का उपयोग करना। यह डिज़ाइन पैटर्न हमें संदर्भ के आधार पर पेमेंटप्रोसेसरइंटरफ़ेस के उचित कार्यान्वयन को चुनने की अनुमति देता है (उदाहरण के लिए, अनुरोध के आधार पर स्ट्राइप या पेपैल के बीच चयन करना)।

फ़ैक्टरी पैटर्न को लागू करना

फ़ैक्टरी पैटर्न रनटाइम पर विभिन्न कार्यान्वयनों को गतिशील रूप से हल करने के लिए एक स्केलेबल समाधान प्रदान करता है। यहां चरण दर चरण इसे सेट करने का तरीका बताया गया है।

चरण 1: एक फ़ैक्टरी इंटरफ़ेस बनाएं

सबसे पहले, आइए एक पेमेंटप्रोसेसरफैक्ट्रीइंटरफेस को परिभाषित करें जो विभिन्न भुगतान प्रोसेसरों को हल करने का तरीका बताता है।

यह इंटरफ़ेस सुनिश्चित करता है कि हमारे द्वारा बनाई गई किसी भी फैक्ट्री में एक गेटप्रोसेसर विधि होगी, जो दिए गए तर्क (उदाहरण के लिए, 'स्ट्राइप' या 'पेपैल') के आधार पर उचित भुगतान प्रोसेसर को वापस करने के लिए जिम्मेदार है।

चरण 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 भागों के ट्यूटोरियल को शुरू किया, फिर हम लारवेल सर्विस कंटेनर बाइंडिंग का उपयोग करके इन कोड ("संकलन समय") कॉन्फ़िगरेशन का उपयोग कर रहे थे, फिर इस भाग में हम डिज़ाइन के साथ रीफैक्टरिंग करते रहे सिद्धांतों और डिज़ाइन पैटर्न को ध्यान में रखते हुए, जिसने हमें कोड को दोबारा तैयार करने की अनुमति दी, जिससे यह हासिल हुआ:

  • गतिशील लचीलापन: फ़ैक्टरी पैटर्न रनटाइम पर विभिन्न भुगतान प्रोसेसर के चयन की अनुमति देता है, जिससे आपका एप्लिकेशन अधिक लचीला और स्केलेबल बन जाता है।
  • ढीला युग्मन: फ़ैक्टरी को इंजेक्ट करके, आपके नियंत्रक भुगतान प्रोसेसर के साथ शिथिल रूप से जुड़ जाते हैं, जिससे भविष्य में भुगतान गेटवे को जोड़ना या बदलना आसान हो जाता है।
  • रखरखाव: यह दृष्टिकोण एक स्वच्छ और अधिक रखरखाव योग्य कोडबेस प्रदान करता है, खासकर जब कई भुगतान विकल्पों से निपटते हैं।

इस सेटअप के साथ, अब हमारे पास लारवेल में भुगतान संभालने के लिए एक शक्तिशाली, लचीली प्रणाली है। यदि हमें अतिरिक्त प्रोसेसर का समर्थन करने की आवश्यकता है, तो हम प्रदाताओं के चयन के लिए तर्क को समर्थन और संशोधित करने और विभिन्न व्यावसायिक तर्क परिदृश्यों को संभालने के लिए आसानी से कारखाने का विस्तार कर सकते हैं।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/websilvercraft/dynamic- payment-processor-selection-in-laravel-11-using-the-factory-pattern-3pbd?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग से संपर्क करें @163.com हटाएं
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3