ইউনিভার্সাল কমার্স প্রোটোকল (UCP) ব্যবহার করে গুগলের সাথে ইন্টিগ্রেট করার সময়, আপনার এপিআই (API) রেসপন্সে অবশ্যই যে প্রমিত এরর কোডগুলো ফেরত দিতে হবে, এই পৃষ্ঠায় তার রূপরেখা দেওয়া হয়েছে। সামঞ্জস্যপূর্ণ এরর কোডগুলো সুস্পষ্ট যোগাযোগ নিশ্চিত করে এবং গুগলকে বিভিন্ন পরিস্থিতি যথাযথভাবে সামলাতে সাহায্য করে।
যখন কোনো ব্যবসায়িক ত্রুটি ঘটে, তখন আপনার API-এর উচিত টেবিল থেকে উপযুক্ত code একটি প্রতিক্রিয়া বার্তা ফেরত দেওয়া। কিছু ত্রুটি কোডের জন্য, প্রতিক্রিয়ার messages ' অ্যারেতে একটি নির্দিষ্ট JSON কাঠামো ব্যবহার করার পরামর্শ দেওয়া হয়। এই উদাহরণগুলো টেবিলের নিচে ' Error code examples' বিভাগে দেওয়া আছে। এই উদাহরণগুলোতে, অনুরোধ বা প্রতিক্রিয়া অবজেক্টের মধ্যে ত্রুটির অবস্থান সম্পর্কে আরও নির্দিষ্ট তথ্য দেওয়ার জন্য আপনার path ' ফিল্ডটি ব্যবহার করা উচিত।
ত্রুটি পরিচালনা
কীভাবে ত্রুটি রিপোর্ট করতে হবে তা ত্রুটির প্রকারের উপর নির্ভর করে:
প্রোটোকল/সার্ভার ত্রুটি:
- ত্রুটিপূর্ণ অনুরোধ, প্রমাণীকরণে ব্যর্থতা বা সার্ভারের অনুপলব্ধতার মতো সমস্যার জন্য স্ট্যান্ডার্ড HTTP স্ট্যাটাস কোড (যেমন, ক্লায়েন্ট ত্রুটির জন্য 4xx, সার্ভার ত্রুটির জন্য 5xx) ব্যবহার করুন।
- বিস্তারিত জানতে ইউসিপি স্পেসিফিকেশন দেখুন।
ব্যবসায়িক যুক্তির ত্রুটি/সতর্কবার্তা:
- একটি HTTP 200 OK স্ট্যাটাস ফেরত দিন।
- JSON রেসপন্স বডির
messagesঅ্যারের মধ্যে সমস্যাটি বর্ণনা করুন। -
messagesঅ্যারের প্রতিটি অবজেক্টে অবশ্যই অন্তর্ভুক্ত থাকতে হবে:-
type:"error"অথবা"warning" -
code: এই নির্দেশিকা থেকে একটি প্রমিত কোড।"invalid"-এর মতো সাধারণ বা অচেনা কোড ব্যবহার করবেন না। -
content: মানুষের পাঠযোগ্য বিবরণ। -
severity:type"error"হলে এটি আবশ্যক। এই ফিল্ডটি শুধুমাত্র ত্রুটি কোডের উপর নির্ভর না করে, ত্রুটিটি মারাত্মক (unrecoverable) নাকি ক্রেতাকে সমস্যাটি সংশোধন করার জন্য অনুরোধ করার সুযোগ দেয় (recoverable), তা স্পষ্টভাবে নির্দেশ করে।
-
বার্তার প্রকারভেদ: ত্রুটি বনাম সতর্কতা
মেসেজ অ্যারের type ফিল্ডটি সমস্যার তীব্রতা নির্দেশ করে। UCP দুটি প্রধান প্রকার সংজ্ঞায়িত করে:
-
error: নির্দেশ করে যে অনুরোধ করা অপারেশনটি সম্পন্ন করা যায়নি। প্ল্যাটফর্ম বা ব্যবহারকারীকে সম্ভবত ব্যবস্থা নিতে হবে এবং আবার চেষ্টা করতে হবে। মেসেজ-এরর স্পেসিফিকেশন দেখুন।- কোনো ত্রুটির চূড়ান্ত প্রকৃতি তার ত্রুটি
codeদ্বারা নয়, বরংseverityক্ষেত্র (unrecoverableবাrecoverable) দ্বারা নির্ধারিত হয়।
- কোনো ত্রুটির চূড়ান্ত প্রকৃতি তার ত্রুটি
-
warning: এটি নির্দেশ করে যে অপারেশনটি ব্লক করা হয়নি, কিন্তু এমন কিছু উল্লেখযোগ্য বিষয় রয়েছে যা ব্যবহারকারীকে জানানো উচিত। এটি প্রসেসটিকে থামায় না, তবে গুরুত্বপূর্ণ প্রাসঙ্গিক তথ্য প্রদান করে। মেসেজ-ওয়ার্নিং স্পেসিফিকেশন দেখুন।
ত্রুটি কোড রেফারেন্স
| ত্রুটি কোড | প্রস্তাবিত প্রকার | বর্ণনা |
|---|---|---|
out_of_stock | ত্রুটি | আইটেমটি উপলব্ধ নেই। এর ফলে সাধারণত ucp.status: “error” দেখা যায়। একাধিক আইটেম চেকআউটের ক্ষেত্রে আইটেম ইন্ডেক্স নির্দেশ করতে path ফিল্ডটি ব্যবহার করুন। নিচের উদাহরণটি দেখুন। |
item_unavailable | ত্রুটি | আইটেমটি খুঁজে পাওয়া যায়নি। এই ধরনের আইটেম-সম্পর্কিত ত্রুটির ক্ষেত্রে সাধারণত ucp.status: “error” দেখা যায়। |
item_ineligible | ত্রুটি | আইটেমটি বিদ্যমান, কিন্তু UCP ব্যবহার করে এটি কেনা যাবে না। |
quantity_invalid_limit_exceeded | ত্রুটি | অনুরোধকৃত পরিমাণ অনুমোদিত সীমা অতিক্রম করেছে। নিচে উদাহরণ দেখুন। |
quantity_invalid_minimum_not_met | ত্রুটি | অনুরোধকৃত পরিমাণ ন্যূনতম প্রয়োজনীয় পরিমাণের চেয়ে কম। |
totals_changed | সতর্কতা | শেষ ধাপের পর থেকে মূল্য বা অন্যান্য মোট পরিমাণ পরিবর্তিত হয়েছে। কোন মোট পরিমাণটি পরিবর্তিত হয়েছে তা নির্দেশ করতে path ফিল্ডটি ব্যবহার করুন। নিচের উদাহরণটি দেখুন। |
totals_invalid_minimum_not_met | ত্রুটি | অর্ডারের মূল্য ন্যূনতম শর্ত পূরণ করে না। |
missing_buyer_info | ত্রুটি | প্রয়োজনীয় ক্রেতার তথ্য অনুপস্থিত। অনুপস্থিত ফিল্ডটি নির্দিষ্ট করতে path ফিল্ড ব্যবহার করুন। নিচের উদাহরণটি দেখুন। |
address_undeliverable | ত্রুটি | এটি একটি সাধারণ UCP ত্রুটি কোড। নির্দিষ্ট গন্তব্য বা সীমাবদ্ধ আইটেম নির্দেশ করতে path ফিল্ডটি ব্যবহার করুন। নিচে উদাহরণ দেখুন। |
address_unverifiable | ত্রুটি | প্রদত্ত ঠিকানাটি যাচাই করা যায়নি। এটি ফুলফিলমেন্ট নাকি বিলিং ঠিকানা, তা নির্দেশ করতে path ফিল্ডটি ব্যবহার করুন। নিচের উদাহরণটি দেখুন। |
missing_fulfillment_info | ত্রুটি | প্রয়োজনীয় তথ্য পূরণ করা সম্ভব নয়। অনুপস্থিত ফিল্ডটি নির্দিষ্ট করতে path ফিল্ডটি ব্যবহার করুন। |
eligibility_invalid | ত্রুটি | ব্যবহারকারী বা অর্ডারটি এই কার্যক্রমের জন্য যোগ্য নয়। এটি একটি সাধারণ UCP ত্রুটি কোড। বিস্তারিত তথ্যের জন্য 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-তে এই ত্রুটিটি HTTP স্ট্যাটাস কোড 401 সহ ফেরত দেওয়া উচিত।
{
"type": "error",
"severity": "requires_buyer_review",
"code": "identity_required",
"content": "User identity is required to access order history."
}
insufficient_scope
REST API-তে এই ত্রুটিটি HTTP স্ট্যাটাস কোড 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."
}