আপনি আপনার অ্যান্ড্রয়েড অ্যাপ বা প্রোগ্রেসিভ ওয়েব অ্যাপে প্লে বিলিং বাস্তবায়ন করেছেন এবং আপনার ব্যবহারকারীরা আপনার ডিজিটাল পণ্য কিনতে সক্ষম হয়েছেন। এখন আপনার ব্যাকএন্ড সার্ভারে কিছু গুরুত্বপূর্ণ প্লে বিলিং উপাদান বাস্তবায়নের সময়।
গুগল প্লে ডেভেলপার এপিআই
Google Play Developer API-এর দুটি উপাদান রয়েছে: সাবস্ক্রিপশন এবং ইন-অ্যাপ পারচেস API এবং পাবলিশিং API । পণ্য এবং ক্রয় পরিচালনা করতে সাহায্য করার জন্য সাবস্ক্রিপশন এবং ইন-অ্যাপ পারচেস API-তে নিম্নলিখিত REST রিসোর্স রয়েছে:
-
inappproducts: ইন-অ্যাপ পণ্য এবং সাবস্ক্রিপশন ক্যাটালগ ব্যবস্থাপনা -
purchases.products: অ্যাপ-মধ্যস্থ পণ্য ক্রয়ের অবস্থা -
purchases.subscriptions: সাবস্ক্রিপশন ক্রয়ের অবস্থা এবং ব্যবস্থাপনা
আপনি Google Play Developer API সরাসরি REST API হিসেবে ব্যবহার করতে পারেন, অথবা ক্লায়েন্ট লাইব্রেরিগুলি আপনাকে দ্রুত ডেভেলপমেন্ট শুরু করতে সাহায্য করতে পারে। সমস্ত সমর্থিত ভাষার জন্য ক্লায়েন্ট লাইব্রেরি এখানে পাওয়া যাবে। আপনার API প্রকল্পের সাথে লিঙ্ক করতে এবং API অ্যাক্সেস ক্লায়েন্ট সেট আপ করতে Google Play Developer API-এর জন্য শুরু করার নির্দেশিকা অনুসরণ করুন।
সমস্ত অ্যাপ-মধ্যস্থ পণ্য তালিকাভুক্ত করুন
ফ্রন্টএন্ডে (আপনার অ্যান্ড্রয়েড অ্যাপ বা প্রোগ্রেসিভ ওয়েব অ্যাপে) উপলব্ধ পণ্যের বিবরণের জন্য জিজ্ঞাসা করার সময়, আপনাকে পণ্য আইডির তালিকা নির্দিষ্ট করতে হবে। আপনি Play Developer API inappproducts.list পদ্ধতি ব্যবহার করে আপনার ব্যাক-এন্ড সার্ভারে এটি বাস্তবায়ন করতে পারেন যা Play Console-এ আপনার তৈরি করা সমস্ত ইন-অ্যাপ পণ্য এবং সাবস্ক্রিপশন তালিকাভুক্ত করবে। প্রতিটি পণ্যের status পরীক্ষা করে দেখুন এবং শুধুমাত্র active পণ্যগুলি আপনার অ্যাপ ক্লায়েন্টে পাঠান।
এনটাইটেলমেন্ট দেওয়ার আগে কেনাকাটা যাচাই করুন
আপনার অ্যান্ড্রয়েড অ্যাপ বা প্রোগ্রেসিভ ওয়েব অ্যাপে প্লে বিলিং বাস্তবায়নের একটি গুরুত্বপূর্ণ অংশ হল ব্যবহারকারীকে এনটাইটেলমেন্ট দেওয়ার আগে আপনি কেনাকাটা যাচাই করছেন কিনা তা নিশ্চিত করা। যখন আপনি কোনও ব্যবহারকারীকে এনটাইটেলমেন্ট দেন, তখন আপনি তাদের কেনা আইটেমের সাথে সম্পর্কিত সুবিধা বা সামগ্রীতে অ্যাক্সেস দিচ্ছেন। যেহেতু এর জন্য সংবেদনশীল ডেটা পরিচালনা করা প্রয়োজন, তাই এটি ব্যাকএন্ড সার্ভারে পরিচালনা করা উচিত।
Google Play Developer API purchases.products:get এবং purchases.subscriptions:get পদ্ধতি প্রদান করে। কোনও ক্রয় বৈধ কিনা তা যাচাই করতে অ্যাপের মধ্যে পুনরুদ্ধার করা বা আপনার ব্যাক-এন্ড সার্ভারে সংরক্ষিত ক্রয় টোকেনগুলির সাথে এগুলি ব্যবহার করুন। অতিরিক্ত ক্রয় এবং ব্যবহারকারীর এনটাইটেলমেন্ট যাচাইয়ের জন্য আপনার ব্যাক-এন্ড সার্ভারে ক্রয় টোকেনগুলির ট্র্যাক রাখা উচিত। আপনার কী পদক্ষেপ নেওয়া উচিত সে সম্পর্কে আরও বিশদ জানতে ক্রয় যাচাইকরণের বিষয়ে Google Play বিলিং ডকুমেন্টেশন দেখুন।
অ্যাপ-মধ্যস্থ কেনাকাটা
ক্লায়েন্টের কাছ থেকে ক্রয় টোকেন পাওয়ার পর, আপনার ব্যাকএন্ডের Google Play Developer API কল করা উচিত এবং যাচাই করা উচিত যে এটি ইতিমধ্যে ব্যবহার করা হয়নি। একটি বৈধ ক্রয়ের purchaseState ক্ষেত্র হল 1।
যদি ক্রয়টি বৈধ হয়, তাহলে ক্লায়েন্টকে ক্রয়টি স্বীকার করতে হবে এবং সার্ভার থেকে প্রতিক্রিয়া পাওয়ার পর এনটাইটেলমেন্ট প্রদান করতে হবে।
সাবস্ক্রিপশন ক্রয়
অ্যাপ-মধ্যস্থ কেনাকাটা যাচাই করার মতোই, ক্লায়েন্টের কাছ থেকে ক্রয় টোকেন পাওয়ার পর আপনার ব্যাক-এন্ড সার্ভারের উচিত Google Play Developer API-তে কল করা এবং সাবস্ক্রিপশনটি এখনও বৈধ কিনা তা যাচাই করা।
সাবস্ক্রিপশনের expiryTimeMillis ক্ষেত্রটি বর্তমান সময়ের চেয়ে বেশি হলে আপনার ক্লায়েন্টের এনটাইটেলমেন্ট মঞ্জুর করা উচিত।
linkedPurchaseToken ফিল্ডটি পরীক্ষা করার এবং আপগ্রেড, ডাউনগ্রেড এবং অন্যান্য সাবস্ক্রিপশন প্রবাহ পরিচালনা করার জন্য আপনার সাবস্ক্রিপশন ডাটাবেসটি যথাযথভাবে আপডেট করার জন্যও এটি একটি ভাল সময়। এই পৃষ্ঠার বাকি অংশে আরও বিশদ বিবরণ দেওয়া হবে।
ব্যাকএন্ড অবস্থা আপডেট রাখুন
যদি আপনার অ্যাপটি বিভিন্ন প্ল্যাটফর্মে উপলব্ধ থাকে (যা বিভিন্ন পেমেন্ট পদ্ধতি ব্যবহার করতে পারে), তাহলে আপনার ব্যাক-এন্ড সার্ভারে আপনার ব্যবহারকারীদের এবং তাদের কেনাকাটার উপর নজর রাখলে নিশ্চিত হবে যে আপনার ব্যবহারকারীরা আপনার অ্যাপ ব্যবহার করা ডিভাইস এবং প্ল্যাটফর্মগুলিতে তাদের একই এনটাইটেলমেন্ট অ্যাক্সেস করতে পারবেন।
এটি একটি ডাটাবেস থাকার মতো সহজ হতে পারে যেখানে আপনি আপনার ব্যবহারকারীদের এবং তাদের বর্তমান এনটাইটেলমেন্টের রেকর্ড রাখবেন। তারপর যখন তারা কেনাকাটা করবে বা তাদের এনটাইটেলমেন্ট ব্যবহার করবে, তখন আপনি সেই অনুযায়ী এটি আপডেট করবেন। পরের বার যখন তারা অন্য কোনও প্ল্যাটফর্ম থেকে আপনার অ্যাপ অ্যাক্সেস করবে, তখন আপনি আপনার ব্যাকএন্ড থেকে তাদের যথাযথ এনটাইটেলমেন্ট পুনরুদ্ধার করতে পারবেন যাতে আপনার ব্যবহারকারী এটি অ্যাক্সেস করতে পারে।
সাবস্ক্রিপশনের অবস্থার পরিবর্তনগুলি পরিচালনা করুন
একটি সাবস্ক্রিপশন তার জীবনচক্র জুড়ে বিভিন্ন অবস্থার পরিবর্তনের মধ্য দিয়ে যেতে পারে এবং আপনার প্রতিটি অবস্থার সাথে সেই অনুযায়ী সাড়া দেওয়া নিশ্চিত করা উচিত। আপনার ব্যাকএন্ড সর্বদা আপ টু ডেট রাখার জন্য সাবস্ক্রিপশন জীবনচক্র পরিচালনা সম্পর্কে আরও জানুন।
সাবস্ক্রিপশন লিঙ্কডPurchaseToken
সাবস্ক্রিপশন ডকুমেন্টেশনে বর্ণিত হিসাবে, প্রতিটি নতুন গুগল প্লে ক্রয় প্রবাহ (প্রাথমিক ক্রয়, আপগ্রেড, বা ডাউনগ্রেড) একটি নতুন ক্রয় টোকেন তৈরি করে। linkedPurchaseToken ক্ষেত্রটি একই সাবস্ক্রিপশনের সাথে সম্পর্কিত একাধিক ক্রয় টোকেন সনাক্ত করা সম্ভব করে।
প্রতিবার যখন আপনি সাবস্ক্রিপশন যাচাই করবেন, তখন আপনার ব্যাকএন্ডে linkedPurchaseToken ফিল্ডটি সেট করা আছে কিনা তা পরীক্ষা করা উচিত। যদি তা হয়, তাহলে সেই ফিল্ডের মানটি আগের টোকেনটিকে প্রতিনিধিত্ব করে যা এখন প্রতিস্থাপিত হয়েছে। আপনার অবিলম্বে সেই পূর্ববর্তী টোকেনটিকে অবৈধ হিসাবে চিহ্নিত করা উচিত যাতে ব্যবহারকারীরা আপনার কন্টেন্ট অ্যাক্সেস করার জন্য এটি ব্যবহার করতে না পারে।
উদাহরণস্বরূপ, যখন ব্যাকএন্ড প্রাথমিক ক্রয়ের জন্য ক্রয় টোকেন A পায়, একটি খালি linkedPurchaseToken ক্ষেত্র সহ, এটি সেই টোকেনের জন্য এনটাইটেলমেন্ট সক্ষম করে। পরে, আপগ্রেডের পরে যখন ব্যাকএন্ড নতুন ক্রয় টোকেন B পায়, তখন এটি linkedPurchaseToken ক্ষেত্রটি পরীক্ষা করে, দেখে যে এটি A তে সেট করা আছে এবং ক্রয় টোকেন A এর জন্য এনটাইটেলমেন্ট অক্ষম করে।

