यहां जिस तरह से मैंने अवधारणाओं को हमेशा समझा है, और Magento में भुगतान मॉड्यूल को लागू करने के लिए आपको क्या जानने की आवश्यकता होगी। आपके विशिष्ट "जहां यह होता है" के उत्तर नीचे बोल्ड किए जाते हैं, हालांकि यह उतना आसान नहीं है जितना आप उम्मीद कर रहे हैं।
प्री-इंटरनेट, ईंट और मोर्टार क्रेडिट कार्ड लेनदेन दो चरण की प्रक्रिया थी।
बिक्री के समय, जब व्यापारी ने उपभोक्ता के क्रेडिट कार्ड को खरीद के लिए लिया, तो वे इसे बिक्री के एक बिंदु के माध्यम से स्लाइड करेंगे जो क्रेडिट कार्ड के केंद्रीय कार्यालय में कॉल करेगा और पूछेगा "क्या यह कार्ड अधिकृत है यह नेटवर्क, और यह विशेष उपभोक्ता की उपलब्ध क्रेडिट की लाइन है जो इस खरीद को अनुमति देने के लिए पर्याप्त है "।
यदि खरीद स्वीकार कर लिया गया था (अस्वीकार करने के विपरीत), चार्ज अधिकृत कहा गया था। उपभोक्ता अपना उत्पाद लेगा, और बिक्री प्रणाली/नकद रजिस्टर के बिंदु पर ध्यान दिया जाएगा कि लेनदेन अधिकृत था। फिर, दिन के अंत में, या सप्ताह के अंत में, किसी अन्य पूर्वनिर्धारित नियमित शेड्यूल पर, या जब मालिक ने पीने से रोकने का फैसला किया, तो व्यापारी अपने सभी अधिकृत रसीदों के बावजूद जायेंगे और अन्य अनुरोध पर केंद्रीय कार्यालयसे लेनदेन को अधिकृत करता है। धन को कैप्चर करना वह व्यापारी के खाते में पैसा डालता है।
यह अभी भी अधिकांश गेटवे द्वारा उपयोग में मॉडल है, और यह डोमेन मॉडल है कि Magento Inc. ने अपने भुगतान मॉड्यूल के लिए आवेदन करना चुना है।
जिस तरह से चीजें चलाना है, जब कोई उपभोक्ता अंतिम चेकआउट चरणों तक पहुंचता है Magento जैसे सिस्टम में, Magento गेटवे के एपीआई के लिए प्राधिकरण अनुरोध जारी करता है। यदि लेनदेन सफल होता है, तो आदेश प्रणाली में स्वीकार किया जाता है, और प्राधिकरण अनुरोध से एक अद्वितीय आईडी संग्रहीत की जाती है। इसके बाद, जब उपभोक्ता के सामान जहाज, एक स्टोर मालिक एक चालान बनाने के लिए Magento व्यवस्थापक का उपयोग करता है। इस चालान का निर्माण एक कैप्चर अनुरोध जारी करता है (प्रमाणीकरण अनुरोध से लौटाई गई एक स्टोर आईडी का उपयोग करके)। यह वह जगह है जहां ये विधि कॉल Magento में जारी की जाती हैं।
हालांकि, चीजें मुश्किल हो जाती हैं क्योंकि प्रत्येक भुगतान गेटवे इन अवधारणाओं को थोड़ा अलग तरीके से व्याख्या करता है, और प्रत्येक व्यापारी अपने "तब तक कैप्चर नहीं करता जब तक हम जिम्मेदार नहीं होते" जिम्मेदारियां अलग-अलग होती हैं। ऊपर वर्णित परिदृश्य के अतिरिक्त, भुगतान मॉड्यूल में एक सिस्टम कॉन्फ़िगरेशन मान होता है जिसे भुगतान कार्य के नाम से जाना जाता है। इसे पर सेट किया जा सकता है केवल प्राधिकृत करें, जो ऊपर वर्णित प्रवाह को लागू करेगा। इसे पर भी सेट किया जा सकता है प्राधिकृत करें और कैप्चर करें, जो ऑर्डर दिए जाने पर भुगतान को प्राधिकृत और कैप्चर करेगा। यह और भ्रमित हो जाता है क्योंकि यद्यपि विधि को प्राधिकृत और कैप्चर कहा जाता है, लेकिन Magento के वर्तमान संस्करण केवल इस मोड में सेट होने पर कैप्चर अनुरोध जारी करेंगे (कम से कम Authorize.net के लिए), और Authorize.net, आंतरिक रूप से, छोड़ देगा अधिकांश दिनों के लिए अधिकृत लेकिन कब्जे वाले राज्य में अनुरोधों को कैप्चर करें। Magento ऑर्डर और भुगतान कैसे प्रबंधित करता है और चालान कोडबेस का एक क्षेत्र है जो संस्करण से संस्करण में बहुत कुछ बदलता है।
तो, Magento भुगतान मॉड्यूल सिस्टम के पीछे विचार क्लस्टर एफ --- से प्रोग्रामिंग भुगतान है जो प्रोग्रामिंग भुगतान गेटवे तर्क है। आपके authorize
विधि में आप अपने भुगतान गेटवे के अधिकृत API पर कॉल लागू करते हैं (या इस बिंदु पर जो भी चेक और तर्क आप करना चाहते हैं)। यह विधि एक भुगतान वस्तु और राशि पारित की जाती है। आप आप अनुरोध करते हैं/प्रदर्शन-your-तर्क और यह जो भी कारण के लिए अमान्य है निर्धारित करते हैं तो एक अपवाद के साथ
Mage::throwException('...');
यह बताता है Magento प्राधिकरण विफल रहा है, और यह उसके अनुसार कार्य करेंगे (एक त्रुटि संदेश दिखाने के लिए, आदि फेंक ।)। अन्यथा, आप भुगतान वस्तु पर डेटा सदस्यों सेट और एक
return $this;
डेटा सदस्यों चीजें आप, बाद में की आवश्यकता होगी जब भुगतान पर कब्जा कर रहे हैं जारी करते हैं। जो हमें आपके भुगतान मॉड्यूल की capture
विधि पर लाता है। इस विधि को एक भुगतान वस्तु और राशि भी भेजी जाती है। इस विधि में आप अपना कैप्चर अनुरोध जारी करते हैं। भुगतान वस्तु cc_trans_id
डेटा सदस्य
$payment->getCcTransId()
जो आप अपने प्रवेश द्वार के खिलाफ एक पर कब्जा जारी करने की अनुमति देगा होगा। यह उन डेटा सदस्यों में से एक है जिन्हें आप authorize
में सहेजने के लिए ज़िम्मेदार हैं। दोबारा, यदि आपका कोड निर्धारित करता है कि कैप्चर विफल हो गया है, तो आप एक अपवाद फेंक देते हैं। अन्यथा, आप return $this
।
Authorize.net भुगतान मॉड्यूल में यह कैसे किया जाता है इसके अच्छे उदाहरण हैं।
app/code/core/Mage/Paygate/Model/Authorizenet.php
उदाहरण के लिए, capture
विधि
public function capture(Varien_Object $payment, $amount)
{
if ($payment->getCcTransId()) {
$payment->setAnetTransType(self::REQUEST_TYPE_PRIOR_AUTH_CAPTURE);
} else {
$payment->setAnetTransType(self::REQUEST_TYPE_AUTH_CAPTURE);
}
$payment->setAmount($amount);
$request= $this->_buildRequest($payment);
$result = $this->_postRequest($request);
//...
यहाँ यदि भुगतान एक cc_trans_id
है पर कब्जा विधि जाँच कर रहा है के इस हिस्से पर विचार करें।परिणाम के आधार पर, यह करने के लिए anet_trans_type
सेट या तो:
self::REQUEST_TYPE_PRIOR_AUTH_CAPTURE
self::REQUEST_TYPE_AUTH_CAPTURE
यह मान तो एपीआई अनुरोध वस्तु द्वारा प्रयोग किया जाता है या तो
- एक पूर्व अधिकृत लेनदेन
- कैप्चरिंग के लिए एक API कॉल भेजने के लिए तत्काल कैप्चर
आशा है कि मदद करता है, और शुभकामनाएँ!
इस वाह उत्तर के लिए धन्यवाद, और यह इस तरह है, चीजें अब मेरे लिए बहुत स्पष्ट दिखती हैं। – zokibtmkd
धन्यवाद एलन। यह बहुत समझाया। – naquiuddin
इस स्पष्टीकरण के लिए आपको बहुत बहुत धन्यवाद :) – nnevala