লয়ালটি কাস্টমার ম্যাচ পরিষেবা সম্পর্কে এক নজরে

এই নির্দেশিকায় Merchant API-তে লয়ালটি কাস্টমার ম্যাচ পরিষেবা কীভাবে ব্যবহার করতে হয় তা বর্ণনা করা হয়েছে। এই পরিষেবা মার্চেন্ট এবং মার্চেন্টের হয়ে কাজ করা থার্ড-পার্টি লয়ালটি প্রদানকারীকে গ্রাহকের লয়ালটি ডেটা ম্যানেজ করতে দেয়, যেমন ব্যবহারকারীর আইডেন্টিফায়ার এবং টিয়ার তথ্য, Google Search-এ অর্গানিক পছন্দমতো সাজানোর জন্য, একটি অ্যাক্টিভ Google Ads অ্যাকাউন্ট ছাড়াই।

এক নজরে

লয়ালটি ডেটা আপলোড করতে লয়ালটি কাস্টমার ম্যাচ পরিষেবা ব্যবহার করুন, যা পরে Google Search-এ অর্গ্যানিক লয়ালটি পছন্দমতো সাজিয়ে নেওয়ার ফিচার প্রদান করতে ব্যবহার করা হয়, যেমন মেম্বার-নির্দিষ্ট দাম দেখানো। আপনি ManageLoyaltyCustomerMatch কাস্টম পদ্ধতি ব্যবহার করে আপনার গ্রাহকদের লয়ালটি প্রোগ্রাম টিয়ারের সাথে যুক্ত করেন, যার ফলে আপনি ইউজার আইডেন্টিফায়ারের ভিত্তিতে তাদের লয়ালটি স্ট্যাটাস যোগ, আপডেট বা সরিয়ে দিতে পারেন।

মূল ধারণা

  • ইউনিফায়েড ইন্টারফেস: গ্রাহকের লয়ালটি টিয়ারের বিবরণ যোগ, আপডেট বা সরানোর জন্য একটি অনন্য এন্ডপয়েন্ট।
  • প্রাইভেসি-ফার্স্ট ডিজাইন: ব্যবহারকারীর গোপনীয়তা সুরক্ষিত রাখতে এবং অননুমোদিত অ্যাকাউন্ট প্রোবিং প্রতিরোধ করতে, API GET বা LIST অপারেশনকে সমর্থন করে না, যা নিশ্চিত করে যে ডেটা পুনরুদ্ধার বা অডিটিং ছাড়াই ম্যানেজ করা হয়।
  • ফ্লেক্সিবল শনাক্তকরণ: অন্তত একটি সঠিক শনাক্তকারী ব্যবহার করে ব্যবহারকারীদের ম্যাচ করুন, যেমন ইমেল আইডি, আসল ঠিকানা বা ফোন নম্বর।
  • সম্মতি-ভিত্তিক প্রসেসিং: পরিষেবাটি গ্রাহকের ডেটা তখনই স্টোর এবং ব্যবহার করে যখন ব্যবহারকারী প্রয়োজনীয় সম্মতি Google-কে প্রদান করেন। অ্যাকাউন্টের অস্তিত্ব বা সম্মতি স্ট্যাটাস সংক্রান্ত তথ্য সুরক্ষিত রাখতে এবং তা যাতে কেউ খুঁজে না পায় সেই জন্য, কোনও মিল না পাওয়া গেলে বা সম্মতি না দেওয়া হলে, পরিষেবাটি কোনও বিজ্ঞপ্তি না দেখিয়েই সফলভাবে সম্পূর্ণ হয়েছে বলে দেখায়।

পূর্বশর্ত

