আপনার অ্যাপে PC-এর জন্য Play Integrity ইন্টিগ্রেট করুন

প্লে ইন্টিগ্রিটি ফর পিসি আপনাকে যাচাই করতে সাহায্য করে যে, গেমের ইভেন্ট এবং সার্ভার রিকোয়েস্টগুলো একটি আসল পিসি ডিভাইসে থাকা গুগল প্লে গেমস ফর পিসি-এর একটি আসল ইনস্ট্যান্স থেকেই আসছে। সম্ভাব্য ঝুঁকিপূর্ণ ডিভাইস এবং অজানা এমুলেটর শনাক্ত করার মাধ্যমে, আপনার গেমের ব্যাকএন্ড সার্ভার প্রতারণা, অননুমোদিত অ্যাক্সেস, জাল ট্র্যাফিক এবং অপব্যবহার প্রতিরোধ করার জন্য যথাযথ ব্যবস্থা গ্রহণ করতে পারে।

পূর্বশর্ত

ধাপ ১: আপনার গেমে পিসির জন্য প্লে ইন্টিগ্রিটি কীভাবে ব্যবহার করবেন তা স্থির করুন।

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

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

ধাপ ২: আপনার গেমে ইন্টিগ্রিটি টোকেনের জন্য অনুরোধ করুন।

পিসির জন্য প্লে ইন্টিগ্রিটি ওয়ার্ম আপ করুন

পিসির জন্য প্লে ইন্টিগ্রিটি প্রস্তুত (বা "ওয়ার্ম আপ") করুন, যা গুগল প্লে-কে ডিভাইসে আংশিক অ্যাটেস্টেশন তথ্য বুদ্ধিমত্তার সাথে ক্যাশ করতে দেয়, যাতে আপনি যখন ইন্টিগ্রিটি ভার্ডিক্টের জন্য অনুরোধ করেন তখন ক্রিটিক্যাল পাথের ল্যাটেন্সি কমে যায়। আপনি আপনার গেম খোলার সাথে সাথেই এটি অ্যাসিঙ্ক্রোনাসভাবে করতে পারেন, যাতে প্রয়োজনের সময় আপনি অন-ডিমান্ড ইন্টিগ্রিটি অনুরোধ করতে পারেন।

void PrepareIntegrityToken(
  const PrepareIntegrityTokenParams & params,
  PrepareIntegrityTokenContinuation continuation
)

সফল হলে, PrepareIntegrityTokenResultValue সহ কন্টিনিউয়েশনটি কল করা হবে, যার মধ্যে একটি RequestTokenData থাকবে যা একটি ইন্টিগ্রিটি টোকেন অনুরোধ করার জন্য ব্যবহার করা উচিত। এই ডেটা মেমরিতে ক্যাশ করা উচিত এবং অ্যাপ্লিকেশনটির সেশন চলাকালীন RequestIntegrityToken কল করার জন্য পুনরায় ব্যবহার করা উচিত।

শুধুমাত্র যদি আপনার অ্যাপ্লিকেশন নির্ধারণ করে যে ইন্টিগ্রিটি রায়টি সম্পূর্ণরূপে পুনঃমূল্যায়ন করা প্রয়োজন, তবেই PrepareIntegrityToken- কে কল করা উচিত।

বিস্তারিত
প্যারামিটার params : গুগল ক্লাউড প্রজেক্ট নম্বর সম্বলিত প্যারামিটারসমূহ।
continuation : ইন্টিগ্রিটি টোকেন প্রোভাইডারকে ফেরত দেওয়ার জন্য অ্যাসিঙ্ক কলব্যাক।

PrepareIntegrityToken অ্যাকশনটি কীভাবে কল করতে হবে তা দেখানোর জন্য একটি কোড স্নিপেট নিচে দেওয়া হলো:

google::play::integrity::IntegrityClient client_;

