22 अग॰ 2025·7 मिनट पढ़ने में

वेबहुक इंटीग्रेशन डिबग करें: सिग्नेचर, रिट्राई, रीप्ले, इवेंट लॉग

सिग्नेचर मानकीकरण, सुरक्षित रिट्राई हैंडलिंग, रीप्ले सक्षम करना और खोजने में आसान इवेंट लॉग रखकर वेबहुक इंटीग्रेशन को डिबग करना सीखें।

वेबहुक इंटीग्रेशन डिबग करें: सिग्नेचर, रिट्राई, रीप्ले, इवेंट लॉग

क्यों वेबहुक इंटीग्रेशन काले बक्से बन जाते हैं

वेबहुक असल में तब होता है जब एक ऐप किसी घटना पर आपके ऐप को कॉल करता है। एक पेमेंट प्रोवाइडर कहता है “payment succeeded”, एक फॉर्म टूल कहता है “new submission”, या एक CRM रिपोर्ट करता है “deal updated”。 यह सरल लगता है — जब तक कुछ टूटता नहीं और आपको एहसास नहीं होता कि खोलने के लिए कोई स्क्रीन नहीं है, कोई साफ़ हिस्ट्री नहीं है, और रीप्ले करने का सुरक्षित तरीका नहीं है।

इसी वजह से वेबहुक समस्याएँ इतनी निराशाजनक होती हैं। रिक्वेस्ट आता है (या नहीं आता)। आपका सिस्टम उसे प्रोसेस करता है (या फ़ेल हो जाता है)। पहला संकेत अक्सर एक धुंधला टिकट होता है जैसे “ग्राहक चेकआउट नहीं कर पा रहे” या “स्टेटस अपडेट नहीं हुआ”। अगर प्रोवाइडर रिट्राई करता है, तो डुप्लिकेट मिल सकते हैं। अगर उन्होंने पेaload फील्ड बदल दी, तो आपका पार्सर कुछ खाते के लिए ही टूट सकता है।

सामान्य लक्षण:

  • “मिसिंग” इवेंट्स जहाँ आप नहीं बता पाते कि वे कभी भेजे ही नहीं गए थे या बस प्रोसेस नहीं हुए
  • डुप्लिकेट डिलीवरियाँ जो डुप्लिकेट साइड-इफेक्ट बनाती हैं (दो इनवॉइस, दो ईमेल, दो स्टेटस चेंज)
  • पेaload में बदलाव (नए फील्ड, गायब फील्ड, गलत टाइप) जो केवल कभी-कभार फेल होते हैं
  • सिग्नेचर चेक्स जो एक एनवायरनमेंट में पास होते हैं और दूसरे में फेल

एक डिबग-योग्य वेबहुक सेटअप अनुमान पर आधारित नहीं होता। यह ट्रेसेबल होता है (आप हर डिलीवरी और उसके साथ क्या हुआ, ढूँढ सकते हैं), रिपीटेबल होता है (आप सुरक्षित रूप से एक पिछले इवेंट को रीप्ले कर सकते हैं), और वेरिफायबल होता है (आप ऑथेंटिसिटी और प्रोसेसिंग परिणाम साबित कर सकते हैं)। जब कोई पूछे “इस इवेंट के साथ क्या हुआ?”, तो आपको मिनटों में सबूत के साथ जवाब दे सकना चाहिए।

अगर आप AppMaster जैसे प्लेटफ़ॉर्म पर ऐप बनाते हैं तो यह माइंडसेट और भी ज़्यादा मायने रखता है। विज़ुअल लॉजिक जल्दी बदल सकता है, लेकिन आपको फिर भी स्पष्ट इवेंट हिस्ट्री और सुरक्षित रीप्ले चाहिए ताकि बाहरी सिस्टम काले बक्से न बनें।

वेबहुक्स को ऑब्ज़र्वेबल बनाने के लिए न्यूनतम डेटा

