আপনার অ্যাপের জনপ্রিয়তা বাড়ার সাথে সাথে, এটি এমন ক্ষতিকারক ব্যবহারকারীদের অবাঞ্ছিত মনোযোগও আকর্ষণ করতে পারে যারা আপনার অ্যাপের অপব্যবহার করতে চাইতে পারে। এই বিষয়টিতে এমন কিছু সুপারিশ বর্ণনা করা হয়েছে যা আপনার বিলিং ইন্টিগ্রেশনে এই ধরনের আক্রমণ প্রতিরোধ করতে এবং আপনার অ্যাপে অপব্যবহারের প্রভাব কমাতে সাহায্য করবে।
সংবেদনশীল লজিক আপনার ব্যাকএন্ডে স্থানান্তর করুন
আপনার অ্যাপ ডিজাইন যতটা অনুমতি দেয়, সংবেদনশীল ডেটা এবং লজিক আপনার নিয়ন্ত্রিত একটি ব্যাকএন্ড সার্ভারে সরিয়ে নিন। ফ্রন্টএন্ড ডিভাইসে আপনার যত বেশি ডেটা এবং লজিক থাকবে, তা পরিবর্তন বা বিকৃত হওয়ার ঝুঁকি তত বাড়বে।
উদাহরণস্বরূপ, একটি অনলাইন দাবা গেমে ফ্রন্টএন্ড সবসময় বৈধ চাল দিচ্ছে—এই বিশ্বাসে থাকার পরিবর্তে ব্যাকএন্ডেই সমস্ত চাল যাচাই করা উচিত।
এছাড়াও, যদি আপনি কোনো দুর্বলতা বা নিরাপত্তাজনিত সমস্যা খুঁজে পান, তবে আপনার সিস্টেমের নকশার ওপর নির্ভর করে ফ্রন্টএন্ডের চেয়ে ব্যাকএন্ডে ডিবাগ করা, সমাধান করা এবং আপডেট দেওয়া সহজতর হতে পারে।
অধিকার প্রদানের আগে ক্রয় যাচাই করুন।
সংবেদনশীল ডেটা এবং লজিকের একটি বিশেষ ক্ষেত্র যা ব্যাকএন্ডে পরিচালনা করা উচিত, তা হলো ক্রয় যাচাইকরণ এবং প্রাপ্তিস্বীকার। একজন ব্যবহারকারী ক্রয় করার পরে, আপনার নিম্নলিখিত কাজগুলো করা উচিত:
- সংশ্লিষ্ট
purchaseTokenআপনার ব্যাকএন্ডে পাঠান। এর মানে হলো, আপনাকে সমস্ত কেনাকাটার জন্যpurchaseTokenমানগুলোর একটি রেকর্ড রাখতে হবে। - যাচাই করুন যে বর্তমান ক্রয়ের
purchaseTokenমানটি পূর্ববর্তী কোনোpurchaseTokenমানের সাথে মেলে না।purchaseTokenবিশ্বব্যাপী অনন্য, তাই আপনি নিরাপদে এই মানটি আপনার ডেটাবেসে প্রাইমারি কী হিসাবে ব্যবহার করতে পারেন। - ক্রয়টি বৈধ কিনা তা গুগলের কাছে যাচাই করতে Google Play Developer API-এর
Purchases.products:getঅথবাPurchases.subscriptionsv2:getএন্ডপয়েন্টগুলো ব্যবহার করুন। - যদি ক্রয়টি বৈধ হয় এবং অতীতে ব্যবহার করা না হয়ে থাকে, তাহলে আপনি নিরাপদে অ্যাপের ভেতরের আইটেম বা সাবস্ক্রিপশনটির অধিকার প্রদান করতে পারেন।
- সাবস্ক্রিপশনের ক্ষেত্রে,
Purchases.subscriptionsv2:getএ যখনlinkedPurchaseTokenসেট করা হয়, তখন আপনার ডাটাবেস থেকেlinkedPurchaseTokenটি সরিয়ে ফেলা এবং এর জন্য প্রদত্তlinkedPurchaseTokenপ্রত্যাহার করা উচিত, যাতে একাধিক ব্যবহারকারী একই ক্রয়ের জন্য যোগ্য না হন। - আপনার কেবল তখনই এনটাইটেলমেন্ট মঞ্জুর করা উচিত যখন ক্রয়ের অবস্থা 'ক্রয়কৃত'
PURCHASEDহয় এবংPENDINGক্রয়গুলো সঠিকভাবে পরিচালনা করা নিশ্চিত করতে হবে। যদিCANCELED) ক্রয়ের সংখ্যা হঠাৎ করে বেড়ে যায়, তাহলে হতে পারে আপনি এমন সময়ে এনটাইটেলমেন্ট মঞ্জুর করছেন যখন ক্রয়টি তখনওPENDINGঅবস্থায় রয়েছে। আপনি 'অপেক্ষমান লেনদেন পরিচালনা' (Handling pending transactions) অংশে এ বিষয়ে আরও তথ্য পেতে পারেন। এনটাইটেলমেন্ট দেওয়ার পর, যদি আপনি কোনো ব্যবহারযোগ্য পণ্য ব্যবহার করতে এবং তার স্বীকৃতি দিতে চান, তাহলে আপনার সুরক্ষিত ব্যাকএন্ড সার্ভারে
Purchases.products:consumeপ্লে ডেভেলপার এপিআই ব্যবহার করুন। কোনো ব্যবহার-অযোগ্য পণ্য বা সাবস্ক্রিপশনের স্বীকৃতি দেওয়ার জন্য, আপনার সুরক্ষিত ব্যাকএন্ড সার্ভারে প্রাসঙ্গিক প্লে ডেভেলপার এপিআই এন্ডপয়েন্ট, অর্থাৎPurchases.products:acknowledgeঅথবাPurchases.subscriptions:acknowledgeকল করুন। স্বীকৃতি দেওয়া আবশ্যক, কারণ এটি গুগল প্লে-কে জানিয়ে দেয় যে ব্যবহারকারীকে ক্রয়ের জন্য এনটাইটেলমেন্ট দেওয়া হয়েছে। এনটাইটেলমেন্ট দেওয়ার পরপরই আপনার ক্রয়ের স্বীকৃতি দেওয়া উচিত।মনে রাখবেন যে, যদিও আপনি আপনার অ্যাপের মাধ্যমে ক্লায়েন্ট সাইডে কেনাকাটাটি স্বীকার বা গ্রহণ করতে পারেন, সার্ভার সাইড এপিআই (API) দুর্বল নেটওয়ার্ক সংযোগ এবং ক্ষতিকারক কার্যকলাপের মতো সমস্যাগুলির বিরুদ্ধে অতিরিক্ত সুরক্ষা প্রদান করে। উদাহরণস্বরূপ, ধরুন একজন ব্যবহারকারী আপনার অ্যাপ থেকে একটি আইটেম কিনেছেন, কিন্তু কেনাকাটাটি যাচাই করার সময় তার নেটওয়ার্ক সংযোগ বিচ্ছিন্ন হয়ে গেল। সার্ভার অ্যাকনলেজমেন্ট ছাড়া, স্বীকৃতি প্রক্রিয়াটি সম্পূর্ণ করার জন্য তাকে অ্যাপের মাধ্যমে আবার লগ ইন করতে হতে পারে। অন্যথায়, যদি ব্যবহারকারী তিন দিনের মধ্যে আবার লগ ইন না করেন, তাহলে কেনাকাটার স্বীকৃতির অভাবে অর্থ স্বয়ংক্রিয়ভাবে ফেরত হয়ে যায়। সার্ভার অ্যাকনলেজমেন্ট এই পরিস্থিতি প্রতিরোধ করে, কারণ গুগল প্লে সার্ভারকে কেনাকাটাটি বৈধ বলে জানানোর সাথে সাথেই এটি স্বীকৃতি পাঠিয়ে দেয়।
ক্রয় স্বীকৃতি এবং ব্যবহার সম্পর্কে আরও তথ্যের জন্য, ক্রয় প্রক্রিয়াকরণ দেখুন।
আপনার আনলক করা বিষয়বস্তু সুরক্ষিত রাখা
ক্ষতিকারক ব্যবহারকারীদের দ্বারা আপনার আনলক করা কন্টেন্টের পুনঃবিতরণ রোধ করতে, এটিকে আপনার APK ফাইলে অন্তর্ভুক্ত করবেন না। পরিবর্তে, নিম্নলিখিতগুলির মধ্যে একটি করুন:
- আপনার কন্টেন্ট সরবরাহ করতে কন্টেন্ট ফিডের মতো একটি রিয়েল-টাইম পরিষেবা ব্যবহার করুন। রিয়েল-টাইম পরিষেবার মাধ্যমে কন্টেন্ট সরবরাহ করলে তা আপনার কন্টেন্টকে সতেজ রাখতেও সাহায্য করে।
- আপনার কন্টেন্ট সরবরাহ করতে একটি রিমোট সার্ভার ব্যবহার করুন।
যখন আপনি কোনো রিমোট সার্ভার বা রিয়েল-টাইম সার্ভিস থেকে কন্টেন্ট ডেলিভার করেন, তখন আপনি আনলক করা কন্টেন্টটি ডিভাইসের মেমরিতে অথবা ডিভাইসের এসডি কার্ডে সংরক্ষণ করতে পারেন। যদি আপনি এসডি কার্ডে কন্টেন্ট সংরক্ষণ করেন, তবে অবশ্যই কন্টেন্টটি এনক্রিপ্ট করুন এবং ডিভাইস-নির্দিষ্ট একটি এনক্রিপশন কী ব্যবহার করুন।
বাতিলকৃত ক্রয় শনাক্ত করুন এবং তার ব্যবস্থা নিন
বাতিলকৃত ক্রয় হলো এমন ক্রয় যা বাতিল, প্রত্যাহার বা ফেরত নেওয়া হয়েছে। যদি কোনো বাতিলকৃত ক্রয় পূর্বে কোনো ব্যবহারকারীকে অ্যাপের ভেতরের আইটেম বা অন্য কোনো কন্টেন্ট দিয়ে থাকে, তাহলে আপনি বাতিলকৃত ক্রয় এপিআই (Voided Purchases API) ব্যবহার করে ক্রয়টি বাতিল করার কারণ এবং এর সাথে যুক্ত যেকোনো কন্টেন্ট যা আপনি ফেরত নিতে পারবেন, তা জানতে পারবেন।
বিভিন্ন কারণে ইন-অ্যাপ আইটেম এবং সাবস্ক্রিপশনের কেনাকাটা বাতিল করা যেতে পারে, যার মধ্যে নিম্নলিখিত কারণগুলো অন্তর্ভুক্ত:
- ব্যবহারকারী, ডেভেলপার বা গুগল (স্বীকৃতি ছাড়া স্বয়ংক্রিয়ভাবে বাতিল হওয়া কেনাকাটা সহ) দ্বারা কোনো কেনাকাটা বাতিল করা হয়। সাবস্ক্রিপশনের ক্ষেত্রে, মনে রাখবেন যে এটি সাবস্ক্রিপশনটি নিজে বাতিল করাকে বোঝায় না, বরং সাবস্ক্রিপশনটির কেনাকাটা বাতিল করাকে বোঝায়।
- ক্রয়কৃত পণ্যের মূল্য ফেরত নেওয়া হয়েছে।
- অ্যাপ ডেভেলপার ব্যবহারকারীর অর্ডার বাতিল বা ফেরত দেওয়ার সময় কনসোলে 'revoke' অপশনটি চেক করেন।
বাতিল করা ক্রয়ের কারণ এবং পূর্ববর্তী ব্যবহারকারীর আচরণগত তথ্য বিবেচনায় নিয়ে, আপনি একটি কর্মপন্থা নির্ধারণ করতে পারেন। আমরা নিম্নলিখিত এক বা একাধিক পদক্ষেপ বাস্তবায়নের সুপারিশ করছি:
- ফেরত গ্রহণ করুন: যখন কোনো কেনাকাটা বাতিল করা হয়, তখন আপনি অব্যবহৃত আইটেমগুলো এমনভাবে ফেরত নিতে পারেন যেন সেগুলো কখনোই কেনা হয়নি। উদাহরণস্বরূপ, যদি ইন-গেম কারেন্সির কোনো কেনাকাটা বাতিল করা হয়, তাহলে আপনি ব্যবহারকারীকে ইতিমধ্যে দেওয়া কারেন্সি ফেরত নিতে পারেন। যদি ব্যবহারকারী ইতিমধ্যে কারেন্সি খরচ করে ফেলে থাকেন, তাহলে কারেন্সি ব্যালেন্স নেগেটিভ করে দেওয়ার কথা বিবেচনা করুন এবং ব্যালেন্স পজিটিভ না হওয়া পর্যন্ত অ্যাপের কার্যকলাপ ও ভবিষ্যতের কেনাকাটা সীমিত করে দিন।
- একাধিকবার নিয়ম লঙ্ঘনের ক্ষেত্রে প্রয়োগ: প্রথমবার নিয়ম লঙ্ঘনকারীদের জন্য কম কঠোর ব্যবস্থা নেওয়ার কথা বিবেচনা করুন, যেমন অ্যাপের মধ্যে সতর্কবার্তা প্রদর্শন করা। বারবার নিয়ম লঙ্ঘনকারীদের জন্য আরও কঠোর ব্যবস্থা নেওয়ার কথা বিবেচনা করুন।
- সাময়িকভাবে কেনাকাটা নিষ্ক্রিয় করুন: একাধিক স্ট্রাইক বাস্তবায়নের মতোই, যে ব্যবহারকারীদের কেনাকাটা বাতিল করা হয়েছে, তাদের কেনাকাটা নিষ্ক্রিয় করার বিষয়টি বিবেচনা করুন, যতক্ষণ না আপনি কেনাকাটা বাতিলের কারণ আরও পুঙ্খানুপুঙ্খভাবে তদন্ত করতে পারছেন।
- আপনার অ্যাপে প্রবেশাধিকার সাময়িকভাবে বা স্থায়ীভাবে বন্ধ করুন: বারবার ক্ষতিকারক কার্যকলাপের মতো চরম ক্ষেত্রে, আপনার অ্যাপে প্রবেশাধিকার সাময়িকভাবে বা স্থায়ীভাবে বন্ধ করার কথা বিবেচনা করুন।
- বাতিলকৃত ক্রয় এপিআই-তে ঘন ঘন কল করুন: যখন আপনি এক বা একাধিক বাতিলকৃত ক্রয় শনাক্ত করেন, তখন ব্যবহারকারী সেগুলি ব্যবহার করার আগেই ক্রয়গুলি পুনরুদ্ধার করতে বাতিলকৃত ক্রয় এপিআই-তে আরও ঘন ঘন কল করার কথা বিবেচনা করুন। আপনি বাতিলকৃত ক্রয় ডকুমেন্টেশনে বাতিলকৃত ক্রয় এপিআই কোটা সম্পর্কে আরও তথ্য পেতে পারেন।
জালিয়াতি ঘটার আগেই তা শনাক্ত করতে গুগলকে সাহায্য করুন।
কিছু ধরণের জালিয়াতি এমন অসাধু ব্যবহারকারীদের দ্বারা সংঘটিত হয়, যারা নিজেদের কার্যকলাপ গোপন করার জন্য একাধিক গুগল ও ইন-অ্যাপ অ্যাকাউন্ট তৈরি করে।
Google-কে Google অ্যাকাউন্টগুলোকে ইন-অ্যাপ অ্যাকাউন্টের সাথে সংযুক্ত করতে সাহায্য করার জন্য, BillingFlowParams এর বিল্ডারে setObfuscatedAccountId এবং setObfuscatedProfileId মেথডগুলো ব্যবহার করুন।
গুগল এই ডেটা ব্যবহার করে সন্দেহজনক কার্যকলাপ শনাক্ত করে এবং কিছু ধরণের প্রতারণামূলক লেনদেন সম্পন্ন হওয়ার আগেই ব্লক করে দেয়।
ট্রেডমার্ক এবং কপিরাইট লঙ্ঘনের বিরুদ্ধে ব্যবস্থা গ্রহণ
আপনি যদি কন্টেন্ট সরবরাহ বা পরিচালনা করার জন্য কোনো রিমোট সার্ভার ব্যবহার করেন, তাহলে যখনই কোনো ব্যবহারকারী আনলক করা কন্টেন্ট অ্যাক্সেস করবে, আপনার অ্যাপ যেন সেটির ক্রয়ের অবস্থা যাচাই করে। এর ফলে আপনি প্রয়োজনে ব্যবহার বাতিল করতে এবং পাইরেসি কমাতে পারবেন। যদি আপনি দেখেন যে আপনার কন্টেন্ট গুগল প্লে-তে পুনঃবিতরণ করা হচ্ছে, তাহলে দ্রুত এবং দৃঢ়ভাবে ব্যবস্থা নিন। আরও বিস্তারিত জানতে, কপিরাইট হেল্প সেন্টারের ‘ কপিরাইট সংক্রান্ত প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী’ পৃষ্ঠাটি দেখুন।