লয়ালটি কাস্টমার ম্যাচ পরিষেবা ব্যবহার করতে এইসব প্রয়োজনীয়তা পূরণ করুন:

  • অ্যাকাউন্ট সেট-আপ: আপনার একটি অ্যাক্টিভ Merchant Center অ্যাকাউন্ট আছে কিনা তা নিশ্চিত করুন (অথবা আপনি যদি থার্ড-পার্টি লয়ালটি প্রদানকারী হন তাহলে মার্চেন্টের অ্যাকাউন্টে অনুমোদিত অ্যাক্সেস আছে কিনা তা নিশ্চিত করুন)। লয়ালটি কাস্টমার ম্যাচ পরিষেবা ব্যবহার করার জন্য আপনাকে Google Ads অ্যাকাউন্ট তৈরি করতে হবে না।
  • লয়ালটি প্রোগ্রাম কনফিগারেশন: আপনার Merchant Center অ্যাকাউন্টে লয়ালটি প্রোগ্রাম চালু করুন এবং লয়ালটি টিয়ার উল্লেখ করেছেন কিনা তা ভাল করে দেখে নিন।
  • টিয়ার অর্ডার সম্পর্কে সচেতনতা: Merchant Center UI-তে আপনার লয়ালটি টিয়ার যে ক্রমে সংজ্ঞায়িত করা হয়েছে সেই সম্পর্কে সচেতন থাকুন। API তার enum ম্যাপিংয়ের জন্য এই সঠিক ক্রম ব্যবহার করে।

পদ্ধতি: ManageLoyaltyCustomerMatch

ManageLoyaltyCustomerMatch পদ্ধতিটি গ্রাহকের লয়ালটি অ্যাসোসিয়েশন ম্যানেজ করার জন্য সেন্ট্রাল ইন্টারফেস হিসেবে কাজ করে। প্রদান করা ইনপুটের ভিত্তিতে, পরিষেবাটি অটোমেটিক নির্ধারণ করে যে কোনও গ্রাহকের লয়ালটি টিয়ার স্ট্যাটাস যোগ, আপডেট বা সরাতে হবে কিনা। অপারেশনটি হল আইডেমপোটেন্ট: বারবার একই ধরনের অনুরোধের প্রভাব একটি অনুরোধের মতোই হয়।

API-এর মাধ্যমে কীভাবে গ্রাহকের লয়ালটি অ্যাসোসিয়েশন ম্যানেজ করতে হয় তা নিম্নলিখিত অনুরোধে দেখানো হয়েছে:

POST https://merchantapi.googleapis.com/{API_VERSION}/accounts/{ACCOUNT_ID}/loyaltyCustomers:manage

এই অনুরোধে নিম্নলিখিত প্রয়োজনীয় পাথ প্যারামিটার উল্লেখ করা আছে:

  • API_VERSION: API ভার্সন, যেমন v1.
  • ACCOUNT_ID: Merchant Center অ্যাকাউন্ট আইডি।

অনুরোধের মূল অংশে একটি loyaltyCustomer অবজেক্ট অন্তর্ভুক্ত করুন।

{
    "userIdentifier": {
      "emailAddress": "string",
      "address": {
        "addressLines": ["string"],
        "locality": "string",
        "administrativeArea": "string",
        "postalCode": "string",
        "regionCode": "string"
      },
      "phoneNumber": "string"
    },
    "loyaltyTier": "LoyaltyTier",
    "pointBalance": "integer"
  }

loyaltyCustomer ফিল্ড

  • userIdentifier: গ্রাহকের সাথে ম্যাচ করার জন্য ব্যবহৃত শনাক্তকারীর সেট। userIdentifier-এর মধ্যে অন্তত একটি ফিল্ড প্রদান করতে হবে এবং সেটি সঠিক হতে হবে।
  • loyaltyTier: গ্রাহকের সাথে যুক্ত করার জন্য লয়ালটি টিয়ার। Merchant Center সেট-আপে টিয়ারের ক্রম অনুযায়ী ম্যাপ করা হয়। আরও জানতে, loyaltyTier ম্যাপিং বোঝা দেখুন। আগে থেকে থাকা অ্যাসোসিয়েশন মুছে ফেলতে NON_MEMBER ব্যবহার করুন।
  • pointBalance: গ্রাহকের বর্তমান পয়েন্ট ব্যালেন্স।

userIdentifier ফিল্ড

নিম্নলিখিত ফিল্ডগুলির মধ্যে অন্তত একটি প্রদান করুন:

  • emailAddress: গ্রাহকের ইমেল আইডি।
  • address: গ্রাহকের আসল ঠিকানা। PostalCode লিখতে হবে।
  • phoneNumber: গ্রাহকের ফোন নম্বর। E.164 ফর্ম্যাট সাজেস্ট করা হয়।

loyaltyTier ম্যাপিং বোঝা