जब आप दबाव में डिबग कर रहे होते हैं, तो हर बार आपको वही बेसिक्स चाहिए: एक रिकॉर्ड जिस पर भरोसा किया जा सके, जिसे खोजा जा सके, और जिसे रीप्ले किया जा सके। इसके बिना हर वेबहुक एक अलग पहेली बन जाता है।

निर्णय लें कि आपकी सिस्टम में एक सिंगल वेबहुक “इवेंट” का क्या मतलब है। इसे रसीद की तरह ट्रीट करें: एक इनकमिंग रिक्वेस्ट बराबर एक स्टोर्ड इवेंट, भले ही प्रोसेसिंग बाद में हो।

कम से कम, ये सेव करें:

  • Event ID: प्रोवाइडर का ID उपलब्ध हो तो वही इस्तेमाल करें; वरना खुद जनरेट करें।
  • Trusted receipt data: कब आप इसे प्राप्त किए और किसने भेजा (प्रोवाइडर का नाम, एंडपॉइंट, अगर आप IP रखते हैं तो वह)। received_at को payload के अंदर timestamps से अलग रखें।
  • Processing status साथ में कारण: एक छोटे सेट का स्टेटस रखें (received, verified, handled, failed) और एक संक्षिप्त failure reason स्टोर करें।
  • Raw request और parsed view: raw body और headers ठीक उसी तरह सहेजें जैसा मिले हैं (ऑडिट और सिग्नेचर चेक के लिए), साथ ही सर्च और सपोर्ट के लिए एक पार्स की हुई JSON view रखें।
  • Correlation keys: एक या दो फील्ड जिन्हें आप खोज सकें (order_id, invoice_id, user_id, ticket_id)।

उदाहरण: एक पेमेंट प्रोवाइडर “payment_succeeded” भेजता है लेकिन आपके कस्टमर का रिकॉर्ड अभी भी unpaid दिखता है। अगर आपका इवेंट लॉग raw request शामिल करता है, आप सिग्नेचर कन्फर्म कर सकते हैं और सही अमाउंट व करेंसी देख सकते हैं। अगर उसमें invoice_id भी है, तो सपोर्ट इवेंट को invoice से ढूंढ सकता है, देख सकता है कि यह “failed” में अटका है, और इंजीनियरिंग को एक स्पष्ट एरर रीजन दे सकता है।

AppMaster में एक व्यावहारिक तरीका है Data Designer में एक “WebhookEvent” टेबल और एक Business Process जो हर स्टेप पूरा होने पर स्टेटस अपडेट करे। टूल मायने नहीं रखता — सुसंगत रिकॉर्ड मायने रखता है।

इवेंट स्ट्रक्चर स्टैण्डर्डाइज़ करें ताकि लॉग पढ़ने योग्य हों

अगर हर प्रोवाइडर अलग payload भेजेगा, तो आपके लॉग हमेशा गंदे लगेंगे। एक स्थिर इवेंट “एनवेलोप” डिबगिंग को तेज बनाता है क्योंकि आप हर बार वही फील्ड स्कैन कर सकते हैं, भले ही डेटा बदले।

एक उपयोगी एनवेलोप आम तौर पर शामिल करता है:

  • id (यूनिक इवेंट id)
  • type (स्पष्ट इवेंट नाम जैसे invoice.paid)
  • created_at (जब इवेंट हुआ, न कि जब आपने प्राप्त किया)
  • data (बिज़नेस पेaload)
  • version (जैसे v1)

यहाँ एक साधारण उदाहरण है जिसे आप जैसा है लॉग और स्टोर कर सकते हैं:

{
  "id": "evt_01H...",
  "type": "payment.failed",
  "created_at": "2026-01-25T10:12:30Z",
  "version": "v1",
  "correlation": {"order_id": "A-10492", "customer_id": "C-883"},
  "data": {"amount": 4990, "currency": "USD", "reason": "insufficient_funds"}
}