linkedPurchaseToken বাস্তবায়ন সম্পর্কে বিস্তারিত আলোচনার জন্য, ডুপ্লিকেট সাবস্ক্রিপশন প্রতিরোধ করার জন্য সঠিকভাবে linkedPurchaseToken বাস্তবায়ন করা দেখুন।
রিয়েল-টাইম ডেভেলপার বিজ্ঞপ্তি
ব্যবহারকারীর সাবস্ক্রিপশন পরিচালনার জন্য গুগল প্লে ডেভেলপার এপিআই-এর purchases.subscriptions:get পদ্ধতিটি সত্যের উৎস। আপনি যদি একটি নিরাপদ ব্যাকএন্ড সার্ভারে আপনার সাবস্ক্রাইবারদের অবস্থা পরিচালনা করেন, তাহলে আপনার এটির অবস্থা গুগল সার্ভারের সাথে সিঙ্ক্রোনাইজ রাখা উচিত। তবে, গুগল প্লে ডেভেলপার এপিআই-এর ঘন ঘন পোলিং API কোটা সীমাবদ্ধতার সম্মুখীন হতে পারে এবং গুরুত্বপূর্ণ ব্যবহারকারীর পদক্ষেপের জন্য (যেমন সাবস্ক্রিপশন বাতিল বা আপগ্রেড করা) বিজ্ঞপ্তি পেতে বিলম্ব হতে পারে।
রিয়েল-টাইম ডেভেলপার নোটিফিকেশন (RTDN) হল একটি গুগল প্লে বিলিং বৈশিষ্ট্য যা আপনার সার্ভারকে তাৎক্ষণিকভাবে একটি বিজ্ঞপ্তি পাঠায় যখন কোনও গ্রাহকের এনটাইটেলমেন্ট অবস্থা পরিবর্তন হয় (যেমন সাবস্ক্রিপশন কেনা, সাবস্ক্রিপশন বাতিল, সাবস্ক্রিপশন হোল্ডে)। RTDN এর সাহায্যে, আপনি নিয়মিত গুগল প্লে ডেভেলপার API পোল করার পরিবর্তে শুধুমাত্র এই বিজ্ঞপ্তিগুলিতে সাড়া দিয়ে আপনার গ্রাহক ডাটাবেস সিঙ্কে রাখতে পারেন।
আপনার ব্যাক-এন্ড সার্ভারটি সাবস্ক্রিপশন অবস্থাকে প্রভাবিত করে এমন ইভেন্টগুলির জন্য একটি SubscriptionNotification পাবে, যেমন নবায়ন এবং বাতিলকরণ। তারপর, সম্পূর্ণ অবস্থা পেতে এবং আপনার নিজস্ব ব্যাকএন্ড অবস্থা আপডেট করতে বিজ্ঞপ্তিতে ক্রয় টোকেন সহ Google Play ডেভেলপার API-তে কল করুন।
এই নির্দেশাবলী অনুসরণ করে আপনি আপনার অ্যাপের জন্য RTDN কনফিগার করতে পারেন। তারপর এই বার্তাগুলি ব্যবহার করার জন্য আপনার ব্যাক-এন্ড সার্ভার সেট আপ করা উচিত।
আরও জানতে সম্পূর্ণ RTDN রেফারেন্সটি দেখুন।