API কাস্টম নাম ব্যবহার করে না। loyaltyTier enum ভ্যালু (TIER1 থেকে TIER7) হল সিম্যান্টিক লেবেল। এগুলি আপনার Merchant Center UI-তে অ্যাসাইন করা কাস্টম নাম (যেমন, "গোল্ড পুরস্কার") বা কাস্টম লেবেল (যেমন, "gold_tier") ব্যবহার করে না। পরিবর্তে, Merchant Center-এ লয়ালটি প্রোগ্রাম সেটিংসে আপনি যেভাবে টিয়ারের ক্রম নির্ধারণ করেছেন, সেভাবেই এগুলি ম্যাপ করা হয়:

  • TIER1: আপনার Merchant Center লয়ালটি প্রোগ্রাম কনফিগারেশনে তালিকাভুক্ত প্রথম টিয়ারের সাথে সম্পর্কিত।
  • TIER2: আপনার Merchant Center লয়ালটি প্রোগ্রাম কনফিগারেশনে তালিকাভুক্ত দ্বিতীয় টিয়ারের সাথে সম্পর্কিত।
  • TIER3 থেকে TIER7: আপনার Merchant Center লয়ালটি প্রোগ্রাম কনফিগারেশনে তালিকাভুক্ত তৃতীয় থেকে সপ্তম টিয়ারের সাথে সম্পর্কিত।

উদাহরণ:

আপনার Merchant Center লয়ালটি প্রোগ্রামে যদি এই ক্রমে টিয়ারের সংজ্ঞা দেওয়া থাকে:

  1. টিয়ারের নাম: "সিলভার স্ট্যাটাস", টিয়ারের লেবেল: "সিলভার"
  2. টিয়ারের নাম: "গোল্ড মেম্বার", টিয়ারের লেবেল: "গোল্ড"
  3. টিয়ারের নাম: "Platinum Elite", টিয়ারের লেবেল: "platinum"

তারপর, accounts.loyaltyCustomers.manage-এ API কল:

  • "সিলভার স্ট্যাটাস"-এ কোনও গ্রাহককে অ্যাসাইন করতে, আপনাকে অবশ্যই loyaltyTier: TIER1 ব্যবহার করতে হবে।
  • "গোল্ড মেম্বার"-এ কোনও গ্রাহককে অ্যাসাইন করতে, আপনাকে অবশ্যই loyaltyTier: TIER2 ব্যবহার করতে হবে।
  • "Platinum Elite"-এ কোনও গ্রাহককে অ্যাসাইন করতে, আপনাকে অবশ্যই loyaltyTier: TIER3 ব্যবহার করতে হবে।

LoyaltyTier enum ভ্যালু

  • TIER1
  • TIER2
  • TIER3
  • TIER4
  • TIER5
  • TIER6
  • TIER7
  • NON_MEMBER (গ্রাহকের লয়ালটি অ্যাসোসিয়েশন সরিয়ে দেওয়ার সিগন্যাল দিতে ব্যবহার করা হয়)

ManageLoyaltyCustomerMatch রেসপন্স বডি বোঝা

ManageLoyaltyCustomerMatch পদ্ধতিটি একটি ManageLoyaltyCustomerMatchResponse অবজেক্ট রিটার্ন করে:

{
  "loyaltyCustomer": {
    // loyaltyCustomer object from the request
  }
}

উত্তরের জন্য গুরুত্বপূর্ণ বিবেচনা

  • আপসার্ট (ডেটা স্টোর করা) সফল হয়েছে: কোনও গ্রাহকের লয়ালটি টিয়ার অ্যাসোসিয়েশন সফলভাবে স্টোর বা আপডেট করতে, নিম্নলিখিত শর্ত পূরণ করুন:

    • আপনি কোনও Google ব্যবহারকারীর সাথে প্রদত্ত userIdentifier ম্যাচ করেন
    • NON_MEMBER ছাড়া অন্য কোনও সঠিক ভ্যালুতে অনুরোধে loyaltyTier আপনি সেট করেন
    • মিলে যাওয়া ব্যবহারকারী লয়ালটি ডেটা ব্যবহারের জন্য সম্মতি দিয়েছেন

উত্তরে আপনার অনুরোধ থেকে loyaltyCustomer অবজেক্ট থাকে, যা ইঙ্গিত করে যে পরিষেবাটি সফলভাবে ডেটা প্রসেস এবং স্টোর করেছে:

{
  "loyaltyCustomer": {
    "userIdentifier": {
     "emailAddress": "customer@example.com"
    },
    "loyaltyTier": "TIER2",
    "pointBalance": 1500
    }
}
  • সফলভাবে মুছে ফেলা: এই মার্চেন্টের সাথে গ্রাহকের আগে থেকে থাকা যেকোনও লয়ালটি অ্যাসোসিয়েশন সফলভাবে সরাতে, নিম্নলিখিত শর্তগুলি অবশ্যই পূরণ করতে হবে:
    • প্রদত্ত userIdentifier-এর সাথে আপনি কোনও Google ব্যবহারকারীর সাথে ম্যাচ করেন
    • NON_MEMBER-এ অনুরোধে loyaltyTier আপনি সেট করেন

রেসপন্স একটি খালি JSON অবজেক্ট:

{}
  • কোনও মিল নেই / সম্মতি নেই (সাইলেন্ট সাকসেস): যদি প্রদত্ত userIdentifier কোনও Google অ্যাকাউন্টের সাথে মেলে না, অথবা যদি মিলে যাওয়া ব্যবহারকারী লয়ালটি ডেটা ব্যবহারের জন্য সম্মতি না দেন, তাহলে API একটি খালি JSON অবজেক্ট সহ একটি HTTP 200 OK স্ট্যাটাস রিটার্ন করে: {}। আপসার্ট ও সরানোর চেষ্টা, উভয় ক্ষেত্রেই এটি হয়।

উদাহরণ

TIER1 প্রথম সংজ্ঞায়িত টিয়ারের সাথে সম্পর্কিত (যেমন, 'বেসিক'), এবং TIER2 দ্বিতীয় টিয়ারের সাথে সম্পর্কিত (যেমন, 'প্রিমিয়াম')।

TIER2-এ কোনও গ্রাহককে যোগ করতে বা ইমেল আইডি ব্যবহার করে তার স্ট্যাটাস আপডেট করতে, নিম্নলিখিত অনুরোধ পাঠান:

POST
"https://merchantapi.googleapis.com/v1/accounts/{ACCOUNT_ID}/loyaltyCustomers:manage"
  -d '{
      "userIdentifier": {
        "emailAddress": "customer@example.com"
      },
      "loyaltyTier": "TIER2",
      "pointBalance": 1500
  }'

কোনও ব্যবহারকারীকে সফলভাবে ম্যাচ করা হলে এবং তিনি সম্মতি দিলে, API নিম্নলিখিত উত্তর দেয়:

{
  "loyaltyCustomer": {
    "userIdentifier": {
      "emailAddress": "customer@example.com"
    },
    "loyaltyTier": "TIER2",
    "pointBalance": 1500
  }
}

কোনও ম্যাচ না থাকলে বা ব্যবহারকারী সম্মতি না দিলে, API নিম্নলিখিত উত্তর ফেরত পাঠায়:

{}

ফোন নম্বর ব্যবহার করে কোনও গ্রাহকের লয়ালটি অ্যাসোসিয়েশন সরাতে, নিম্নলিখিত অনুরোধটি পাঠান:

POST
"https://merchantapi.googleapis.com/v1/accounts/{ACCOUNT_ID}/loyaltyCustomers:manage" \
  -d '{
      "userIdentifier": {
        "phoneNumber": "+18005550132"
      },
      "loyaltyTier": "NON_MEMBER"
  }'

রেকর্ড থাকুক বা না থাকুক, API নিম্নলিখিত সফল উত্তর প্রদান করে:

{}

একাধিক শনাক্তকারী ব্যবহার করে কোনও গ্রাহককে যোগ বা আপডেট করতে, নিম্নলিখিত অনুরোধ পাঠান:

POST
"https://merchantapi.googleapis.com/v1/accounts/{ACCOUNT_ID}/loyaltyCustomers:manage" \
  -d '{
      "userIdentifier": {
        "emailAddress": "user@example.com",
        "address": {
          "postalCode": "94043",
          "regionCode": "US"
        }
      },
      "loyaltyTier": "TIER1"
  }'

মিল ও সম্মতির উপর নির্ভর করে, প্রথম উদাহরণের মতোই উত্তর দেওয়া হয়।

সমস্যা ম্যানেজ করা