एक नामकरण शैली चुनें (snake_case या camelCase) और उसके साथ बने रहें। टाइप्स के बारे में भी सख्त रहें: amount कभी स्ट्रिंग और कभी नंबर न बनाएं।

वर्जनिंग आपकी सुरक्षा जाल है। जब फील्ड बदलने की ज़रूरत पड़े, तो v2 प्रकाशित करें जबकि v1 कुछ समय तक काम करता रहे। इससे सपोर्ट इश्यूज़ कम होते हैं और अपग्रेड्स डिबग करना आसान होता है।

सिग्नेचर सत्यापन जो सुसंगत और टेस्टेबल हो

सिग्नेचर आपके वेबहुक एंडपॉइंट को खुले दरवाज़े बनने से रोकते हैं। बिना सत्यापन के, जो कोई भी आपकी URL जान ले वह फेक इवेंट भेज सकता है, और अटैकर असली रिक्वेस्ट में छेड़छाड़ कर सकते हैं।

सबसे आम पैटर्न है एक shared secret के साथ HMAC सिग्नेचर। भेजने वाला raw request body (सबसे अच्छा) या canonical string को साइन करता है। आप HMAC फिर से गणना करते हैं और तुलना करते हैं। कई प्रोवाइडर उस चीज़ में timestamp शामिल करते हैं जिसे वे साइन करते हैं ताकि कैप्चर की गई रिक्वेस्ट बाद में रीप्ले न की जा सके।

एक सत्यापन रूटीन बोरिंग और सुसंगत होना चाहिए:

  • बिल्कुल वैसा ही raw body पढ़ें जैसा मिला (JSON पार्स करने से पहले)।
  • प्रोवाइडर के एल्गोरिद्म और आपके सीक्रेट का उपयोग कर सिग्नेचर फिर से गणना करें।
  • constant-time फ़ंक्शन से तुलना करें।
  • पुराने timestamps को reject करें (छोटे विंडो का उपयोग करें, जैसे कुछ मिनट)।
  • बंद तरीके से फेल करें: अगर कुछ भी गायब या malformed है, तो उसे invalid समझें।

इसे टेस्टेबल बनाइए। सत्यापन को एक छोटे फ़ंक्शन में रखें और known-good व known-bad सैम्पल्स के साथ टेस्ट लिखें। एक आम समय बर्बाद करने वाली गलती parsed JSON साइन करना है बजाय raw bytes के।

दिन एक से ही सीक्रेट रोटेशन की योजना बनाइए। ट्रांज़िशन के दौरान दो सक्रिय सीक्रेट सपोर्ट करें: पहले नया आज़माएं, फिर पिछला।

जब सत्यापन फेल हो, तो डिबग के लिए पर्याप्त लॉग करें पर सीक्रेट न लीक करें: प्रोवाइडर नाम, timestamp (और क्या यह बहुत पुराना था), सिग्नेचर वर्जन, request/correlation ID, और raw body का एक छोटा हैश (बॉडी खुद नहीं)।

रिट्राई और आइडम्पोटेन्सी ताकि साइड-इफेक्ट्स डुप्लीकेट न हों

Design a Webhook Processing Pipeline
Separate intake from processing with Business Processes that queue work and track each attempt.
Create App

रिट्राई सामान्य हैं। प्रोवाइडर टाइमआउट, नेटवर्क हिचकी, या 5xx रिस्पॉन्स पर रिट्राई करते हैं। भले ही आपके सिस्टम ने काम कर लिया हो, प्रोवाइडर ने आपका रिस्पॉन्स समय पर प्राप्त न किया हो सकता है, इसलिए वही इवेंट फिर से आ सकता है।

पहले तय करें कि कौन से रिस्पॉन्स “रिट्राई” मतलब है और कौन से “रोकें”। कई टीमें ऐसे नियम अपनाती हैं:

  • 2xx: स्वीकार किया गया, रिट्राई बंद करें
  • 4xx: कॉन्फ़िगरेशन या रिक्वेस्ट समस्या, आमतौर पर रिट्राई बंद करें
  • 408/429/5xx: अस्थायी विफलता या रेट लिमिट, रिट्राई करें

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

