अवलोकन
Dodo Payments API मानक HTTP स्थिति कोड और कस्टम त्रुटि कोड का उपयोग करता है ताकि API अनुरोधों की सफलता या विफलता को इंगित किया जा सके। जब कोई त्रुटि होती है, तो API एक उपयुक्त HTTP स्थिति कोड और त्रुटि के बारे में विस्तृत जानकारी प्रदान करने वाले JSON प्रतिक्रिया को लौटाता है। प्रत्येक त्रुटि प्रतिक्रिया में शामिल हैं:- एक HTTP स्थिति कोड जो त्रुटि की सामान्य श्रेणी को इंगित करता है
- एक विशिष्ट त्रुटि कोड जो त्रुटि की सटीक प्रकृति की पहचान करता है
- एक मानव-पठनीय त्रुटि संदेश जो बताता है कि क्या गलत हुआ
- जब लागू हो, तो त्रुटि के बारे में अतिरिक्त विवरण
- एकीकरण मुद्दों को डिबग करने के लिए
- अपने एप्लिकेशन में उचित त्रुटि हैंडलिंग लागू करने के लिए
- अंतिम उपयोगकर्ताओं को अर्थपूर्ण फीडबैक प्रदान करने के लिए
- एक मजबूत भुगतान प्रसंस्करण प्रणाली बनाए रखने के लिए
मानक API त्रुटि कोड
| त्रुटि कोड | HTTP स्थिति | विवरण |
|---|---|---|
| 400 | खराब अनुरोध | अनुरोध गलत था या इसमें अमान्य पैरामीटर थे |
| 401 | अनधिकृत | प्रमाणीकरण विफल रहा या API कुंजी अमान्य है |
| 403 | निषिद्ध | API कुंजी को अनुरोधित संसाधन तक पहुँचने की अनुमति नहीं है |
| 404 | नहीं मिला | अनुरोधित संसाधन मौजूद नहीं है |
| 405 | विधि की अनुमति नहीं है | HTTP विधि इस एंडपॉइंट के लिए समर्थित नहीं है |
| 409 | संघर्ष | अनुरोध संसाधन की वर्तमान स्थिति के साथ संघर्ष करता है |
| 422 | असंसाध्य इकाई | अनुरोध अच्छी तरह से निर्मित था लेकिन इसमें अर्थ संबंधी त्रुटियाँ थीं |
| 429 | बहुत अधिक अनुरोध | दर सीमा पार हो गई |
| 500 | आंतरिक सर्वर त्रुटि | हमारे सर्वरों पर एक अप्रत्याशित त्रुटि हुई |
| 502 | खराब गेटवे | सर्वर को एक अपस्ट्रीम सर्वर से अमान्य प्रतिक्रिया मिली |
| 503 | सेवा अनुपलब्ध | सेवा अस्थायी रूप से अनुपलब्ध है |
| 504 | गेटवे टाइमआउट | सर्वर अपस्ट्रीम प्रतिक्रिया की प्रतीक्षा करते समय टाइमआउट हो गया |
त्रुटि प्रतिक्रिया प्रारूप
जब कोई त्रुटि होती है, तो API निम्नलिखित संरचना के साथ JSON प्रतिक्रिया लौटाता है:त्रुटि कोड संदर्भ
-
ACTIVATION_LIMIT_LESS_THAN_CURRENT_AMOUNT- Trigger: License-key activations: new limit < existing instance count
- Message: नई सक्रियण सीमा वर्तमान इंस्टेंस गिनती से कम नहीं हो सकती
-
ADDONS_IN_USAGE_BASED_BILLING_NOT_SUPPORTED- Trigger: Attempt to add addons to usage-based billing subscriptions
- Message: यूसेज बेज़्ड बिलिंग के लिए सब्सक्रिप्शन में ऐडऑन समर्थित नहीं हैं
-
ADDONS_NOT_ALLOWED_FOR_ON_DEMAND- Trigger: Attempt to add addons to on-demand subscriptions
- Message: ऑन-डिमांड सदस्यताओं के लिए ऐडऑन की अनुमति नहीं है
-
BRAND_MISMATCH- Trigger: Cart items belong to different brands
- Message: प्रोडक्ट कार्ट के सभी आइटम को एक ही ब्रांड से होना चाहिए
-
BRAND_NOT_ENABLED- Trigger: Brand is disabled or not active
- Message: दिया गया ब्रांड सक्षम नहीं है
-
BRAND_SUBMISSION_NOT_ENABLED- Trigger: Brand verification resubmission feature not enabled
- Message: ब्रांड सत्यापन पुनःप्रस्तुति सक्षम नहीं है
-
CHARGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Trigger: Attempt to charge subscription scheduled for cancellation
- Message: सब्सक्रिप्शन रद्दीकरण के लिए निर्धारित है
-
CHECKOUT_SESSION_CONSUMED- Trigger: Checkout session has already generated a payment
- Message: चेकआउट सत्र पहले ही उपयोग किया जा चुका है
-
DISCOUNT_CODE_ALREADY_EXISTS- Trigger: Duplicate discount code creation
- Message: डिस्काउंट कोड पहले से मौजूद है
-
DISCOUNT_CODE_EXPIRED- Trigger: Discount code past its
expires_atdate - Message: डिस्काउंट कोड की अवधि समाप्त
- Trigger: Discount code past its
-
DISCOUNT_CODE_USAGE_LIMIT_EXCEEDED- Trigger: Discount reused after
usage_limitreached - Message: उपयोग सीमा times_used से कम नहीं हो सकती / डिस्काउंट कोड ने उपयोग सीमा छू ली
- Trigger: Discount reused after
-
DISCOUNT_NOT_AVAILABLE_FOR_ON_DEMAND- Trigger: Code applied to on-demand subscription
- Message: ऑन-डिमांड सदस्यताओं के लिए डिस्काउंट कूपन उपलब्ध नहीं है
-
DISCOUNT_NOT_AVAILABLE_FOR_PRODUCT- Trigger: Code applied to unrelated product(s)
- Message: इस उत्पाद के लिए डिस्काउंट कूपन उपलब्ध नहीं है
-
DUPLICATE_LINE_ITEMS_IN_REQUEST- Trigger: Same
item_idappears twice initems[] - Message: आइटम्स ऐरे में डुप्लिकेट item_ids निर्दिष्ट हैं
- Trigger: Same
-
DUPLICATE_METER_IDS_IN_REQUEST- Trigger: Same meter ID appears multiple times in request
- Message: डुप्लिकेट मीटर आईडी की अनुमति नहीं है
-
EXCHANGE_RATE_NOT_FOUND- Trigger: No FX rate for
from → tocurrency pair - Message: मुद्रा से मुद्रा में रूपांतरण के लिए विनिमय दर नहीं मिली
- Trigger: No FX rate for
-
EXISTING_REFUND_REQUEST_PROCESSING- Trigger: Previous refund request still being processed
- Message: स्थिति “Pending” वाले रिफंड अनुरोध को अभी भी संसाधित किया जा रहा है
-
INACTIVE_LICENSE_KEY- Trigger: Key status ≠
ACTIVE - Message: लाइसेंस कुंजी सक्रिय नहीं है
- Trigger: Key status ≠
-
INACTIVE_SUBSCRIPTION_PLAN_CHANGE_NOT_SUPPORTED- Trigger: Plan change on inactive subscription
- Message: निष्क्रिय सब्सक्रिप्शन के लिए योजनाओं को बदलना समर्थित नहीं है
-
INSUFFICIENT_WALLET_FUNDS- Trigger: Wallet balance < debit amount
- Message: वॉलेट में अपर्याप्त फंड
-
INTEGER_CONVERSION_FAILURE- Trigger: Any integer ↔ string/decimal conversion that fails server-side
- Message: पूर्णांक रूपांतरण विफल
-
INTERNAL_SERVER_ERROR- Trigger: Uncaught exceptions; you should log details server-side
- Message: कोई सार्वजनिक संदेश नहीं (सामान्य 500)
-
INVALID_DISCOUNT_CODE- Trigger: Code does not exist / not applicable
- Message: अमान्य डिस्काउंट कोड / डिस्काउंट कोड को कार्ट के किसी भी उत्पाद पर लागू नहीं किया जा सकता
-
INVALID_PERCENTAGE- Trigger: Percent amount > 100% (or 10,000 basis points)
- Message: प्रतिशत राशि 10000 से अधिक नहीं हो सकती / डिस्काउंट कोड राशि 100% से अधिक नहीं हो सकती
-
INVALID_QUANTITY- Trigger: Invalid quantity specified for usage-based pricing
- Message: यूसेज-बेस्ड प्राइस उत्पादों में केवल 1 मात्रा की अनुमति है
-
INVALID_QUERY_PARAMS- Trigger: Mutually exclusive / malformed query parameters
- Message: क्वेरी पैरामीटर में केवल time_frame या (start, end) ही होना चाहिए
-
INVALID_REQUEST_BODY- Trigger: Malformed JSON or schema violation
- Message: आपका अनुरोध बॉडी अमान्य है। कृपया अपने अनुरोध हेडर और ऑब्जेक्ट की जांच करें।
-
INVALID_REQUEST_PARAMETERS- Trigger: Semantics wrong (e.g. date in past)
- Message: next_billing_date को भूतकालिक समय में नहीं बदला जा सकता
-
INVALID_SUGGESTED_PRICE- Trigger: PWYW price < minimum allowed price
- Message: सुझाया गया मूल्य न्यूनतम मूल्य से कम नहीं हो सकता। यदि आप जितना चाहें उतना भुगतान करते हैं, तो मूल्य को न्यूनतम स्वीकार्य राशि माना जाता है
-
INVALID_TAX_ID- Trigger: VAT/GST/TIN failed validation
- Message: टैक्स आईडी अमान्य है
-
LICENSE_KEY_LIMIT_REACHED- Trigger: Activations = limit
- Message: लाइसेंस कुंजी सक्रियण सीमा प्राप्त हो गई है
-
LICENSE_KEY_NOT_FOUND- Trigger: Instance ID or key ID invalid
- Message: लाइसेंस कुंजी इंस्टेंस नहीं मिला या यह इस लाइसेंस कुंजी से संबंधित नहीं है
-
LINE_ITEM_FULLY_REFUNDED- Trigger: Attempt to refund already fully refunded line item
- Message: लाइन आइटम का पूरा रिफंड हो चुका है, आगे रिफंड नहीं किया जा सकता।
-
LINE_ITEM_NOT_FOUND- Trigger: Item ID not part of the referenced payment
- Message: भुगतान में लाइन आइटम नहीं मिला
-
LINE_ITEM_PRORATED- Trigger: Refund or update attempted on a prorated line
- Message: लाइन आइटम का रिफंड नहीं किया जा सकता क्योंकि यह प्रोरेटेड है
-
LINE_ITEM_REFUND_AMOUNT_TOO_HIGH- Trigger: Refund amount > paid amount (tax incl.)
- Message: लाइन आइटम द्वारा अनुरोधित टैक्स सहित रिफंड राशि है जो भुगतान राशि से अधिक है
-
LINE_ITEM_REFUND_AMOUNT_TOO_LOW- Trigger: Refund amount below minimum threshold
- Message: लाइन आइटम द्वारा अनुरोधित रिफंड राशि बहुत कम है
-
MAXIMUM_KEYS_REACHED- Trigger: Metadata / custom-fields exceeded 50 pairs
- Message: 50 कुंजी-मूल्य जोड़ी से अधिक है
-
MERCHANT_NOT_LIVE- Trigger: Business still in test/sandbox mode
- Message: मर्चेंट लाइव नहीं है
-
METER_IS_DELETED- Trigger: Attempt to use deleted meter
- Message: मीटर पहले ही हटा दिया गया है
-
MISSING_ADDON_IDS- Trigger:
addon_idlist empty or unknown IDs - Message: एक या अधिक उत्पाद आईडी मौजूद नहीं हैं:
- Trigger:
-
MISSING_METER_IDS- Trigger: Meter ID list empty or contains invalid IDs
- Message: एक या अधिक मीटर आईडी मौजूद नहीं हैं:
-
MISSING_PRODUCT_INFORMATION- Trigger: Product exists but mandatory info missing
- Message: उत्पाद मौजूद है लेकिन अन्य आवश्यक जानकारी गायब या अमान्य है
-
NEGATIVE_BALANCE_ADJUSTMENT- Trigger: Attempt to make wallet balance negative
- Message: वॉलेट शेष को नकारात्मक बनाने की अनुमति नहीं है
-
NO_ELIGIBLE_PAYMENT_METHODS- Trigger: After filtering, nothing left
- Message: कोई योग्य भुगतान विधि नहीं मिली
-
NO_EXPIRY_ON_SUBSCRIPTION_LICENSE_KEYS- Trigger: Attempt to set expiry on sub-based key
- Message: सब्सक्रिप्शन-आधारित लाइसेंस कुंजी के लिए समाप्ति तिथि सेट नहीं की जा सकती
-
NOT_FOUND- Trigger: Generic 404 for any missing resource
- Message: आइटम नहीं मिला (या अधिक विशिष्ट)
-
ON_DEMAND_PLAN_CHANGE_NOT_SUPPORTED- Trigger: Plan swap not allowed for on-demand
- Message: ऑन-डिमांड सदस्यताओं के लिए योजनाओं को बदलना समर्थित नहीं है
-
ON_DEMAND_SUBSCRIPTIONS_NOT_ENABLED- Trigger: Business has feature flag off
- Message: इस बिजनेस के लिए ऑन-डिमांड सदस्यताएं सक्षम नहीं हैं
-
ON_DEMAND_USAGE_BASED_BILLING_NOT_SUPPORTED- Trigger: Attempt to use on-demand with usage-based billing
- Message: यूसेज बेज़्ड बिलिंग के लिए ऑन डिमांड सदस्यताएं समर्थित नहीं हैं
-
PAY_AS_YOU_WANT_AMOUNT_REQUIRED- Trigger: Price missing for PWYW product
- Message: कि आप जितना चाहें उतना भुगतान करें उत्पाद के लिए राशि अनिवार्य है
-
PAYMENT_ALREADY_REFUNDED- Trigger: Duplicate refund
- Message: इस भुगतान का पहले ही रिफंड किया जा चुका है
-
PAYMENT_HAS_BEEN_REFUNDED- Trigger: Payment has been fully refunded
- Message: भुगतान आईडी का पूरा रिफंड हो चुका है।
-
PAYMENT_NOT_SUCCEEDED- Trigger: Attempt to refund/process unsuccessful payment
- Message: दिया गया भुगतान सफल नहीं हुआ है
-
PLAN_CHANGE_NOT_ALLOWED_FOR_SCHEDULED_CANCELLATION- Trigger: Plan change attempted on subscription scheduled for cancellation
- Message: सब्सक्रिप्शन रद्दीकरण के लिए निर्धारित है
-
PREVIOUS_PAYMENT_PENDING- Trigger: Attempt to create charge while previous is in non-terminal state
- Message: नया चार्ज नहीं बनाया जा सकता क्योंकि पिछला भुगतान अभी तक सफल नहीं हुआ है
-
PRODUCT_CART_EMPTY- Trigger: Empty product cart submitted
- Message: product_cart खाली है
-
PRODUCT_IS_DELETED- Trigger: Product soft-deleted
- Message: कोई संदेश नहीं
-
REFUND_AMOUNT_EXCEEDS_PAID_AMOUNT- Trigger: Aggregate refund amount > paid amount
- Message: गणना किया गया रिफंड राशि भुगतान राशि से अधिक है
-
REFUND_WINDOW_EXPIRED- Trigger: Outside allowable refund window
- Message: भुगतान निर्माण के दिन बाद रिफंड शुरू नहीं किया जा सकता। support@dodopayments.com से संपर्क करें।
-
REQUEST_AMOUNT_BELOW_MINIMUM- Trigger: Amount < product minimum
- Message: राशि उत्पाद के लिए निर्दिष्ट न्यूनतम राशि से कम नहीं हो सकती
-
SUBSCRIPTION_EXPIRED- Trigger: Billing past
ends_at - Message: सब्सक्रिप्शन की समयसीमा समाप्त हो गई है, नया चार्ज नहीं बनाया जा सकता
- Trigger: Billing past
-
SUBSCRIPTION_INACTIVE- Trigger: Status ≠
ACTIVE - Message: सब्सक्रिप्शन सक्रिय नहीं है
- Trigger: Status ≠
-
SUBSCRIPTION_NOT_ON_DEMAND- Trigger: Expected on-demand but got fixed interval
- Message: सब्सक्रिप्शन पहले ही ऑन-डिमांड नहीं है
-
SUBSCRIPTION_PAYMENT_RETRY_LIMIT_EXCEEDED- Trigger: Subscription payment retries exceeded maximum attempts
- Message: इस सब्सक्रिप्शन के लिए 10 प्रयासों की अधिकतम पुनः प्रयास सीमा पार हो गई है
-
TOO_MANY_REQUESTS- Trigger: 429 rate-limit
- Message: कोई संदेश नहीं
-
TOTAL_PAYMENT_AMOUNT_BELOW_MINIMUM_AMOUNT- Trigger: Combined cart total < gateway minimum
- Message: भुगतान को प्रोसेस करने के लिए न्यूनतम राशि आवश्यक है
-
UNABLE_TO_EDIT_PRIMARY_BRAND- Trigger: Attempt to update primary brand via regular API
- Message: इस API एंडपॉइंट के माध्यम से प्राथमिक ब्रांड को अपडेट नहीं किया जा सकता।
-
UNAUTHORIZED- Trigger: No API key or invalid token / scope
- Message: आपको यह क्रिया करने की अनुमति नहीं है
-
UNSUPPORTED_ACTION- Trigger: Unsupported action for resource type
- Message: यूसेज-आधारित सब्सक्रिप्शन के लिए योजनाओं को बदलना समर्थित नहीं है
-
UNSUPPORTED_BILLING_CURRENCY- Trigger: Subscriptions restricted to USD
- Message: सदस्यताओं के लिए गैर-USD बिलिंग मुद्रा समर्थित नहीं है
-
UNSUPPORTED_COUNTRY- Trigger: Geo not yet supported
- Message: देश वर्तमान में समर्थित नहीं है
-
UNSUPPORTED_CURRENCY- Trigger: Product or addon currency invalid
- Message: मुद्रा वर्तमान में समर्थित नहीं है / केवल USD और INR उत्पाद वर्तमान में समर्थित हैं / ऐडऑन कीमत के लिए केवल USD और INR समर्थित हैं / billing_currency के लिए केवल USD या INR ही अनुरोध किया जा सकता है / मुद्रा समर्थित नहीं है / भारतीय कार्ड सदस्यताओं के लिए अप्रत्याशित मुद्रा
-
UNSUPPORTED_DISCOUNT_TYPE- Trigger: Flat-amount discounts, etc., not yet live
- Message: फिलहाल केवल प्रतिशत डिस्काउंट कोड समर्थित हैं
-
UNSUPPORTED_PAYMENT_CURRENCY- Trigger: Payment currency blocked for connector
- Message: इस लेनदेन के लिए INR लेनदेन समर्थित नहीं है
-
UNSUPPORTED_TAX_CATEGORY- Trigger: Tax category string not in enum
- Message: श्रेणी वर्तमान में समर्थित नहीं है
-
UNSUCCESSFUL_PAYMENT_ID- Trigger: Payment ID references unsuccessful payment
- Message: भुगतान ID की स्थिति असफल है।
-
ZERO_AMOUNT_PAYMENT_REFUND_NOT_ALLOWED- Trigger: Attempt to refund zero-amount payment
- Message: शून्य मुद्रा राशि वाले भुगतान का रिफंड नहीं किया जा सकता
सर्वोत्तम प्रथाएँ
- हमेशा अपने एप्लिकेशन में त्रुटियों को सुचारू रूप से संभालें
- उचित त्रुटि लॉगिंग लागू करें
- अंतिम उपयोगकर्ताओं के लिए उपयुक्त त्रुटि संदेशों का उपयोग करें
- अस्थायी त्रुटियों के लिए पुनः प्रयास तर्क लागू करें
- अनसुलझे मुद्दों के लिए सहायता से संपर्क करें