आप अपना कोड इस तरह से डिजाइन करना चाहते हैं जैसे आपके डेटा को वैध स्थिति में रखा गया हो।
आपके सामने आने वाली बड़ी देयता यह है कि आप किसी भी कारण से डेटा को भेजते हैं, और फिर, आपके अंत में कुछ विफल रहता है। आपने अपने ग्राहक से शुल्क लिया है, लेकिन किसी भी कारण से, आप इस तथ्य को नहीं जानते! आखिरकार, कुछ परेशान ग्राहक फोन पर आप पर चिल्ला रहे हैं। यह एक बुरा समय है।
सामान्य विचार कुछ सुरक्षा उपायों को रखना है ताकि आप इन प्रकार की समस्याओं की पहचान कर सकें। समस्या बहुत दुर्लभ होनी चाहिए, अगर यह कभी भी होता है, तो गड़बड़ी को ठीक करना शायद मैन्युअल प्रक्रिया होगी।
यहाँ मैं क्या कर सकता है:
- डिजाइन एक डेटाबेस तालिका है कि भुगतान पटरियों (इसे "भुगतान" कहते हैं), और इसे अपने "आदेश" तालिका से संबंधित हैं (ताकि payment.order_id संदर्भ order.id)।
- जब आपके गेटवे से बातचीत करने का समय हो, तो एक नया भुगतान रिकॉर्ड स्थापित करें, जिसमें कोई भी गैर-संवेदनशील डेटा है जिसे आप भुगतान गेटवे में पास करने वाले हैं। अपनी भुगतान तालिका में "स्थिति" कॉलम रखें, और इसे "लंबित"
- पर सेट करें अपने गेटवे के साथ ऑथ/कैप्चर लेनदेन का प्रयास करें। प्रतिक्रिया प्राप्त करने पर, "अनुमोदित", "अस्वीकृत", या "त्रुटि" में भुगतान रिकॉर्ड स्थिति अपडेट करें और किसी भी प्रासंगिक मेटाडेटा (अस्वीकृति कारण, लेनदेन आईडी इत्यादि) को सहेजें। अगर गेटवे का समय समाप्त हो जाता है, तो शायद यह सिर्फ एक प्रकार की "त्रुटि" है, हालांकि आप एक या दो बार फिर से प्रयास कर सकते हैं।
हर समय एक क्रॉन नौकरी चलाएं और फिर "लंबित" भुगतान रिकॉर्ड की तलाश करें, और 30 सेकंड से अधिक कहें। यदि आपको कोई भी पता चलता है, तो आतंक और डेवलपर/ऑपरेशंस व्यक्ति को बताएं।
निश्चित रूप से अन्य चीजें हैं जो गलत हो सकती हैं, लेकिन यह एक बड़ी बात है जो दिमाग में आती है, और मैंने जो रणनीति वर्णित की है वह एक है जिसे मैंने कई मौकों पर जोखिम को कम करने के लिए उपयोग किया है।
"लेनदेन की बड़ी मात्रा" से आपका क्या मतलब है? क्या आप हमें एक अनुमानित अनुमान दे सकते हैं? – webbiedave
अपने उपयोगकर्ताओं को पेपैल, Google Checkout, ... – Stephen
के साथ केवल 200 दिन प्रति दिन एक पक्ष के साथ एकीकरण और एकीकृत करें, लेकिन यह जल्द ही लगभग 1000 तक बढ़ने की उम्मीद है। तो अभी भी काफी छोटा है, लेकिन इतना बड़ा है कि हमें कुछ सावधानी बरतने और मजबूत कोड लिखने की आवश्यकता है जो सर्वर टाइमआउट और समवर्ती मुद्दों जैसे अप्रत्याशित मुद्दों को संभाल सकता है। – nick