एक व्यावहारिक पैटर्न है प्रत्येक इनकमिंग इवेंट के यूनिक ID के साथ प्रोसेसिंग का परिणाम स्टोर करना। दोबारा डिलीवरी पर:

  • अगर वह सफल था, तो 2xx लौटाएँ और कुछ न करें।
  • अगर वह फ़ैल था, तो आंतरिक प्रोसेसिंग फिर से कोशिश करें (या retryable status लौटाएँ)।
  • अगर वह प्रोसेस हो रहा है, तो पैरेलल वर्क से बचें और एक छोटा “accepted” रिस्पॉन्स दें।

आंतरिक रिट्राई के लिए exponential backoff और capped attempts का उपयोग करें। कैप के बाद, इवेंट को “needs review” स्टेट में रखें और आखिरी एरर रिकॉर्ड करें। AppMaster में यह साफ़ तौर पर एक छोटी टेबल (इवेंट IDs और स्टेटस के लिए) और एक Business Process जो रिट्राई शेड्यूल करे और बार-बार फ़ेल होने वाले रूट करे, से मैप हो जाता है।

रीप्ले टूल जो सपोर्ट टीम को तेज़ी से मुद्दे ठीक करने में मदद करे

रिट्राई ऑटोमैटिक होते हैं। रीप्ले जानबूझकर होता है।

रीप्ले टूल “हमें लगता है कि भेजा गया” को एक रिप्रोड्यूसिबल टेस्ट में बदल देता है जिसके पास बिल्कुल वही पेaload होता है। यह तब भी सुरक्षित है जब दो चीज़ें सच्ची हों: आइडम्पोटेन्सी और ऑडिट ट्रेल। आइडम्पोटेन्सी डबल चार्जिंग, डबल शिपिंग, या डबल ईमेलिंग रोकती है। ऑडिट ट्रेल दिखाती है क्या रीप्ले किया गया, किसने किया, और क्या हुआ।

सिंगल-इवेंट रीप्ले बनाम टाइम-रेंज रीप्ले

सिंगल-इवेंट रीप्ले सामान्य सपोर्ट केस है: एक ग्राहक, एक फेल्ड इवेंट, फिक्स के बाद उसे फिर भेजें। टाइम-रेंज रीप्ले incidents के लिए है: एक प्रोवाइडर आउटेज एक खास विंडो में हुआ और आपको उस विंडो के सभी फेल्ड इवेंट्स फिर से भेजने हैं।

सेलेक्शन को सरल रखें: इवेंट टाइप, टाइम रेंज, और स्टेटस (failed, timed out, या delivered लेकिन unacknowledged) से फ़िल्टर करें, फिर एक इवेंट या एक बैच रीप्ले करें।

दुर्घटनाओं को रोकने वाले गार्डरेइल्स

रीप्ले शक्तिशाली होना चाहिए, पर ख़तरनाक नहीं। कुछ गार्डरेइल्स मदद करते हैं:

  • भूमिका-आधारित एक्सेस
  • प्रति डेस्टिनेशन रेट लिमिट
  • ऑडिट रिकॉर्ड के साथ आवश्यक कारण नोट स्टोर करना
  • बड़े बैच रीप्ले के लिए वैकल्पिक अप्रूवल
  • ड्राय-रन मोड जो भेजे बिना वैलिडेट करता है

रीप्ले के बाद, मूल इवेंट के पास परिणाम दिखाएँ: success, अभी भी फेल (नवीनतम एरर के साथ), या ignored (आइडम्पोटेन्सी के ज़रिए डुप्लिकेट पाया गया)।

घटनाओं (इवेंट) के लॉग जो incidents के दौरान उपयोगी हों

Verify Webhook Signatures Consistently
Add an HMAC verification step to your flow before you parse JSON or write data.
Try AppMaster

