Payora को कस्टम PHP वेबसाइट से कैसे जोड़ें
अगर आपकी साइट पूरी तरह से PHP में बनी है, तो यह काम आसान है: पेमेंट बनाएँ, ग्राहक को Payora पर भेजें और फिर पेमेंट का नतीजा अपने ऑर्डर सिस्टम में दर्ज करें। WooCommerce की ज़रूरत नहीं। प्लगइन का झंझट भी नहीं।
यह गाइड बताती है कि कस्टम PHP वेबसाइट में Payora कैसे जोड़ें और PHP वेबसाइट पर Payora पेमेंट इंटीग्रेशन कैसे करें, वह भी चेकआउट को जटिल बनाए बिना। आप जानेंगे कि पेमेंट शुरू करने के लिए PHP को कहाँ काम करना चाहिए, पेमेंट के बाद ग्राहक की वापसी कहाँ संभालनी है और आपका ऐप कैसे तय करेगा कि ऑर्डर का स्टेटस भुगतान हो चुका है, लंबित है या विफल।
1. कस्टम PHP साइट के लिए इंटीग्रेशन का तरीका तय करें
सबसे पहले यह तय करें: क्या आप एक साधारण चेकआउट लिंक बना रहे हैं, सर्वर-साइड पेमेंट अनुरोध भेज रहे हैं या ऑर्डर ट्रैकिंग के साथ पूरा पेमेंट फ़्लो तैयार कर रहे हैं? ये तीनों एक जैसे नहीं हैं। एक पेज वाली डोनेशन साइट पेमेंट लिंक से काम चला सकती है, जबकि 20 प्रोडक्ट वाली दुकान में ग्राहक के साइट छोड़ने से पहले सर्वर-साइड ऑर्डर बनाना आम तौर पर ज़रूरी होता है।
कस्टम PHP वेबसाइट के लिए अक्सर सबसे अच्छा तरीका यह होता है: पहले अपने सिस्टम में ऑर्डर बनाएँ, PHP से Payora पेमेंट बनाएँ, ग्राहक को Payora पर भेजें और फिर वापसी तथा सर्वर से मिले पुष्टिकरण को संभालें। इससे पैसे के लेन-देन से पहले आपके पास अपने सिस्टम में ऑर्डर का रिकॉर्ड रहता है। साथ ही, कार्ट और इनवॉइस का पूरा लॉजिक आपके ऐप में ही रहता है, जहाँ उसे होना चाहिए।
अगर आपका चेकआउट बहुत छोटा है, तो शायद आपको बस Payora के होस्ट किए हुए पेमेंट पेज पर भेजना हो। लेकिन अगर आपको अलग-अलग आइटम, ग्राहक के नोट या ऑर्डर ID चाहिए, तो रीडायरेक्ट करने से पहले PHP को यह जानकारी भेजनी चाहिए। आसान, मगर अधूरा नहीं।
एक व्यावहारिक उदाहरण लें। तीन चरणों वाला मेंटेनेंस पैकेज बेचने वाली डिजिटल एजेंसी PHP में ऑर्डर बना सकती है, ग्राहक का ईमेल जोड़ सकती है और इनवॉइस रेफ़रेंस के साथ ग्राहक को Payora पर भेज सकती है। एक लाइसेंस की बिक्री करने वाले शौकिया प्रोजेक्ट को शायद सिर्फ़ पेमेंट लिंक और वापसी वाला पेज चाहिए। फ़र्क इस बात से पड़ता है कि आपको कितना डेटा संभालकर रखना है, न कि कोड कितना है।
2. ज़रूरी पेज, एंडपॉइंट और सेशन फ़्लो तय करें
कोड लिखने से पहले पेजों की सूची बनाएँ। कम-से-कम तीन चीज़ें चाहिए: चेकआउट पेज, वापसी वाला पेज और पेमेंट की पुष्टि के लिए सर्वर एंडपॉइंट। अगर आपने पहले से यह फ़्लो तय नहीं किया, तो बाद में अंदाज़ा लगाना पड़ेगा कि किस अनुरोध ने ऑर्डर का स्टेटस बदला। अंदाज़े महँगे पड़ते हैं।
ब्राउज़र फ़्लो के लिए सामान्य PHP सेशन का इस्तेमाल करें, लेकिन केवल सेशन पर भरोसा न करें। ग्राहक डिवाइस बदल सकता है, टैब बंद कर सकता है या बाद में Payora से लौट सकता है—इनमें से किसी भी स्थिति में सेशन डेटा मिट सकता है। ऑर्डर ID अपने डेटाबेस में भी रखें, ताकि ब्राउज़र सेशन खत्म हो जाने पर भी PHP को ट्रांज़ैक्शन मिल सके।
आम तौर पर फ़्लो कुछ ऐसा होता है:
- चेकआउट पेज पर प्रोडक्ट, ईमेल और मात्रा ली जाती है।
- PHP लंबित स्टेटस वाला ऑर्डर बनाता है।
- PHP ग्राहक को Payora पर भेजता है।
- Payora ब्राउज़र को आपके वापसी URL पर भेजता है।
- ऑर्डर को भुगतान हो चुका बताने से पहले आपका सर्वर पेमेंट का स्टेटस जाँचता है।
इस फ़्लो में ब्राउज़र के वापसी पेज और सर्वर से मिलने वाली असली जानकारी अलग-अलग रहती है। यह अच्छा है। दोनों अलग ही होने चाहिए। ब्राउज़र बता सकता है कि ग्राहक ने क्या देखा; ऑर्डर का सही स्टेटस आपका सर्वर तय करे।
एक छोटी-सी आदत बाद में कई घंटे बचा सकती है: पेमेंट बनाते ही Payora का पेमेंट रेफ़रेंस अपने ऑर्डर ID के साथ सेव करें। अगर रीडायरेक्ट के बाद तक इंतज़ार करेंगे, तो नेटवर्क की गड़बड़ी या जल्दबाज़ी में किए गए रिफ़्रेश से ऑर्डर तो बन सकता है, पर Payora रेफ़रेंस नहीं मिलेगा। फिर आपको लाइव साइट पर जासूस बनकर पड़ताल करनी पड़ेगी।
3. PHP में पेमेंट अनुरोध की एक सरल लेयर तैयार करें
पेमेंट का कोड टेम्पलेट में न रखें। एक छोटी PHP क्लास या हेल्पर काफ़ी है। एक मेथड पेलोड तैयार कर सकता है, दूसरा HTTP अनुरोध भेज सकता है और तीसरा जवाब को पढ़ सकता है। यह अलगाव इसलिए मायने रखता है, क्योंकि पेमेंट का लॉजिक पेज के मार्कअप से ज़्यादा बार बदलता है।
उदाहरण के लिए, आपका हेल्पर amount, currency, order_id और return_url वाली ऐरे ले सकता है और फिर एनवायरनमेंट वेरिएबल से Payora की जानकारी जोड़ सकता है। चेकआउट पेज को यह जानने की ज़रूरत नहीं होनी चाहिए कि API टोकन कहाँ रखा है। उसे सिर्फ़ यह जानना चाहिए कि कौन-सा बटन क्लिक हुआ।
यहाँ कोड के लॉजिक का ढाँचा दिया गया है, पूरा इम्प्लीमेंटेशन नहीं:
- डेटाबेस से ऑर्डर पढ़ें।
- Payora अनुरोध के लिए ऐरे तैयार करें।
- cURL या किसी मिलते-जुलते HTTP क्लाइंट से अनुरोध भेजें।
- Payora से मिला पेमेंट रेफ़रेंस सेव करें।
- ग्राहक को Payora पेमेंट URL पर रीडायरेक्ट करें।
इस हेल्पर को सरल और सीधा रखें। ऐसे कोड की जाँच करना आसान होता है। प्रोडक्ट की कीमत बदलने या अगले महीने दूसरा चेकआउट फ़ॉर्म जोड़ने पर ऐसे कोड में गड़बड़ी की आशंका भी कम रहती है।
अगर आपके ऐप में पहले से पेमेंट एब्स्ट्रैक्शन है, तो उसी का इस्तेमाल करें। नहीं है, तो एक फ़ाइल बनाएँ और उसे साफ़ नाम दें, जैसे PayoraClient.php। उसमें पेमेंट से जुड़ी जानकारी, API कॉल और जवाब पढ़ने का कोड रखें। बस इतना ही। HTML नहीं। CSS नहीं। धन्यवाद संदेश भी नहीं।
4. अपने कस्टम चेकआउट से ग्राहक को Payora पर भेजें
लोकल ऑर्डर बन जाने के बाद Payora पेमेंट अनुरोध भेजें और ग्राहक को Payora पेमेंट पेज पर भेजें। ग्राहक को रीडायरेक्ट करने से पहले आपका सर्वर ऑर्डर सेव कर चुका हो, क्योंकि रीडायरेक्ट शुरू होते ही ग्राहक टैब बंद कर सकता है।
सिर्फ़ वही ऑर्डर जानकारी भेजें जिसकी आपको वाकई ज़रूरत है। आम तौर पर इसमें ऑर्डर ID, रकम, करेंसी और ग्राहक का ईमेल शामिल होता है। प्रोडक्ट का नाम या इंटरनल अकाउंट ID जैसे मेटाडेटा भी भेज सकते हैं, लेकिन डेटाबेस के हर फ़ील्ड को सिर्फ़ इसलिए अनुरोध में न डालें कि वह उपलब्ध है। बाद में सपोर्ट टीम के रिकॉर्ड मिलाते समय अतिरिक्त डेटा उलझन पैदा कर सकता है।
कस्टम चेकआउट में अक्सर “अभी भुगतान करें” बटन वाला POST फ़ॉर्म होता है। यह फ़ॉर्म आपके PHP एंडपॉइंट पर सबमिट होता है, एंडपॉइंट Payora पेमेंट बनाता है और फिर रीडायरेक्ट का जवाब देता है। ग्राहक को API का जवाब नहीं दिखता—उसे सिर्फ़ Payora दिखता है।
एक बात का ध्यान रखें: क्लाइंट-साइड कुल रकम पर भरोसा न करें। अगर प्रोडक्ट पेज पर $49 लिखा है और ब्राउज़र $39 भेजता है, तो आपके सर्वर को यह अंतर अस्वीकार करना चाहिए। पेमेंट अनुरोध सर्वर पर मौजूद ऑर्डर की कुल रकम से बनना चाहिए, फ़ॉर्म में छिपी रकम से नहीं। यह नियम हर बार लागू होता है।
पेमेंट सेटअप के तरीकों का व्यापक नज़रिया चाहिए, तो ई-कॉमर्स के लिए क्रिप्टो पेमेंट गेटवे वाली गाइड उपयोगी जानकारी देती है और यहाँ बताए गए PHP फ़्लो को दोहराती भी नहीं।
5. अपने ऐप में पेमेंट का नतीजा प्राप्त करें और उसकी पुष्टि करें
ब्राउज़र का वापसी URL काम का है, लेकिन वही अंतिम पुष्टि नहीं है। इससे पता चल सकता है कि पेमेंट पेज खोला गया था और स्टेटस की जानकारी भी मिल सकती है, लेकिन सर्वर से पुष्टि होने तक आपके PHP ऐप को इस नतीजे को अस्थायी ही मानना चाहिए। लंबित का मतलब भुगतान हो चुका नहीं है।
वापसी वाले पेज को तीन स्थितियों के लिए तैयार करें: सफल, लंबित और विफल। Payora सफलता बताए, तो धन्यवाद वाला पेज दिखाएँ और ग्राहक को बताएँ कि ऑर्डर की पुष्टि की जा रही है। स्टेटस लंबित हो, तो साफ़-साफ़ वही बताएँ। पेमेंट विफल हो, तो ग्राहक को ऑर्डर का रिकॉर्ड बनाए रखते हुए दोबारा कोशिश करने का विकल्प दें। स्पष्ट भाषा से सपोर्ट अनुरोध कम होते हैं।
एक उपयोगी नियम यह है: वापसी वाला पेज अपने आप ऑर्डर को भुगतान हो चुका घोषित न करे। उसे सिर्फ़ मौजूदा स्टेटस दिखाना चाहिए और शायद ऑर्डर पेज पर लौटने का लिंक देना चाहिए। डेटाबेस में अपडेट पुष्टि के बाद होना चाहिए, ब्राउज़र रीडायरेक्ट के बाद नहीं। यह फ़र्क आपको गलती से एक ही ऑर्डर दो बार अपडेट होने से बचाता है।
वापसी एंडपॉइंट इतना सरल रखें कि एक नज़र में समझ आ जाए। Payora पेमेंट रेफ़रेंस मिले, तो उसे खोजें। रेफ़रेंस न हो, तो अनुरोध का लॉग बनाएँ और आगे न बढ़ें। ऑर्डर का भुगतान पहले ही हो चुका हो, तो दोस्ताना संदेश दिखाएँ और कुछ भी न बदलें। बार-बार रिफ़्रेश होने पर भी आइडेम्पोटेंट फ़्लो इसी तरह बिना गड़बड़ी के चलता है।
अगर आपकी टीम चेकआउट के विकल्पों की तुलना भी करना चाहती है, तो क्रिप्टो पेमेंट कैसे स्वीकार करें वाला लेख बिलिंग से जुड़ी काम की जानकारी देता है—खास तौर पर तब, जब आप बार-बार बनने वाले इनवॉइस या मैन्युअल मंज़ूरी वाली सेवाएँ बेचते हैं।
6. ऑर्डर को भुगतान हो चुका बताने से पहले सर्वर पर ट्रांज़ैक्शन की पुष्टि करें
यह ज़्यादा सुरक्षित तरीका है। ऑर्डर को भुगतान हो चुका स्टेटस देने से पहले आपके PHP ऐप को सर्वर-साइड से Payora पर अनुरोध भेजकर ट्रांज़ैक्शन के स्टेटस की पुष्टि करनी चाहिए। इसी चरण में Payora पेमेंट स्टेटस की पुष्टि कैसे करें का जवाब मिलता है: पहले सेव किया गया पेमेंट रेफ़रेंस लेकर सर्वर से ट्रांज़ैक्शन की स्थिति जाँचें। ब्राउज़र रीडायरेक्ट पूरी जानकारी न देकर भ्रमित कर सकते हैं; सर्वर जाँच को इससे फ़र्क नहीं पड़ता कि ग्राहक ने टैब बंद किया, दो बार रिफ़्रेश किया या दूसरे डिवाइस का इस्तेमाल किया।
पहले सेव किया गया Payora पेमेंट रेफ़रेंस इस्तेमाल करके मौजूदा ट्रांज़ैक्शन स्टेटस माँगें। मिले हुए स्टेटस की तुलना उस स्टेटस से करें जो ऑर्डर पूरा करने के लिए ज़रूरी है। ट्रांज़ैक्शन का निपटारा हो गया हो या उसकी पुष्टि हो गई हो, तो ऑर्डर अपडेट करें। लंबित हो, तो उसे लंबित ही रहने दें। विफल या रद्द हो गया हो, तो ऑर्डर में कोई बदलाव न करें।
एक बात और: कई कस्टम PHP साइटें इसी चरण पर लापरवाही करती हैं। वे वापसी वाले पेज पर भरोसा कर लेती हैं, क्योंकि उसे कोड करना तेज़ होता है। तेज़, हाँ। सुरक्षित, नहीं। बाद में सपोर्ट ईमेल की लंबी बातचीत से बेहतर है कि अभी पाँच सेकंड लगाकर पुष्टि कर लें। हर बार।
अगर Payora डिजिटल हस्ताक्षर वाला कॉलबैक या सर्वर-टू-सर्वर पुष्टि का तरीका देता है, तो उसे स्टेटस जाँच के साथ इस्तेमाल करें। इससे दो बार जाँच हो जाती है: एक ग्राहक फ़्लो से और दूसरी सर्वर फ़्लो से। अगर आपको हस्ताक्षर की जाँच चरण-दर-चरण करनी है, तो क्रिप्टो पेमेंट की जाँच कैसे करें देखें। उसमें ऐसे सत्यापन के तरीके बताए गए हैं जो लॉन्च से पहले काम आते हैं।
ऑर्डर को भुगतान हो चुका तभी मानें, जब सर्वर इसकी पुष्टि करे। ग्राहक के कहने पर नहीं। ब्राउज़र के बताने पर नहीं। आपका डेटाबेस वही पेमेंट स्टेटस दिखाए जिसकी Payora पुष्टि करता है, क्योंकि बाद में आपकी फ़ुलफ़िलमेंट और अकाउंटिंग टीम इसी स्टेटस पर भरोसा करेगी।
7. पेमेंट रिकॉर्ड सेव करें और डुप्लिकेट अनुरोधों को संभालें
Payora ट्रांज़ैक्शन रेफ़रेंस, लोकल ऑर्डर ID, रकम, करेंसी और अंतिम स्टेटस डेटाबेस में सेव करें। हो सके, तो यह सब एक ही बार में लिखें। बाद में जब कोई ग्राहक ईमेल करके कहे, “मैंने दो बार भुगतान कर दिया,” तो आपको साफ़ रिकॉर्ड चाहिए होगा, तीन अधूरे अपडेट नहीं।
आम वजहों से भी डुप्लिकेट अनुरोध हो जाते हैं। ग्राहक दो बार क्लिक कर देता है। बैक बटन दबाया जाता है। ब्राउज़र अनुरोध दोबारा भेजता है। आपके PHP कोड को जाँचना चाहिए कि ऑर्डर के लिए Payora रेफ़रेंस पहले से मौजूद है या नहीं। जब तक पहला पेमेंट विफल या एक्सपायर न हो जाए, उसी ऑर्डर के लिए दूसरा पेमेंट न बनाएँ। यही आइडेम्पोटेंसी का मूल है।
एक सरल नियम अच्छा काम करता है: एक लोकल ऑर्डर के लिए एक सक्रिय Payora ट्रांज़ैक्शन। अगर पहला पेमेंट लंबित रहते हुए उसी ऑर्डर के लिए दूसरा अनुरोध आए, तो नया पेमेंट बनाने के बजाय मौजूदा Payora चेकआउट लिंक दिखाएँ। ऑर्डर का भुगतान हो चुका हो, तो कुछ न करें। चुपचाप। यही ख़ामोशी एक अच्छी सुविधा है।
डेटाबेस में कॉलम के नाम स्पष्ट रखें। उदाहरण के लिए, payora_reference, payment_status, paid_at और last_checked_at रखें। ये फ़ील्ड सपोर्ट, अकाउंटिंग और डीबगिंग में मदद करेंगे। बाद में पेमेंट का मिलान करना हो, तो लॉग में एक घंटा खोजने के बजाय ये चार फ़ील्ड ज़्यादातर सवालों के जवाब दे सकते हैं।
अगर आप दुकान के चेकआउट के बजाय क्लाइंट के इनवॉइस वाला फ़्लो बना रहे हैं, तो फ़्रीलांसरों के लिए क्रिप्टो पेमेंट गेटवे वाला लेख भी रिकॉर्ड रखने के इसी तरीके के बारे में मददगार हो सकता है—खासकर तब, जब कार्ट से ज़्यादा इनवॉइस नंबर मायने रखते हों।
8. साइट की स्टेजिंग कॉपी पर पूरा फ़्लो जाँचें
लाइव करने से पहले साइट की स्टेजिंग कॉपी बनाएँ और पूरा फ़्लो जाँचें: ऑर्डर बनाना, Payora पर रीडायरेक्ट, वापसी वाला पेज, सर्वर से पुष्टि और बार-बार क्लिक होने की स्थिति। अगर आपने सिर्फ़ रीडायरेक्ट जाँचा है, तो समस्या का एक-तिहाई हिस्सा ही जाँचा है।
कम-से-कम ये जाँचें करें:
- नया ऑर्डर बनाएँ और पुष्टि करें कि Payora पेमेंट अनुरोध बन रहा है।
- वापसी वाले पेज को 2 बार रिफ़्रेश करें और देखें कि ऑर्डर दोबारा अपडेट नहीं होता।
- चेकआउट फ़ॉर्म दो बार सबमिट करें और पक्का करें कि सिर्फ़ 1 सक्रिय ट्रांज़ैक्शन बनता है।
- लंबित या विफल नतीजे की स्थिति बनाकर देखें कि ऑर्डर का भुगतान हुआ स्टेटस नहीं दिखता।
- जाँचें कि सेव किया गया Payora रेफ़रेंस डेटाबेस के रिकॉर्ड से मेल खाता है।
ठीक उसी PHP वर्ज़न और सर्वर सेटअप पर जाँचें जिसका इस्तेमाल लाइव साइट पर करना है। लोकल लैपटॉप पर चलने वाला फ़्लो सख़्त SSL कॉन्फ़िगरेशन या अलग cURL सेटिंग वाले प्रोडक्शन सर्वर पर विफल हो सकता है। यह कोई अनोखी बात नहीं है। ऐसा होता है।
एक आख़िरी व्यावहारिक जाँच: ऑर्डर को इनकॉग्निटो विंडो में खोलें, पेमेंट पूरा करें और फिर उसी वापसी URL को दूसरे ब्राउज़र में खोलें। आपके ऐप को पेमेंट का दूसरा अपडेट नहीं करना चाहिए। अगर ऐसा होता है, तो लॉन्च से पहले इसे ठीक करें। कोई अपवाद नहीं।
अगर आपकी टीम दूसरे पेमेंट तरीकों के साथ USDC चेकआउट भी बेचती है, तो how to accept USDC payments में दिए गए सुझाव PHP फ़्लो को प्रोडक्शन में डालने से पहले ग्राहकों की अपेक्षाओं की तुलना करने में मदद कर सकते हैं।
आख़िर में बस यही जाँचें: एक ही ऑर्डर बिना किसी गड़बड़ी के एक रीडायरेक्ट, एक रिफ़्रेश और सर्वर से एक पुष्टि के बाद भी सही बना रहे। अगर ऐसा होता है, तो आपका कस्टम PHP चेकआउट पहला लाइव पेमेंट लेने के लिए तैयार है।




Comments