google::play::integrity::PrepareIntegrityTokenResult
IntegrityInterface::PrepareIntegrityToken(int64_t cloud_project_number) {
  google::play::integrity::PrepareIntegrityTokenParams params;
  params.cloud_project_number = cloud_project_number;

  auto promise = std::make_shared<
      std::promise<google::play::integrity::PrepareIntegrityTokenResult>>();
  client_.PrepareIntegrityToken(
      params,
      [promise](
          google::play::integrity::PrepareIntegrityTokenResult result) {
        promise->set_value(std::move(result));
      });

  return promise->get_future().get();
}

একটি ইন্টিগ্রিটি টোকেনের জন্য অনুরোধ করুন

ইন্টিগ্রিটি টোকেন হলো আপনার গেমের একটি ব্যবস্থা, যার মাধ্যমে যাচাই করা হয় যে ডিভাইসটির সাথে কোনো রকম কারসাজি করা হয়নি। যখনই আপনার গেম কোনো সার্ভার রিকোয়েস্ট পাঠায় এবং আপনি সেটির সত্যতা যাচাই করতে চান, তখন আপনি একটি ইন্টিগ্রিটি টোকেনের জন্য অনুরোধ করতে পারেন এবং তারপর ডিক্রিপশন ও যাচাইকরণের জন্য সেটি আপনার গেমের ব্যাকএন্ড সার্ভারে পাঠাতে পারেন।

যখন আপনি পিসির জন্য প্লে ইন্টিগ্রিটি এপিআই (Play Integrity API for PC) ব্যবহার করে আপনার অ্যাপে কোনো ব্যবহারকারীর কার্যকলাপ যাচাই করেন, তখন টেম্পারিং আক্রমণ প্রতিরোধ করার জন্য আপনি RequestIntegrityTokenParams::request_hash ফিল্ডটি ব্যবহার করতে পারেন। উদাহরণস্বরূপ, আপনি হয়তো আপনার গেমের ব্যাকএন্ড সার্ভারে প্লেয়ারের স্কোর রিপোর্ট করতে চান, এবং আপনার সার্ভার যাচাই করতে চায় যে এই স্কোরটি কোনো প্রক্সি সার্ভার দ্বারা টেম্পার করা হয়নি। পিসির জন্য প্লে ইন্টিগ্রিটি, সাইনড ইন্টিগ্রিটি রেসপন্সের (signed integrity response) ভেতরে, এই ফিল্ডে আপনার সেট করা ভ্যালুটি রিটার্ন করতে পারে। requestHash ছাড়া, ইন্টিগ্রিটি টোকেনটি শুধুমাত্র ডিভাইসের সাথে আবদ্ধ থাকবে, কিন্তু নির্দিষ্ট রিকোয়েস্টের সাথে নয়, যা আক্রমণের সম্ভাবনা তৈরি করে।

void RequestIntegrityToken(
  const RequestIntegrityTokenParams & params,
  RequestIntegrityTokenContinuation continuation
)

আক্রমণের সম্ভাবনা প্রশমিত করতে, যখন আপনি একটি ইন্টিগ্রিটি ভারডিক্টের জন্য অনুরোধ করেন:

  • চলমান ব্যবহারকারীর কার্যকলাপ বা সার্ভার অনুরোধ থেকে সমস্ত প্রাসঙ্গিক অনুরোধ প্যারামিটারের (যেমন একটি স্থিতিশীল অনুরোধ সিরিয়ালাইজেশনের SHA256) একটি ডাইজেস্ট গণনা করুন।
  • RequestIntegrityTokenParams::request_hash ফিল্ডটিকে ডাইজেস্ট-এ সেট করুন।
বিস্তারিত
প্যারামিটার params : প্রস্তুতকৃত RequestTokenData এবং ইন্টিগ্রিটি চেক রিকোয়েস্ট হ্যাশ ধারণকারী প্যারামিটারসমূহ।
continuation : ডেটা ফেরত দেওয়ার জন্য অ্যাসিঙ্ক কলব্যাক।

