pending ग्रांट बनाता है और आप से आपकी स्वयं की प्रणाली, प्रथम-पक्ष विक्रेता, या कोड के सीमित पूल से कुंजी मान आपूर्ति करने की प्रतीक्षा करता है।
अंत में आपके पास होगा:
- एक उत्पाद जिसमें लाइसेंस कुंजी अधिकार सेट है
manualपूर्ति के लिए। - एक वेबहुक लिसनर जो यह पता लगाता है कि ग्राहक कुंजी की प्रतीक्षा कर रहा है।
- एक पूर्ति कॉल जो कुंजी डिलीवर करता है और स्वतः ग्राहक को सूचित करता है।
fulfillment_mode सेटिंग।
कुंजी डिलीवर करने के लिए आप जिस एंडपॉइंट को कॉल करते हैं उसका एपीआई संदर्भ।
यह कैसे काम करता है
मैन्युअल पूर्ति केवल प्रदायगी चरण को बदलता है। एक बार डिलीवर हो जाने के बाद सक्रियण, सत्यापन, निष्क्रियता, समाप्ति, और निरसन स्वतः उत्पन्न कुंजी की तरह ही व्यवहार करते हैं।आवश्यकताएँ
इस गाइड का पालन करने के लिए आपको आवश्यकता होगी:- एक Dodo Payments व्यापारी खाता।
- आपका एपीआई कुंजी (
DODO_PAYMENTS_API_KEY) और डैशबोर्ड से वेबहुक सीक्रेट कुंजी। एपीआई कुंजी निर्माण गाइड देखें। - एक बैकेंड एंडपॉइंट जो वेबहुक्स प्राप्त कर सकता है।
https://test.dodopayments.com और टेस्ट-मोड क्रेडेंशियल्स का उपयोग करें। उत्पादन में जाने पर https://live.dodopayments.com और लाइव कुंजियों पर स्विच करें।
स्टेप 1 — मैन्युअल मोड में एक लाइसेंस कुंजी अधिकार बनाएँ
एक अधिकार वह पुन: प्रयोज्य परिभाषा है जिसे आप प्रदान करते हैं। एक लाइसेंस कुंजी अधिकार बनाएं और इसकीfulfillment_mode को manual पर सेट करें।
अपने डैशबोर्ड में अधिकार पर जाएं और एक नया अधिकार बनाने के लिए + पर क्लिक करें।
- पूर्ति मोड — डिफ़ॉल्ट रूप से
Automatic। यह मैन्युअल पूर्ति की अनुमति देने वाला सेटिंग है; इसे आप अगले चरण में बदलते हैं। - लाइसेंस अवधि — कितने समय तक प्रत्येक जारी की गई कुंजी मान्य रहती है, या कोई समाप्ति नहीं।
- सक्रियण सीमा — प्रति कुंजी अधिकतम सक्रियण, या असीमित।
- सक्रियण संदेश — वैकल्पिक उपयोगकर्ता-सामना संदेश जो वे कुंजी को सक्रिय करते समय दिखाया जाता है।
pending ग्रांट बनाता है। अधिकार बनाएं पर क्लिक करके सेव करें।
integration_config.fulfillment_mode को manual पर सेट करके अधिकार बनाएं।
Node.js
Python
cURL
fulfillment_mode डिफ़ॉल्ट रूप से auto पर होता है। इसे छोड़ने से, या किसी मौजूदा अधिकार को बिना बदले छोड़ने से, स्वचालित व्यवहार बना रहता है। केवल वह अधिकार जो स्पष्ट रूप से manual पर सेट होते हैं, पेंडिंग ग्रांट बनाते हैं।
स्टेप 2 — उत्पाद के साथ अधिकार संलग्न करें
उस उत्पाद को खोलें जिसे आप बेचना चाहते हैं, उन्नत सेटिंग्स → अधिकार और क्रेडिट विस्तार करें, और Step 1 में सेट किए गए लाइसेंस कुंजी अधिकार का चयन करें। एक अकेला उत्पाद इस लाइसेंस कुंजी को अन्य अधिकारों के साथ इस खरीददारी में डिलीवर कर सकता है। पूर्ति मोड अधिकार की संपत्ति है, उत्पाद की नहीं। चूंकि आपने इसे Step 1 में मैन्युअल पर सेट किया था, इसलिए इस अधिकार के साथ जुड़े प्रत्येक उत्पाद खरीद परpending लाइसेंस-कुंजी ग्रांट बनाता है — यहाँ कोई अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता नहीं है।
यदि आपके पास अभी तक कोई उत्पाद नहीं है, तो पहले एक (एकमुश्त या सब्सक्रिप्शन) बनाएं। चेकआउट के माध्यम से उत्पाद को बेचने के लिए वन-टाइम पेमेंट्स इंटीग्रेशन गाइड देखें।
स्टेप 3 — पेंडिंग ग्रांट्स का पता लगाएं
जब ग्राहक उत्पाद खरीदता है, तो Dodo Payments भनेरpending स्थिति में कोई कुंजी संलग्न नहीं होने के साथ एक ग्रांट बनाता है और एक entitlement_grant.created वेबहुक लॉन्च करता है। यह आपके लिए संकेत है कि ग्राहक एक कुंजी की प्रतीक्षा कर रहा है।
वेबहुक के लिए सुनें
एक वेबहुक एंडपॉइंट सेट अप करें (डैशबोर्ड में डेवलपर → वेबहुक्स) और पेंडिंग लाइसेंस-कुंजी ग्रांट्स पर कार्रवाई करें। कार्यान्वयन स्टैंडर्ड वेबहुक्स विशिष्टता का पालन करता है।integration_type: "license_key" ले जाता है, ताकि आप बिना किसी अतिरिक्त लुकअप के लाइसेंस-कुंजी ग्रांट को पहचान सकें। पूरा पेलोड एंटाइटलमेंट ग्रांट वेबहुक संदर्भ देखें।
या लिस्ट ग्रांट्स एपीआई को पोल करें
यदि आप वेबहुक्स पर निर्भर नहीं होना चाहते हैं, तो एंटाइटलमेंट के लिए ग्रांट्स सूचीबद्ध करें औरintegration_type और status से फिल्टर करें:
Node.js
cURL
स्टेप 4 — कुंजी डिलीवर करें
अपने स्वयं के सिस्टम से कुंजी मान प्राप्त करें, फिर इसे फुलफिल लाइसेंस कुंजी ग्रांट एंडपॉइंट के साथ भेजें। इसके लिए आपका सीक्रेट एपीआई कुंजी (संपादक अनुमति) की आवश्यकता होती है; यह सार्वजनिक लाइसेंस एंडपॉइंट्स में से एक नहीं है।Node.js
cURL
अनुरोध फील्ड्स
देने के लिए लाइसेंस कुंजी स्ट्रिंग। सफेद स्थान हटा दिया जाता है; एक खाली या सफेद स्थान अस्वीकृत किया जाता है। प्रति कुंजी सक्रियण सीमा। छोड़े जाने पर एंटाइटलमेंट कॉन्फ़िग पर निर्भर रहता है। प्रति कुंजी समाप्ति (ISO 8601)। छोड़े जाने पर एंटाइटलमेंट कॉन्फ़िग की अवधि पर निर्भर रहता है। सब्सक्रिप्शन-निर्गत ग्रांट्स के लिए, वैधता सब्सक्रिप्शन से जुडी रहती है। सफलता पर ग्रांटdelivered में चला जाता है, ग्राहक को स्वतः कुंजी भेजी जाती है (उसी ईमेल के माध्यम से जो वे स्वतः पूर्ति के तहत प्राप्त करते), और entitlement_grant.delivered फायर होता है।
ग्राहक को लाइसेंस कुंजी, उत्पाद, सक्रियण सीमा, समाप्ति, और आपके सक्रियण निर्देशों के साथ एक ईमेल प्राप्त होता है:
आपको स्वयं कुंजी ईमेल करने की आवश्यकता नहीं है — जब ग्रांट पूरा होता है तो डिलीवरी स्वतः हो जाती है।
स्टेप 5 — त्रुटियों और पुन: प्रयासों को संभालें
एंडपॉइंट किसी भी चीज़ को डिलीवर करने से पहले ग्रांट को मान्य करता है। इन प्रतिक्रियाओं को संभालें:| स्थिति | अर्थ | क्या करें |
|---|---|---|
200 | कुंजी वितरित हुई, ग्रांट अब delivered। | समाप्त। |
400 | न तो लाइसेंस-कुंजी ग्रांट, और न ही कुंजी खाली/सफेद स्थान है। | अनुरोध सुधारें; जैसा है फिर से प्रयास न करें। |
404 | आपके व्यवसाय के लिए उस आईडी के साथ कोई ग्रांट नहीं। | grant_id सत्यापित करें। |
409 | ग्रांट पूर्ति की प्रतीक्षा नहीं कर रहा (पहले से ही वितरित या पहले से ही कुंजी है), या कुंजी मान पहले से मौजूद है। | यदि पहले से वितरित है, तो सफल मानें। यदि एक डुप्लिकेट कुंजी है, तो एक अलग कुंजी प्रदान करें। |
422 | अनुरोध बॉडी सत्यापन में विफल (उदा. activations_limit < 1)। | फील्ड को सही करें और पुनः प्रयास करें। |
5xx) पर पुनः प्रयास करना सुरक्षित है। प्रत्येक ग्रांट को केवल एक बार भरा जा सकता है, इसलिए सफल-पर बिना मान्यता प्राप्त कॉल के बाद पुनः प्रयास 409 लौटाता है बजाय इसके कि एक दूसरी कुंजी जारी या दोहराऊं ईमेल भेजता। अपना एंटाइटलमेंट id को अपनी इडेम्पोटेंसी कुंजी के रूप में उपयोग करें।
प्रवाह को सत्यापित करें
- टेस्ट मोड में उत्पाद खरीदें (चेकआउट गाइड्स देखें)।
- पुष्टि करें कि आपका वेबहुक
entitlement_grant.createdके साथstatus: "pending"औरintegration_type: "license_key"प्राप्त हुआ है, या वह ग्रांट सूची ग्रांट्स प्रतिक्रिया में उन फिल्टर्स के साथ प्रकट होता है। - टेस्ट कुंजी के साथ फुलफिल एंडपॉइंट को कॉल करें।
- पुष्टि करें कि प्रतिक्रिया
status: "delivered"को एक भरी हुईlicense_keyके साथ दिखाती है, ग्राहक को कुंजी ईमेल मिलती है, औरentitlement_grant.deliveredफायर होता है।
संबंधित एपीआई संदर्भ
fulfillment_mode: manual के साथ लाइसेंस कुंजी एंटाइटलमेंट बनाएं।
integration_type और status द्वाराभंड के रूप में फ़िल्टर करें।
कुंजी मान वितरित करें और ग्रांट को वितरित में ट्रांज़िशन करें।
entitlement_grant.* घटनाएँ जो पेंडिंग और वितरित ग्रांट्स का संकेत देती हैं।
Verify the Flow
- Buy the product in test mode (see the checkout guides).
- Confirm your webhook received
entitlement_grant.createdwithstatus: "pending"andintegration_type: "license_key", or that the grant appears in the List Grants response with those filters. - Call the fulfill endpoint with a test key.
- Confirm the response shows
status: "delivered"with a populatedlicense_key, the customer receives the key email, andentitlement_grant.deliveredfires.
Once delivered, the customer can activate and validate the key against the public license endpoints exactly like an auto-generated key.
Related API Reference
Create Entitlement
Create the License Key entitlement with
fulfillment_mode: manual.List Grants
Filter by
integration_type and status to find pending grants.Fulfill License Key Grant
Deliver the key value and transition the grant to delivered.
Entitlement Grant Webhooks
The
entitlement_grant.* events that signal pending and delivered grants.