गड़बड़ी के कोड

इस पेज पर, कैननिकल गड़बड़ी कोड के बारे में बताया गया है. Universal Commerce Protocol (यूनिवर्सल कॉमर्स प्रोटोकॉल) का इस्तेमाल करके, Google के साथ इंटिग्रेट करते समय, आपको अपनी एपीआई प्रतिक्रियाओं में ये कोड देने होंगे. गड़बड़ी के कोड एक जैसे होने से, साफ़ तौर पर जानकारी मिलती है. साथ ही, Google को अलग-अलग स्थितियों को सही तरीके से हैंडल करने में मदद मिलती है.

कारोबार से जुड़ी गड़बड़ी होने पर, आपके एपीआई को ऐसा जवाब देना चाहिए जिसमें टेबल में दिया गया सही code शामिल हो. गड़बड़ी के कुछ कोड के लिए, जवाब में messages ऐरे के लिए खास JSON स्ट्रक्चर का इस्तेमाल करने का सुझाव दिया जाता है. ये उदाहरण, टेबल के नीचे दिए गए गड़बड़ी के कोड के उदाहरण सेक्शन में दिए गए हैं. इन उदाहरणों में, आपको path फ़ील्ड का इस्तेमाल करना चाहिए. इससे अनुरोध या जवाब ऑब्जेक्ट में गड़बड़ी की जगह के बारे में ज़्यादा जानकारी दी जा सकती है.

गड़बड़ी ठीक करना

गड़बड़ियों की शिकायत करने का तरीका, गड़बड़ी के टाइप पर निर्भर करता है:

  • प्रोटोकॉल/सर्वर से जुड़ी गड़बड़ियां:

    • अनुरोधों के गलत फ़ॉर्मैट में होने, पुष्टि न हो पाने या सर्वर के उपलब्ध न होने जैसी समस्याओं के लिए, स्टैंडर्ड एचटीटीपी स्टेटस कोड का इस्तेमाल करें. जैसे, क्लाइंट की गड़बड़ियों के लिए 4xx और सर्वर की गड़बड़ियों के लिए 5xx.
    • ज़्यादा जानकारी के लिए, यूसीपी स्पेसिफ़िकेशन देखें.
  • कारोबार के लॉजिक से जुड़ी गड़बड़ियां/चेतावनी:

    • HTTP 200 OK स्टेटस दिखाएं. इसमें पेमेंट अस्वीकार होने और धोखाधड़ी की वजह से पेमेंट खारिज होने के मामले शामिल हैं. भले ही, डाउनस्ट्रीम पेमेंट गेटवे से 4xx या 5xx गड़बड़ी का मैसेज मिला हो.
    • JSON रिस्पॉन्स बॉडी में मौजूद messages कलेक्शन में समस्या के बारे में जानकारी दें.
    • messages कलेक्शन में मौजूद हर ऑब्जेक्ट में ये शामिल होने चाहिए:
      • type: "error" या "warning"
      • code: इस गाइड से लिया गया स्टैंडर्ड कोड. "invalid" जैसे सामान्य या पहचाने न जाने वाले कोड का इस्तेमाल न करें.
      • content: ऐसा ब्यौरा जिसे आसानी से पढ़ा जा सके.
      • severity: type की वैल्यू "error" होने पर, यह एट्रिब्यूट ज़रूरी है. इस फ़ील्ड से साफ़ तौर पर पता चलता है कि गड़बड़ी गंभीर (unrecoverable) है या इससे खरीदार को समस्या ठीक करने के लिए कहा जा सकता है (recoverable). इसके लिए, गड़बड़ी कोड पर भरोसा करने की ज़रूरत नहीं होती.

मैसेज के टाइप: गड़बड़ी बनाम चेतावनी

मैसेज ऐरे में मौजूद type फ़ील्ड से, समस्या की गंभीरता का पता चलता है. यूसीपी, मुख्य तौर पर दो तरह के होते हैं:

  • error: इससे पता चलता है कि अनुरोध की गई कार्रवाई पूरी नहीं की जा सकी. ऐसा हो सकता है कि प्लैटफ़ॉर्म या उपयोगकर्ता को कार्रवाई करनी पड़े और फिर से कोशिश करनी पड़े. message-error specification देखें.
    • किसी गड़बड़ी के गंभीर होने का पता, गड़बड़ी code से नहीं, बल्कि severity फ़ील्ड (unrecoverable या recoverable) से चलता है.
  • warning: इससे पता चलता है कि कार्रवाई को ब्लॉक नहीं किया गया है, लेकिन उपयोगकर्ता को कुछ ज़रूरी जानकारी देनी चाहिए. इससे प्रोसेस रुकती नहीं है, लेकिन ज़रूरी जानकारी मिलती है. message-warning specification देखें.

गड़बड़ी के कोड की जानकारी