RequestIntegrityToken অ্যাকশনটি কিভাবে কল করা যায়, তা দেখানোর জন্য একটি কোড স্নিপেট নিচে দেওয়া হলো:

absl::StatusOr<google::play::integrity::RequestIntegrityTokenResult>
IntegrityInterface::RequestIntegrityToken(
    const google::play::integrity::PrepareIntegrityTokenResult&
        prepare_integrity_token_result,
    const std::string& request_hash) {
  // Check if the prepare_integrity_token_result is OK
  if (!prepare_integrity_token_result.ok()) {
    return absl::FailedPreconditionError(
        absl::StrCat("PrepareIntegrityTokenResult is not OK. Error code: ",
                     prepare_integrity_token_result.error_code));
  }

  google::play::integrity::RequestIntegrityTokenParams params{
      .request_token_data =
          prepare_integrity_token_result.request_token_data,
      .request_hash = request_hash};

  auto promise = std::make_shared<std::promise<
      google::play::integrity::RequestIntegrityTokenResult>>();
  client_.RequestIntegrityToken(
      params,
      [promise](google::play::integrity::RequestIntegrityTokenResult result) {
        promise->set_value(std::move(result));
      });

  return promise->get_future().get();
}

ধাপ ৩: এরপর আপনার গেমের ব্যাকএন্ড সার্ভারে ইন্টিগ্রিটি টোকেনগুলো ডিক্রিপ্ট এবং ভেরিফাই করুন।

একটি ইন্টিগ্রিটি টোকেন ডিক্রিপ্ট করুন

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

  1. আপনার অ্যাপের সাথে সংযুক্ত গুগল ক্লাউড প্রজেক্টের মধ্যে একটি সার্ভিস অ্যাকাউন্ট তৈরি করুন
  2. আপনার অ্যাপের সার্ভারে, playintegrity স্কোপ ব্যবহার করে আপনার সার্ভিস অ্যাকাউন্টের ক্রেডেনশিয়াল থেকে অ্যাক্সেস টোকেনটি সংগ্রহ করুন এবং নিম্নলিখিত অনুরোধটি করুন:

    playintegrity.googleapis.com/v1/<var>PACKAGE_NAME</var>:decodePcIntegrityToken -d \
     '{ "integrity_token": "<var>INTEGRITY_TOKEN</var>" }'
    
  3. JSON প্রতিক্রিয়াটি পড়ুন।

এর ফলে প্রাপ্ত পেলোডটি হলো একটি প্লেইন-টেক্সট টোকেন, যাতে ডেভেলপার-প্রদত্ত তথ্যের পাশাপাশি ইন্টিগ্রিটি ভারডিক্ট ও বিস্তারিত বিবরণ থাকে। একটি ডিক্রিপ্ট করা ইন্টিগ্রিটি টোকেন দেখতে নিম্নরূপ:

{
  "requestDetails": {
    "requestPackageName": "com.your.package.name",
    "requestTime": "2025-08-29T13:10:37.285Z",
    "requestHash": "your_request_hash_string"
  },
  "deviceIntegrity": {
    "deviceRecognitionVerdict": [
      "MEETS_PC_INTEGRITY"
    ]
  },
  "accountDetails": {
    "appLicensingVerdict": "LICENSED"
  }
}

ইন্টিগ্রিটি টোকেন যাচাই করুন

ডিকোড করা ইন্টিগ্রিটি টোকেনের requestDetails ফিল্ডটিতে অনুরোধ সম্পর্কিত তথ্য থাকে, যার মধ্যে requestHash এ থাকা ডেভেলপারের দেওয়া তথ্যও অন্তর্ভুক্ত।

requestHash এবং packageName ফিল্ড দুটি মূল অনুরোধের সাথে অবশ্যই মিলতে হবে। তাই, JSON পেলোডের requestDetails অংশটি যাচাই করুন এবং নিশ্চিত করুন যে requestPackageNamerequestHash মূল অনুরোধে পাঠানো তথ্যের সাথে মিলছে, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:

const auto& request_details = json_payload["requestDetails"];

if (request_details.value("requestPackageName", "") != <YOUR_PACKAGE_NAME>) {
  // Don't trust the verdicts.
}

// Check for the existence of the request_hash.
// If you set a request hash in the request and it's not present, you shouldn't
// trust the verdicts.
if (!request_details.contains("requestHash")) {
    // Don't trust the verdicts.
}


// The requestHash from request_details needs to match the request hash your
// app provided.
if (request_details.value("requestHash", "") != <PROVIDED_REQUEST_HASH>) {
    // Don't trust the verdicts.
}

// You can read the rest of payload's fields.

ধাপ ৪: সততার রায়ের ভিত্তিতে কী পদক্ষেপ নেওয়া হবে তা স্থির করুন

deviceIntegrity ফিল্ডে deviceRecognitionVerdict নামে একটিমাত্র ভ্যালু থাকতে পারে। আপনার গেমটি Play-এর ইন্টিগ্রিটি চেক পাস করা কোনো পিসিতে চলছে কি না (যা একটি MEETS_PC_INTEGRITY রেসপন্স) তা নির্ধারণ করতে আপনি এই ভ্যালুটি ব্যবহার করতে পারেন। accountDetails ফিল্ডে appLicensingVerdict নামে একটিমাত্র ভ্যালু থাকে। ব্যবহারকারী Play থেকে লাইসেন্স পেয়েছেন কি না তা নির্ধারণ করতে আপনি এই ভ্যালুটি ব্যবহার করতে পারেন। আপনার গেমের ব্যাকএন্ড সার্ভার এই তথ্য সংগ্রহ করতে পারে এবং আপনার গেমের কী পদক্ষেপ নেওয়া উচিত, যেমন কোনো গেম ইভেন্টকে এগিয়ে যেতে দেওয়া বা ঝুঁকিপূর্ণ ট্র্যাফিকের অ্যাক্সেস অস্বীকার করা, তা নির্ধারণ করতে এটি ব্যবহার করতে পারে।

"deviceIntegrity": {
  "deviceRecognitionVerdict": ["MEETS_PC_INTEGRITY"]
}
"accountDetails": {
  "appLicensingVerdict": "LICENSED"
}

ডিভাইসের অখণ্ডতার রায়

deviceRecognitionVerdict নিম্নলিখিত মানগুলি থাকতে পারে:

MEETS_PC_INTEGRITY
গেমটি একটি আসল পিসি পরিবেশে চলছে, যেখানে ডিভাইসে কোনো ধরনের কারসাজি শনাক্ত করা যায়নি।
খালি (একটি ফাঁকা মান)
গেমটি এমন একটি ডিভাইসে চলছে যেটিতে আক্রমণের (যেমন এপিআই হুকিং) বা সিস্টেমের ত্রুটির (যেমন বিকৃত গুগল ডেস্কটপ সার্ভিসেস সংস্করণ চালিত ডিভাইস) লক্ষণ রয়েছে, অথবা অ্যাপটি কোনো বাস্তব ডিভাইসে চলছে না (যেমন এমন একটি এমুলেটর যা গুগল প্লে-এর ইন্টিগ্রিটি চেক পাস করে না)।

অ্যাকাউন্টের বিবরণের রায়

appLicensingVerdict নিম্নলিখিত মানগুলি থাকতে পারে:

LICENSED
ব্যবহারকারীর অ্যাপটি ব্যবহারের অধিকার আছে। অন্য কথায়, ব্যবহারকারী তার ডিভাইসে গুগল প্লে থেকে আপনার অ্যাপটি ইনস্টল বা আপডেট করেছেন।
UNLICENSED
ব্যবহারকারীর অ্যাপ ব্যবহারের অনুমতি নেই। উদাহরণস্বরূপ, ব্যবহারকারী যখন আপনার অ্যাপটি সাইডলোড করে অথবা গুগল প্লে থেকে এটি সংগ্রহ করে না, তখন এমনটা ঘটে।
UNEVALUATED
একটি প্রয়োজনীয় শর্ত পূরণ না হওয়ায় লাইসেন্স সংক্রান্ত বিবরণ মূল্যায়ন করা হয়নি। এটি বিভিন্ন কারণে ঘটতে পারে, যার মধ্যে নিম্নলিখিতগুলো অন্তর্ভুক্ত:
  • ডিভাইসটি যথেষ্ট নির্ভরযোগ্য নয়।
  • আপনার ডিভাইসে ইনস্টল করা অ্যাপের সংস্করণটি গুগল প্লে-র কাছে অজানা।
  • ব্যবহারকারী গুগল প্লে-তে সাইন ইন করেননি।

ধাপ ৫: ত্রুটি কোডগুলো পরিচালনা করুন

আপনার গেম যদি পিসির জন্য প্লে ইন্টিগ্রিটি (Play Integrity for PC) অনুরোধ পাঠায় এবং সেই অনুরোধ ব্যর্থ হয়, তাহলে আপনার গেম একটি এরর কোড পায়। এই এররগুলো বিভিন্ন কারণে ঘটতে পারে, যেমন—দুর্বল নেটওয়ার্ক সংযোগের মতো পারিপার্শ্বিক সমস্যা, আপনার এপিআই (API) ইন্টিগ্রেশনে সমস্যা, অথবা ক্ষতিকর কার্যকলাপ এবং সক্রিয় আক্রমণ।

পুনরায় চেষ্টাযোগ্য ত্রুটি কোড

এই ত্রুটিগুলির কারণ কখনও কখনও ক্ষণস্থায়ী অবস্থা হয়ে থাকে, এবং তাই আপনার একটি এক্সপোনেনশিয়াল ব্যাক-অফ কৌশল ব্যবহার করে কলটি পুনরায় চেষ্টা করা উচিত।

ইন্টিগ্রিটি ত্রুটি ত্রুটির বিবরণ ত্রুটি কোড
kNetworkError ডিভাইসে নেটওয়ার্ক সংযোগে সমস্যা।
kTooManyRequests ডিভাইসটি থেকে অনেক বেশি অনুরোধ করা হয়েছে।
kClientTransientError ক্লায়েন্টের সাথে একটি সাময়িক সমস্যা।

পুনরায় চেষ্টা করার কৌশল সম্পর্কে আরও সুপারিশের জন্য এখানে দেখুন।

পুনরায় চেষ্টা করা যাবে না এমন ত্রুটি কোড

এইসব ক্ষেত্রে স্বয়ংক্রিয়ভাবে পুনরায় চেষ্টা করলে সাহায্য হওয়ার সম্ভাবনা কম। তবে, ব্যবহারকারী যদি সমস্যা সৃষ্টিকারী পরিস্থিতিটির সমাধান করেন, তাহলে হাতে করে পুনরায় চেষ্টা করলে সাহায্য হতে পারে।