API স্ট্যান্ডার্ড HTTP কোড ব্যবহার করে। সাধারণত যেসব সমস্যার স্ট্রিং দেখা যায়:

HTTP কোড সমস্যা সংক্রান্ত স্ট্রিং বিবরণ
400 INVALID_ARGUMENT user_identifier বা loyalty_tier নেই অথবা শনাক্তকারী ফাঁকা আছে।
401 যাচাই করা হয়নি এমন ইমেল ক্রেডেনশিয়াল ভুল বা উল্লেখ করা নেই।
403 PERMISSION_DENIED যাচাই করা ব্যবহারকারীর কাছে নির্দিষ্ট Merchant Center অ্যাকাউন্টের অ্যাক্সেস নেই।
404 NOT_FOUND আপনার কনফিগারেশনে নির্দিষ্ট করা লয়ালটি টিয়ার লেবেল নেই।
412 FAILED_PRECONDITION আপনার অ্যাকাউন্টে লয়ালটি প্রোগ্রাম কনফিগার করেননি।
429 RESOURCE_EXHAUSTED কোটার সীমায় পৌঁছে গেছেন।

সমস্যার উদাহরণ

404 NOT_FOUND-এর উদাহরণ:

কোনও অ্যাকাউন্ট আইডিতে করা যেকোনও সঠিক অনুরোধ যাতে কোনও লয়ালটি প্রোগ্রাম কনফিগার করা নেই।

API নিম্নলিখিত সমস্যার উত্তর দেয়:

{
  "error": {
    "code": 404,
    "message": "The loyalty program is not found for account: {ACCOUNT_ID}.",
    "status": "NOT_FOUND",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "notFound",
        "domain": "merchantapi.googleapis.com",
        "metadata": {
          "ACCOUNT_ID": "{ACCOUNT_ID}",
          "REASON": "NOT_FOUND_LOYALTY_PROGRAM"
        }
      }
    ]
  }
}

কারণ: পাথে মার্চেন্ট অ্যাকাউন্টে কোনও অ্যাক্টিভ লয়ালটি প্রোগ্রাম নেই।

400 INVALID_ARGUMENT-এর উদাহরণ:

অনুরোধে loyaltyTier ফিল্ডের জন্য ভুল ভ্যালু থাকলে সমস্যা হয়:

{
  "loyaltyCustomer": {
    "userIdentifier": {
      "emailAddress": "customer@example.com"
    },
    "loyaltyTier": "TIER11",
    "pointBalance": 100
  }
}

API নিম্নলিখিত সমস্যার উত্তর দেয়:

{
  "error": {
    "code": 400,
    "message": "Invalid value at 'loyalty_customer.loyalty_tier' (type.googleapis.com/google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier), \"TIER11\"",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "field": "loyalty_customer.loyalty_tier",
            "description": "Invalid value at 'loyalty_customer.loyalty_tier' (type.googleapis.com/google.shopping.merchant.loyaltycustomers.v1.LoyaltyCustomer.LoyaltyTier), \"TIER11\""
          }
        ]
      }
    ]
  }
}

কারণ: TIER11 হল loyaltyTier-এর জন্য একটি সঠিক enum ভ্যালু নয়। শুধুমাত্র একটি টিয়ার উপলভ্য থাকলে, আপনি TIER2 নির্দিষ্ট করার চেষ্টা করলে একই সমস্যা হতে পারে।

অনুরোধের বডিতে প্রয়োজনীয় loyaltyTier ফিল্ড না থাকলে সমস্যা হয়

{
  "loyaltyCustomer": {
    "userIdentifier": {
      "emailAddress": "customer@example.com"
    },
    "pointBalance": 100
  }
}

API নিম্নলিখিত সমস্যার উত্তর দেয়:

{
  "error": {
    "code": 400,
    "message": "[loyalty_customer.loyalty_tier] Required field not provided: loyalty_customer.loyalty_tier",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "required",
        "domain": "merchantapi.googleapis.com",
        "metadata": {
          "FIELD_LOCATION": "loyalty_customer.loyalty_tier",
          "REASON": "MISSING_REQUIRED_FIELD"
        }
      }
    ]
  }
}

কারণ: loyaltyTier ফিল্ডটি পূরণ করতে হবে।

ঠিকানা শনাক্তকারী অসম্পূর্ণ থাকলে সমস্যা হয়, যেমন postalCode ফিল্ড না থাকলে:

{
  "loyaltyCustomer": {
    "userIdentifier": {
      "address": {
        "locality": "Sunnyvale",
        "administrativeArea": "CA",
        "regionCode": "US"
      }
    },
    "loyaltyTier": "TIER1",
    "pointBalance": 100
  }
}

API নিম্নলিখিত সমস্যার উত্তর দেয়:

{
  "error": {
    "code": 400,
    "message": "[loyalty_customer.user_identifier] The format of loyalty_customer.user_identifier does not match the expected format ... Value: at least one valid user identifier should be provided.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "invalid",
        "domain": "merchantapi.googleapis.com",
        "metadata": {
          "FIELD_NAME": "loyalty_customer.user_identifier",
          "REASON": "INVALID_VALUE"
        }
      }
    ]
  }
}

কারণ: একটি ঠিকানা প্রদান করা হয়েছে, কিন্তু এতে প্রয়োজনীয় postalCode ফিল্ড নেই, তাই এটি একটি বৈধ শনাক্তকারী হিসাবে বিবেচিত হয় না।

কনফিগার করা প্রোগ্রামের জন্য সীমার বাইরে থাকা কোনও টিয়ার ইন্ডেক্সের জন্য অনুরোধ করলে সমস্যা হয়:

পরিস্থিতি: Merchant Center-এ মার্চেন্ট শুধুমাত্র একটি টিয়ার কনফিগার করেছেন।

{
  "loyaltyCustomer": {
    "userIdentifier": {
      "emailAddress": "customer@example.com"
    },
    "loyaltyTier": "TIER2",
    "pointBalance": 100
  }
}

API নিম্নলিখিত সমস্যার উত্তর দেয়:

{
  "error": {
    "code": 400,
    "message": "[loyalty_customer.loyalty_tier] The format of loyalty_customer.loyalty_tier does not match the expected format `valid LoyaltyTier`. Value: TIER2.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "invalid",
        "domain": "merchantapi.googleapis.com",
        "metadata": {
          "FIELD_NAME": "loyalty_customer.loyalty_tier",
          "PATTERN": "valid LoyaltyTier",
          "FIELD_VALUE": "TIER2",
          "REASON": "INVALID_VALUE"
        }
      }
    ]
  }
}

কারণ: TIER2-এর জন্য অনুরোধ করা হয়েছে, কিন্তু অ্যাকাউন্টের সাথে লিঙ্ক করা লয়ালটি প্রোগ্রামে দ্বিতীয় টিয়ার নির্দিষ্ট করা নেই।

অনুরোধে ভুল ফর্ম্যাটে emailAddress থাকলে সমস্যা হয়:

{
  "loyaltyCustomer": {
    "userIdentifier": {
      "emailAddress": "customer@google"
    },
    "loyaltyTier": "TIER1",
    "pointBalance": 100
  }
}

API নিম্নলিখিত সমস্যার উত্তর দেয়:

{
  "error": {
    "code": 400,
    "message": "[loyalty_customer.user_identifier] The format of loyalty_customer.user_identifier does not match the expected format `email_address: \t \"customer@google\"\n`. Value: at least one valid user identifier should be provided.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "invalid",
        "domain": "merchantapi.googleapis.com",
        "metadata": {
          "FIELD_NAME": "loyalty_customer.user_identifier",
          "REASON": "INVALID_VALUE"
        }
      }
    ]
  }
}

কারণ: ইমেল আইডির ফর্ম্যাট ভুল।

userIdentifier অবজেক্ট খালি থাকলে সমস্যা হয়:

{
  "loyaltyCustomer": {
    "userIdentifier": {},
    "loyaltyTier": "TIER1",
    "pointBalance": 100
  }
}

API নিম্নলিখিত সমস্যার উত্তর দেয়:

{
  "error": {
    "code": 400,
    "message": "[loyalty_customer.user_identifier] Required field not provided: loyalty_customer.user_identifier",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "required",
        "domain": "merchantapi.googleapis.com",
        "metadata": {
          "FIELD_LOCATION": "loyalty_customer.user_identifier",
          "REASON": "MISSING_REQUIRED_FIELD"
        }
      }
    ]
  }
}

কারণ: userIdentifier অবজেক্টটি আছে কিন্তু এতে কোনও আসল শনাক্তকারী ফিল্ড নেই।