गड़बड़ी का कोड सुझाया गया टाइप ब्यौरा
out_of_stock गड़बड़ी यह आइटम उपलब्ध नहीं है. आम तौर पर, इससे ucp.status: “error” होता है. एक से ज़्यादा आइटम के चेकआउट में आइटम इंडेक्स की जानकारी देने के लिए, path फ़ील्ड का इस्तेमाल करें. यहां दिया गया उदाहरण देखें.
item_unavailable गड़बड़ी आइटम नहीं मिला. आम तौर पर, इस वजह से आइटम से जुड़ी गड़बड़ियों के लिए ucp.status: “error” मिलता है.
item_ineligible गड़बड़ी यह आइटम मौजूद है, लेकिन इसे यूसीपी का इस्तेमाल करके नहीं खरीदा जा सकता.
quantity_invalid_limit_exceeded गड़बड़ी अनुरोध की गई संख्या, तय सीमा से ज़्यादा है. यहां दिया गया उदाहरण देखें.
quantity_invalid_minimum_not_met गड़बड़ी मांगी गई संख्या, कम से कम ज़रूरी संख्या से कम है.
totals_changed चेतावनी पिछले चरण के बाद से, कीमत या अन्य कुल रकम में बदलाव हुआ है. path फ़ील्ड का इस्तेमाल करके यह बताएं कि कौनसे कुल योग में बदलाव हुआ है. यहां दिया गया उदाहरण देखें.
totals_invalid_minimum_not_met गड़बड़ी ऑर्डर वैल्यू, कम से कम ज़रूरी शर्त को पूरा नहीं करती.
missing_buyer_info गड़बड़ी खरीदार की ज़रूरी जानकारी मौजूद नहीं है. path फ़ील्ड का इस्तेमाल करके, छूटे हुए फ़ील्ड की जानकारी दें. यहां दिया गया उदाहरण देखें.
address_undeliverable गड़बड़ी यह यूसीपी का स्टैंडर्ड गड़बड़ी कोड है. path फ़ील्ड का इस्तेमाल करके, किसी खास डेस्टिनेशन या पाबंदी वाले सामान के बारे में बताएं. यहां दिया गया उदाहरण देखें.
address_unverifiable गड़बड़ी दिए गए पते की पुष्टि नहीं की जा सकी. path फ़ील्ड का इस्तेमाल करके यह बताएं कि यह पता, सामान भेजने का पता है या बिलिंग पता. यहां दिया गया उदाहरण देखें.
missing_fulfillment_info गड़बड़ी आइटम भेजने के लिए ज़रूरी जानकारी मौजूद नहीं है. path फ़ील्ड का इस्तेमाल करके, छूटे हुए फ़ील्ड की जानकारी दें.
eligibility_invalid गड़बड़ी उपयोगकर्ता या ऑर्डर, कार्रवाई के लिए ज़रूरी शर्तें पूरी नहीं करता. यह यूसीपी का स्टैंडर्ड गड़बड़ी कोड है. ज़्यादा जानकारी के लिए, path फ़ील्ड का इस्तेमाल करें.
discount_code_invalid चेतावनी छूट का कोड अमान्य है. कोड नहीं मिला या गलत है.
discount_code_expired चेतावनी छूट के कोड की समयसीमा खत्म हो गई है.
discount_code_already_applied चेतावनी छूट का कोड पहले ही लागू किया जा चुका है.
discount_code_combination_disallowed चेतावनी इस छूट वाले कोड को अन्य ऑफ़र के साथ इस्तेमाल नहीं किया जा सकता.
discount_code_user_not_logged_in चेतावनी छूट का कोड इस्तेमाल करने के लिए, उपयोगकर्ता को लॉग इन करना होगा.
discount_code_user_ineligible चेतावनी उपयोगकर्ता, छूट का कोड इस्तेमाल करने के लिए योग्य नहीं है.
missing_billing_info गड़बड़ी बिलिंग की ज़रूरी जानकारी मौजूद नहीं है. बिलिंग पते के छूटे हुए फ़ील्ड की जानकारी देने के लिए, path फ़ील्ड का इस्तेमाल करें. यहां दिया गया उदाहरण देखें.
identity_required गड़बड़ी अनुरोध की गई कार्रवाई के लिए, उपयोगकर्ता की पहचान ज़रूरी है. हालांकि, यह मौजूद नहीं थी, अमान्य थी, इसकी समयसीमा खत्म हो गई थी या इसकी पुष्टि नहीं की जा सकी. REST के लिए, स्टेटस कोड 401 का इस्तेमाल करें. यहां दिया गया उदाहरण देखें.
insufficient_scope गड़बड़ी उपयोगकर्ता की पहचान करने वाला टोकन मान्य है, लेकिन इसमें वे स्कोप नहीं हैं जिनकी ज़रूरत इस कार्रवाई के लिए है. REST के लिए, 403 स्टेटस कोड का इस्तेमाल करें. यहां दिया गया उदाहरण देखें.
payment_declined गड़बड़ी कार्ड जारी करने वाले बैंक या कंपनी ने पेमेंट अस्वीकार कर दिया है. इसकी वजहें ये हो सकती हैं: खाते में ज़रूरी रकम न होना, धोखाधड़ी का शक होना या कार्ड से जुड़ी समस्याएं. यहां दिया गया उदाहरण देखें.
payment_failed गड़बड़ी प्रोसेसिंग के दौरान तकनीकी समस्या की वजह से पेमेंट पूरा नहीं हो सका. जैसे, नेटवर्क की गड़बड़ी, गेटवे टाइम आउट या इंटिग्रेशन की समस्या. इस वजह से, बैंक फ़ैसला नहीं ले सका.
payment_ineligible गड़बड़ी चुना गया पेमेंट का तरीका स्वीकार नहीं किया जाता. यह तब इस्तेमाल किया जाता है, जब उपयोगकर्ता को पेमेंट का कोई दूसरा तरीका आज़माना हो.
rejected_for_fraud गड़बड़ी धोखाधड़ी की आशंका की वजह से, ऑर्डर अस्वीकार कर दिया गया. यहां दिया गया उदाहरण देखें.