ইন্টিগ্রিটি ত্রুটি ত্রুটির বিবরণ ত্রুটি কোড সুপারিশকৃত পদক্ষেপ
kError SDK কার্যক্রম চলাকালীন মারাত্মক ত্রুটি ঘটেছে। পুনরায় চেষ্টা করার আগে আপনার API বাস্তবায়ন যাচাই করুন।
kCloudProjectNumberIsInvalid ক্লাউড প্রজেক্ট নম্বরটি অবৈধ। যাচাই করুন যে আপনার ক্লাউড প্রজেক্ট নম্বরটি গুগল ক্লাউড কনসোলে সঠিকভাবে কনফিগার করা আছে এবং অনুরোধগুলি সঠিক ক্লাউড প্রজেক্ট নম্বর দিয়ে করা হচ্ছে।
kRequestHashTooLong অনুরোধের হ্যাশটি অনেক দীর্ঘ। তৈরি হওয়া রিকোয়েস্ট হ্যাশগুলো অনেক লম্বা। নিশ্চিত করুন যেন সেগুলো ৫০০ অক্ষরের কম হয়।
kNoValidPreparedTokenFound টোকেন অনুরোধ করার আগে কোনো প্রস্তুত টোকেন থাকে না। [RequestIntegrityToken][request-integrity-token] কলটি করার আগে [PrepareIntegrityToken][prepare-token] অ্যাকশনটি কল করুন।
kSdkRuntimeUpdateRequired Play for Native SDK-এর জন্য একটি আপডেট প্রয়োজন। নিশ্চিত করুন যে ডিভাইসে থাকা গুগল প্লে সার্ভিসেস ক্লায়েন্টটি হালনাগাদ আছে এবং আপনি প্লে ফর নেটিভ পিসি এসডিকে-এর সর্বশেষ সংস্করণটি ব্যবহার করছেন।

আপনার অ্যাপের মধ্যে বিভিন্ন প্লে ইন্টিগ্রিটি এপিআই প্রতিক্রিয়া পরীক্ষা করুন

প্লে ইন্টিগ্রিটি এপিআই আপনার অ্যাপের সাথে কীভাবে কাজ করে তা মূল্যায়ন করার জন্য আপনি টেস্ট তৈরি করতে পারেন।

  1. ব্যবহারকারীদের ইমেল ঠিকানা দিয়ে একটি (বা আপনার ইচ্ছামতো) গুগল গ্রুপ তৈরি করুন। গুগল প্লে-এর সার্ভার থেকে আপনার অ্যাপে এই ব্যবহারকারীরা কোন ইন্টিগ্রিটি ভার্ডিক্ট বা এরর কোড পাবে, তা আপনি নির্বাচন করতে পারেন। এর মাধ্যমে আপনি পরীক্ষা করতে পারবেন যে আপনার অ্যাপ সব ধরনের সম্ভাব্য প্রতিক্রিয়া এবং ত্রুটির ক্ষেত্রে কীভাবে কাজ করে।

  2. এখানে একটি টিকিট তৈরি করুন এবং জানান কোন গুগল গ্রুপ কোন এপিআই প্রতিক্রিয়া পাবে। প্রতিটি গ্রুপকে নিম্নলিখিত বিকল্পগুলির মধ্যে একটি পাওয়ার জন্য নির্ধারিত করা হয়েছে:

    পাস লাইসেন্সিং রায় লাইসেন্সিং রায় ব্যর্থ লাইসেন্সিং রায় মূল্যায়ন করতে অক্ষম
    ডিভাইসের অখণ্ডতা পাস করুন ALLOWLIST_CONFIG_MEETS_PC_INTEGRITY_LICENSED ALLOWLIST_CONFIG_MEETS_PC_INTEGRITY_UNLICENSED ALLOWLIST_CONFIG_MEETS_PC_INTEGRITY_LICENSING_UNEVALUATED
    ডিভাইসের অখণ্ডতা ব্যর্থ হয়েছে প্রযোজ্য নয় প্রযোজ্য নয় ALLOWLIST_CONFIG_NO_PC_INTEGRITY_LICENSING_UNEVALUATED
    যদি আপনি ডিভাইস ইন্টিগ্রিটি ভারডিক্টে ব্যর্থ হন, তাহলে লাইসেন্সিং ভারডিক্ট সর্বদা UNEVALUATED রিটার্ন করবে।

  3. অনুরোধটি প্রক্রিয়া করা হয়ে গেলে এবং পরীক্ষার জন্য পূর্বনির্ধারিত ইন্টিগ্রিটি ভারডিক্টগুলো পাওয়ার জন্য টেস্ট ব্যবহারকারীরা অনুমোদিত তালিকায় অন্তর্ভুক্ত হলে আপনাকে জানানো হবে।