मुख्य सामग्री पर जाएं

परिचय

भुगतान घटनाओं के होने पर स्वचालित रूप से सर्वर रहित कार्य और बैकग्राउंड जॉब्स निष्पादित करें। Inngest के विश्वसनीय कार्य निष्पादन प्लेटफ़ॉर्म के साथ भुगतान संसाधित करें, सूचनाएँ भेजें, डेटाबेस अपडेट करें, और जटिल कार्यप्रवाह चलाएँ।
इस एकीकरण के लिए आपके फ़ंक्शन कॉन्फ़िगरेशन से Inngest webhook URL की आवश्यकता होती है।

प्रारंभ करना

1

Open the Webhook Section

अपने Dodo Payments डैशबोर्ड में Webhooks → + Add Endpoint पर जाएं और integrations ड्रॉपडाउन को चौड़ा करें।
एंडपॉइंट जोड़ें और integrations ड्रॉपडाउन
2

Select Inngest

Inngest integration कार्ड चुनें।
3

Create Inngest Function

In Inngest में, एक नया फ़ंक्शन बनाएं और फ़ंक्शन कॉन्फ़िगरेशन से webhook URL कॉपी करें।
4

Paste Webhook URL

Inngest webhook URL को endpoint configuration में पेस्ट करें।
5

Configure Transformation

इवेंट्स को आपके Inngest फ़ंक्शन के लिए फॉर्मेट करने हेतु transformation कोड संपादित करें।
6

Test & Create

नमूना payloads के साथ परीक्षण करें और Create पर क्लिक करके integration को सक्रिय करें।
7

Done!

🎉 भुगतान इवेंट अब आपके Inngest फ़ंक्शन्स को स्वतः ट्रिगर करेंगे।

रूपांतरण कोड उदाहरण

बुनियादी घटना पेलोड

basic_event.js
function handler(webhook) {
  if (webhook.eventType === "payment.succeeded") {
    const p = webhook.payload.data;
    webhook.payload = {
      name: "payment.succeeded",
      data: {
        payment_id: p.payment_id,
        amount: (p.total_amount / 100).toFixed(2),
        currency: p.currency || "USD",
        customer_email: p.customer.email,
        customer_name: p.customer.name,
        payment_method: p.payment_method || "unknown"
      },
      user: {
        email: p.customer.email
      },
      ts: Math.floor(new Date(webhook.payload.timestamp).getTime() / 1000)
    };
  }
  return webhook;
}

सदस्यता घटना हैंडलर

subscription_event.js
function handler(webhook) {
  const s = webhook.payload.data;
  switch (webhook.eventType) {
    case "subscription.active":
      webhook.payload = {
        name: "subscription.started",
        data: {
          subscription_id: s.subscription_id,
          customer_email: s.customer.email,
          customer_name: s.customer.name,
          product_id: s.product_id,
          amount: (s.recurring_pre_tax_amount / 100).toFixed(2),
          frequency: s.payment_frequency_interval,
          next_billing: s.next_billing_date
        },
        user: {
          email: s.customer.email
        },
        ts: Math.floor(new Date(webhook.payload.timestamp).getTime() / 1000)
      };
      break;
    case "subscription.cancelled":
      webhook.payload = {
        name: "subscription.cancelled",
        data: {
          subscription_id: s.subscription_id,
          customer_email: s.customer.email,
          cancelled_at: s.cancelled_at,
          cancel_at_next_billing: s.cancel_at_next_billing_date
        },
        user: {
          email: s.customer.email
        },
        ts: Math.floor(new Date(webhook.payload.timestamp).getTime() / 1000)
      };
      break;
  }
  return webhook;
}

विवाद घटना हैंडलर

dispute_event.js
function handler(webhook) {
  if (webhook.eventType.startsWith("dispute.")) {
    const d = webhook.payload.data;
    webhook.payload = {
      name: webhook.eventType,
      data: {
        dispute_id: d.dispute_id,
        payment_id: d.payment_id,
        amount: (d.amount / 100).toFixed(2),
        status: d.dispute_status,
        stage: d.dispute_stage,
        remarks: d.remarks || "",
        urgent: webhook.eventType === "dispute.opened"
      },
      user: {
        email: d.customer?.email || "unknown"
      },
      ts: Math.floor(new Date(webhook.payload.timestamp).getTime() / 1000)
    };
  }
  return webhook;
}

सामान्य Inngest उपयोग के मामले

  • पुष्टि ईमेल भेजें
  • ग्राहक रिकॉर्ड अपडेट करें
  • रिफंड प्रोसेस करें
  • इनवॉइस जनरेट करें
  • इन्वेंटरी अपडेट करें
  • नए सब्सक्राइबर्स का स्वागत करें
  • रद्दीकरण प्रोसेस करें
  • नवीकरण रिमाइंडर भेजें
  • बिलिंग साइकिल अपडेट करें
  • विफल भुगतान संभालें
  • राजस्व मेट्रिक्स अपडेट करें
  • ग्राहक व्यवहार ट्रैक करें
  • रिपोर्ट जनरेट करें
  • डेटा को एनालिटिक्स प्लेटफ़ॉर्म से सिंक करें
  • चर्न दरें गणना करें

सुझाव

  • बेहतर कार्य संगठन के लिए वर्णनात्मक घटना नामों का उपयोग करें
  • कार्य निष्पादन के लिए उपयोगकर्ता संदर्भ शामिल करें
  • घटना क्रम के लिए उचित समय मुहैया करें
  • घटनाओं के बीच डेटा को लगातार संरचना करें
  • Inngest की पुनः प्रयास और त्रुटि हैंडलिंग सुविधाओं का उपयोग करें

समस्या निवारण

  • वेबहोॉक URL सही और सक्रिय है इसकी जाँच करें
  • सुनिश्चित करें Inngest फ़ंक्शन डिप्लॉय और सक्रिय है
  • सुनिश्चित करें इवेंट नाम फ़ंक्शन ट्रिगर्स से मेल खाते हैं
  • त्रुटियों के लिए Inngest फ़ंक्शन लॉग की समीक्षा करें
  • payload संरचना Inngest की अपेक्षाओं से मेल खाती है इसकी जाँच करें
  • सुनिश्चित करें इवेंट नाम सही ढंग से फॉर्मेट किए गए हैं
  • सुनिश्चित करें सभी आवश्यक फ़ील्ड शामिल हैं
  • Inngest के webhook परीक्षण उपकरण के साथ परीक्षण करें