मुझे हमेशा लगता है कि txn_id
आईपीएन संदेश के साथ भेजा गया अद्वितीय है। पेपैल दिशानिर्देश इस विचार का समर्थन करते हैं - https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_admin_IPNIntroपेपैल आईपीएन अद्वितीय पहचानकर्ता
डुप्लिकेट आईपीएन संदेशों से बचें। जांचें कि आपने आईपीएन संदेश में लौटाई गई लेनदेन आईडी द्वारा पहचाने गए लेनदेन को पहले ही संसाधित नहीं किया है। आपको फ़ाइल या डेटाबेस में आईपीएन संदेशों द्वारा लौटाए गए लेनदेन आईडी को स्टोर करने की आवश्यकता हो सकती है ताकि आप डुप्लिकेट की जांच कर सकें। यदि पेपैल द्वारा भेजी गई लेनदेन आईडी एक डुप्लिकेट है, तो आपको इसे फिर से संसाधित नहीं करना चाहिए।
हालांकि मुझे पता चला कि पेपैल के ई-चेक भुगतान आईपीएन को एक ही लेनदेन आईडी के साथ दो बार भेजा जाता है। एक बार payment_status
के साथ शुरुआती भुगतान के दौरान "लंबित" के रूप में और फिर कुछ दिनों के बाद जब eCheck वास्तव में payment_status
के साथ "पूर्ण" के रूप में प्रक्रिया करता है।
मैं दोनों लेनदेन को स्टोर करना चाहता हूं, लेकिन फिर भी डुप्लिकेट संग्रहीत करना टालना चाहूंगा। आईपीएन में एक और क्षेत्र है जिसे ipn_track_id
कहा जाता है और यह दोनों लेनदेन के लिए अलग है, लेकिन मुझे इसके अस्पष्ट विवरण को छोड़कर, इसके लिए प्रलेखन नहीं मिल रहा है:
आंतरिक; केवल एमटीएस और डीटीएस
कोई अन्य व्यक्ति आईपीएन संदेशों की पहचान करने के लिए ipn_track_id
का उपयोग कर रहा है?
तार्किक रूप से यह एक लेनदेन है इसलिए समान txn_id। (प्राथमिक) कुंजी में payment_status जोड़ना हल करेगा, है ना? दस्तावेज़ शायद पढ़ा जाना चाहिए: एक ही स्थिति के लिए एक txn_id फिर से संसाधित नहीं किया जाना चाहिए। – rene
यह समझ में आता है, सुझाव के लिए धन्यवाद। – arnaslu
यह ध्यान देने योग्य है कि आपको केवल उस लेनदेन को संसाधित करना चाहिए जहां पेपल्स आईपीएन दिशानिर्देशों के अनुसार pay_status = "पूरा" हो। –