जब वेबहुक किसी incident के दौरान टूटता है, तो आपको मिनटों में जवाब चाहिए। एक अच्छा लॉग एक साफ़ कहानी बताता है: क्या आया, आपने क्या किया, और कहाँ अटका।

raw request को बिल्कुल वैसे सहेजें जैसे मिला: timestamp, path, method, headers, और raw body। वह raw payload आपका ग्राउंड ट्रूथ है जब vendors फील्ड बदलते हैं या आपका पार्सर डेटा गलत पढ़ता है। संवेदनशील वैल्यूज़ को सहेजने से पहले मास्क करें (authorization headers, tokens, और कोई भी पर्सनल या पेमेंट डेटा जो आपको आवश्यक नहीं है)।

सिर्फ raw data ही काफी नहीं है। एक पार्स की हुई, सर्चेबल view भी रखें: इवेंट टाइप, बाहरी इवेंट ID, कस्टमर/अकाउंट पहचानकर्ता, संबंधित ऑब्जेक्ट IDs (invoice_id, order_id), और आपकी आंतरिक correlation ID। यही सपोर्ट को “कस्टमर 8142 के सभी इवेंट” खोजने देता है बिना हर पेayload खोलने के।

प्रोसेसिंग के दौरान, एक छोटा स्टेप टाइमलाइन रखें समान शब्दों के साथ, उदाहरण के लिए: “validated signature”, “mapped fields”, “checked idempotency”, “updated records”, “queued follow-ups”।

रिटेंशन मायने रखता है। पर्याप्त हिस्ट्री रखें ताकि वास्तविक देरी और विवाद कवर हो सकें, लेकिन अनंतकाल तक डेटा न जमाएँ। पहले raw payloads को हटाने या अनॉनिमाइज़ करने पर विचार करें जबकि हल्का मेटाडेटा लंबे समय तक रखें।

कदम-दर-कदम: एक डिबग-योग्य वेबहुक पाइपलाइन बनाएं

Alert on Webhook Failure Spikes
Send Telegram or email alerts when webhook failures spike or events get stuck in failed.
Set Alerts

रिसीवर को एक छोटे पाइपलाइन की तरह बनाएं जिसमें स्पष्ट चेकपॉइंट हों। हर रिक्वेस्ट एक स्टोर्ड इवेंट बन जाती है, हर प्रोसेसिंग रन एक प्रयास बन जाता है, और हर विफलता सर्चेबल बन जाती है।

रिसीवर पाइपलाइन

HTTP एंडपॉइंट को सिर्फ intake मानें। शुरुआत में न्यूनतम काम करें, फिर प्रोसेसिंग को वर्कर में भेजें ताकि टाइमआउट्स रहस्यमयी व्यवहार न बनें।

  1. हेडर्स, raw body, receipt timestamp, और प्रोवाइडर कैप्चर करें।
  2. सिग्नेचर वेरिफाई करें (या साफ़ “failed verification” स्टेटस स्टोर करें)।
  3. स्थिर इवेंट ID पर कीवर्ड करके प्रोसेसिंग enqueue करें।
  4. वर्कर में प्रोसेस करें साथ में आइडम्पोटेन्सी चेक और बिजनेस एक्शन्स।
  5. अंतिम परिणाम रिकॉर्ड करें (success/failure) और एक उपयोगी एरर मैसेज।

व्यवहार में, आप दो कोर रिकॉर्ड चाहेंगे: हर वेबहुक इवेंट के लिए एक रो, और हर प्रोसेसिंग प्रयास के लिए एक रो।

एक ठोस इवेंट मॉडल में शामिल हो सकते हैं: event_id, provider, received_at, signature_status, payload_hash, payload_json (या raw payload), current_status, last_error, next_retry_at। Attempt रिकॉर्ड्स स्टोर कर सकते हैं: attempt_number, started_at, finished_at, http_status (अगर लागू हो), error_code, error_text।