गड़बड़ी के कोड के उदाहरण

इस सेक्शन में, खास गड़बड़ी कोड के लिए messages कलेक्शन के JSON उदाहरण दिए गए हैं.

out_of_stock

एक आइटम के लिए चेकआउट:

{
  "type": "error",
  "severity": "unrecoverable",
  "code": "out_of_stock",
  "content": "Unfortunately, the item 'Example Product 1' is out of stock."
}

एक से ज़्यादा आइटम के लिए चेकआउट:

path फ़ील्ड का इस्तेमाल करके, उस आइटम का इंडेक्स बताएं जो स्टॉक में नहीं है.

{
  "type": "error",
  "severity": "recoverable",
  "code": "out_of_stock",
  "path": "$.checkout.line_items[1]",
  "content": "The item 'Example Product 2' is out of stock. Remove it from your cart to continue."
}

quantity_invalid_limit_exceeded

{
  "type": "error",
  "severity": "recoverable",
  "code": "quantity_invalid_limit_exceeded",
  "path": "$.checkout.line_items[0].quantity",
  "content": "The requested quantity for 'Example Product 2' exceeds the maximum allowed limit of 5."
}

totals_changed

{
  "type": "warning",
  "code": "totals_changed",
  "path": "$.totals[2]",
  "content": "Shipping cost has changed."
}

missing_buyer_info

{
  "type": "error",
  "severity": "recoverable",
  "code": "missing_buyer_info",
  "path": "$.buyer.first_name",
  "content": "Missing buyer first name."
}

address_undeliverable

ऑर्डर-लेवल की पाबंदी (जैसे, पिन कोड इस्तेमाल नहीं किया जा सकता):

{
  "type": "error",
  "severity": "recoverable",
  "code": "address_undeliverable",
  "content": "Delivery is not supported for the provided zipcode."
}

सामान के लेवल पर पाबंदी:

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

{
  "type": "error",
  "severity": "recoverable",
  "code": "address_undeliverable",
  "path": "$.checkout.line_items[1]",
  "content": "The item 'Example Product 2' cannot be delivered to the selected address."
}

address_unverifiable

बिलिंग पता:

{
  "type": "error",
  "severity": "recoverable",
  "code": "address_unverifiable",
  "path": "$.payment.instruments[0].billing_address",
  "content": "Invalid billing address. Update the address before trying again."
}

आइटम भेजने का पता:

{
  "type": "error",
  "severity": "recoverable",
  "code": "address_unverifiable",
  "path": "$.fulfillment.methods[0].destinations[0]",
  "content": "The fulfillment address couldn't be verified. Update the address and try again."
}

missing_billing_info

बिलिंग पते में मौजूद छूटे हुए फ़ील्ड की जानकारी देने के लिए, path फ़ील्ड का इस्तेमाल करें.

{
  "type": "error",
  "severity": "recoverable",
  "code": "missing_billing_info",
  "path": "$.payment.instruments[0].billing_address.street_address",
  "content": "Missing billing street address."
}

identity_required

REST API में, इस गड़बड़ी को एचटीटीपी स्टेटस कोड 401 के साथ दिखाना चाहिए.

{
  "type": "error",
  "severity": "requires_buyer_review",
  "code": "identity_required",
  "content": "User identity is required to access order history."
}

insufficient_scope

REST API में, यह गड़बड़ी एचटीटीपी स्टेटस कोड 403 के साथ दिखनी चाहिए.

{
  "type": "error",
  "severity": "requires_buyer_review",
  "code": "insufficient_scope",
  "content": "This operation requires scopes: dev.ucp.shopping.order:read, dev.ucp.shopping.order:manage"
}

पेमेंट से जुड़ी गड़बड़ियां

payment_declined

{
  "type": "error",
  "severity": "recoverable",
  "code": "payment_declined",
  "path": "$.payment.instruments[0]",
  "content": "Payment was declined by the issuer. Try a different payment method or contact your bank."
}

rejected_for_fraud

{
  "type": "error",
  "severity": "recoverable",
  "code": "rejected_for_fraud",
  "path": "$.payment.instruments[0]",
  "content": "The order was rejected due to suspected fraud. Try a different payment method."
}