মনে রাখবেন: আইডেন্টিফায়ার যাচাইকরণ।:

  • API শনাক্তকারীর (যেমন, ইমেলের স্ট্রাকচার, ঠিকানায় postalCode-এর উপস্থিতি) বেসিক ফর্ম্যাট চেক করে।
  • তবে, প্রাথমিক চেক পাস করা কিছু শনাক্তকারী কোনও Google ব্যবহারকারীর অ্যাকাউন্টের সাথে নাও মিলতে পারে অথবা ব্যাকএন্ড ম্যাচিং সিস্টেমের মাধ্যমে শনাক্ত করা ফর্ম্যাটে নাও থাকতে পারে। এই ধরনের ক্ষেত্রে, আপনি HTTP স্ট্যাটাস 200 OK সহ সাইলেন্ট সাকসেস খালি উত্তর {} পাবেন।

পেশাদার পদ্ধতি

আপনার ইন্টিগ্রেশন অপ্টিমাইজ করতে এইসব পেশাদার পদ্ধতি অনুসরণ করুন।

  • বড় স্কেলে ইন্টিগ্রেশনের জন্য: API প্রতিটি অনুরোধের ভিত্তিতে কাজ করে বলে, বড় ডেটাসেটের জন্য প্রয়োজনীয় থ্রুপুট অর্জন করতে ক্লায়েন্ট-সাইড প্যারালেলিজম প্রয়োজন। একাধিক সমবর্তী অনুরোধ ম্যানেজ করার জন্য আপনার ইন্টিগ্রেশন ডিজাইন করা উচিত। প্যারালাইজেশনের মাধ্যমে আরও বেশি ভলিউম ম্যানেজ করার জন্য আপনার ইমপ্লিমেন্টেশন কীভাবে স্ট্রাকচার করবেন সেই বিষয়ে নির্দেশিকা পেতে, কীভাবে একাধিক অনুরোধ পাঠাবেন সেই বিষয়ে আমাদের নির্দেশিকা দেখুন।

  • কোটা ম্যানেজমেন্ট: ডিফল্ট কোটা হল ১,০০০,০০০ অনুরোধ/দিন এবং ১০,০০০ অনুরোধ/মিনিট। আপনি কীভাবে কোটা মনিটর ও চেক করতে পারবেন তা জানতে, কোটা ও সীমা দেখুন।

  • ইমেল আইডিকে অগ্রাধিকার দিন: যখনই সম্ভব, userIdentifier-এ গ্রাহকের emailAddress অন্তর্ভুক্ত করুন। ব্যবহারকারীদের তাদের Google অ্যাকাউন্টের সাথে ম্যাচ করার জন্য ইমেল আইডি সাধারণত সবচেয়ে সঠিক এবং নির্ভরযোগ্য শনাক্তকারী।

  • খালি উত্তর ম্যানেজ করা: আপনার অ্যাপ্লিকেশন এমনভাবে ডিজাইন করুন যাতে এটি খালি {} উত্তরকে সফল হিসেবে সঠিকভাবে ব্যাখ্যা করতে পারে, এটি বুঝতে পারে যে এর অর্থ হল গোপনীয়তার কারণে ডেটা স্টোর করা হয়নি (কোনও মিল বা সম্মতি নেই)। অনুরোধটি আবার করবেন না।

  • টিয়ারের ক্রম যাচাই করুন: আপনার API কলে TIER1 থেকে TIER7 পর্যন্ত enum ভ্যালু সঠিকভাবে ব্যবহার করছেন কিনা তা নিশ্চিত করতে, Merchant Center UI-তে আপনার লয়ালটি টিয়ারের ক্রম সবসময় কনফার্ম করুন। এই ম্যাপিং UI-তে নির্ধারিত ক্রমের উপর ভিত্তি করে করা হয়, তাদের নামের উপর ভিত্তি করে নয়।

  • সমস্যা মনিটর করা: API রেসপন্স লগ ও মনিটর করুন, ইন্টিগ্রেশন সংক্রান্ত সমস্যা ধরতে যেকোনও 4xx সমস্যার দিকে নজর দিন, বিশেষ করে 404 সমস্যা যা টিয়ার বোঝার ক্ষেত্রে অমিল নির্দেশ করতে পারে।