एक बार डेटा मौजूद हो, एक छोटा एडमिन पेज जोड़ें ताकि सपोर्ट event ID, customer ID, या टाइम रेंज से खोज सके, और स्टेटस द्वारा फ़िल्टर कर सके। इसे उबाऊ और तेज़ रखें।

पैटर्न्स पर अलर्ट सेट करें, न कि वन-ऑफ फेलियर्स पर। उदाहरण: “प्रोवाइडर ने 5 मिनट में 10 बार फेल किया” या “इवेंट फेल्ड में फंसा हुआ है”।

भेजने वालों (Sender) की अपेक्षाएँ

अगर आप भेजने की साइड को नियंत्रित करते हैं, तो तीन चीज़ें स्टैण्डर्डाइज़ करें: हमेशा एक इवेंट ID शामिल करें, हमेशा payload को एक ही तरीके से साइन करें, और स्पष्ट भाषा में एक retry policy प्रकाशित करें। यह तब अंतहीन बैक-एंड-फोर्थ रोकता है जब एक पार्टनर कहे “हमने भेजा” और आपकी सिस्टम कुछ नहीं दिखाती।

उदाहरण: पेमेंट्स वेबहुक 'failed' से 'fixed' तक रीप्ले के साथ

एक आम पैटर्न एक Stripe वेबहुक का है जो दो काम करता है: एक Order रिकॉर्ड बनाना, फिर एक रसीद ईमेल/SMS के जरिए भेजना। यह तब तक सरल लगता है जब तक एक इवेंट फेल न हो और कोई न जाने कि ग्राहक चार्ज हुआ था या नहीं, ऑर्डर मौजूद है या नहीं, या रसीद जायेगी या नहीं।

यहाँ एक वास्तविक विफलता है: आप अपना Stripe साइनिंग सीक्रेट रोटेट करते हैं। कुछ मिनटों के लिए आपका एंडपॉइंट पुराने सीक्रेट से वेरिफ़ाई करता रहता है, इसलिए Stripe इवेंट डिलीवर करता है पर आपका सर्वर उन्हें 401/400 से रिजेक्ट कर देता है। डैशबोर्ड पर “webhook failed” दिखता है, जबकि आपके ऐप लॉग केवल कहते हैं “invalid signature”。

अच्छे लॉग कारण स्पष्ट कर देते हैं। फेल्ड इवेंट के लिए रिकॉर्ड में स्थिर इवेंट ID और इतनी वेरिफिकेशन डिटेल होनी चाहिए कि मिसमैच का पता चल सके: सिग्नेचर वर्जन, सिग्नेचर टाइमस्टैम्प, वेरिफिकेशन रिज़ल्ट, और स्पष्ट रिजेक्ट कारण (गलत सीक्रेट बनाम timestamp drift)। रोटेशन के दौरान यह यह भी मदद करता है कि कौन सा सीक्रेट आज़माया गया लॉग हो (उदाहरण के लिए “current” बनाम “previous”), न कि कच्चा सीक्रेट।

एक बार सीक्रेट ठीक हो जाने और थोड़े विंडो के लिए दोनों “current” और “previous” स्वीकार्य होने पर, आपको बैकलॉग को भी संभालना होगा। रीप्ले टूल इसे एक त्वरित कार्य बना देता है:

  1. इवेंट को event_id से ढूँढें।
  2. पुष्टि करें कि फेल होने का कारण हल हो गया है।
  3. इवेंट को रीप्ले करें।
  4. आइडम्पोटेन्सी सत्यापित करें: Order एक बार बने, रसीद एक बार भेजी गयी।
  5. रीप्ले परिणाम और timestamps टिकट में जोड़ें।

आम गलतियाँ और उन्हें कैसे टाला जाए

Standardize Events Across Providers
Define one event envelope with types, versions, and correlation fields you can support long term.
Build Today

ज़्यादातर वेबहुक समस्याएँ इसलिए रहस्यमयी लगती हैं क्योंकि सिस्टम केवल अंतिम त्रुटि रिकॉर्ड करते हैं। हर डिलीवरी को एक छोटे incident रिपोर्ट की तरह ट्रीट करें: क्या आया, आपने क्या फैसला किया, और आगे क्या हुआ।

कुछ बार-बार दिखने वाली गलतियाँ:

  • केवल exceptions लॉग करना बजाय पूरे लाइफ़साइकल के (received, verified, queued, processed, failed, retried)
  • बिना मास्क किए पूरा payload और headers सेव करना, फिर पाता चलना कि आपने सीक्रेट्स या पर्सनल डेटा कैप्चर कर लिया
  • रिट्राई को नए इवेंट की तरह हैंडल करना, जिससे डबल चार्ज या डुप्लिकेट मैसेजेस हों
  • इवेंट को durable तरीके से स्टोर करने से पहले 200 OK लौटाना, जिससे डैशबोर्ड ग्रीन दिखे पर काम बाद में मर जाए

व्यावहारिक सुधार:

  • एक मिनिमल, सर्चेबल रिक्वेस्ट रिकॉर्ड और स्टेटस परिवर्तन स्टोर करें।
  • डिफ़ॉल्ट रूप से संवेदनशील फील्ड मास्क करें और raw payloads की पहुँच सीमित रखें।
  • आइडम्पोटेन्सी को केवल कोड में नहीं, बल्कि डेटाबेस स्तर पर लागू करें।
  • केवल तब acknowledge करें जब इवेंट सुरक्षित रूप से स्टोर हो गया हो।
  • रीप्ले को एक समर्थित फ़्लो के रूप में बनाएं, न कि एक एकल स्क्रिप्ट के रूप में।

अगर आप AppMaster इस्तेमाल कर रहे हैं, तो ये टुकड़े प्लेटफ़ॉर्म में सहजता से फिट हो जाते हैं: Data Designer में एक इवेंट टेबल, सत्यापन और प्रोसेसिंग के लिए स्टेटस-ड्रिवन Business Process, और खोज व रीप्ले के लिए एक एडमिन UI।

त्वरित चेकलिस्ट और अगले कदम

हर बार के लिए वही बेसिक्स लक्ष्य बनाएं:

  • हर इवेंट का एक यूनिक event_id हो, और आप raw payload को प्राप्त किए वैसे स्टोर करें।
  • हर अनुरोध पर सिग्नेचर सत्यापन चले, और फेल्यर में स्पष्ट कारण हो।
  • रिट्राई अनुमानित हों, और हैंडलर्स आइडम्पोटेंट हों।
  • रीप्ले केवल अधिकृत भूमिकाओं तक सीमित हो और उसका ऑडिट ट्रेल रहे।
  • लॉग event_id, provider id, status, और time से सर्चेबल हों, साथ में एक छोटा “क्या हुआ” सारांश।

इनमें से एक भी मिस होने पर इंटीग्रेशन फिर भी काला डिब्बा बन सकता है। अगर आप raw payload स्टोर नहीं करते हैं, तो आप प्रमाण नहीं दे पाएंगे कि प्रोवाइडर ने क्या भेजा था। अगर सिग्नेचर फेल्यर विशिष्ट नहीं हैं, तो आप घंटों बर्बाद कर रहे होंगे किसकी गलती है के तर्क में।

यदि आप हर कॉम्पोनेंट को हाथ से कोड किए बिना जल्दी बनाना चाहते हैं, तो AppMaster (appmaster.io) आपकी मदद कर सकता है ताकि आप डेटा मॉडल, प्रोसेसिंग फ्लो, और एडमिन UI एक ही जगह बना सकें, जबकि अंतिम ऐप के लिए वास्तविक स्रोत कोड भी जनरेट होता है।

शुरू करना आसान
कुछ बनाएं अद्भुत

फ्री प्लान के साथ ऐपमास्टर के साथ प्रयोग करें।
जब आप तैयार होंगे तब आप उचित सदस्यता चुन सकते हैं।

शुरू हो जाओ