এককালীন ক্রয় জীবনচক্র

সাবস্ক্রিপশন পণ্যের তুলনায় এককালীন ক্রয়ের পণ্যগুলির জীবনচক্র সরলতর, কিন্তু তারপরেও এমন বেশ কিছু অবস্থা এবং রূপান্তর ঘটনা থাকে যা আপনার ব্যাকএন্ডকে সঠিকভাবে পরিচালনা করতে সক্ষম হতে হবে।

এককালীন ক্রয়ের জন্য জীবনচক্রের অবস্থা এবং রূপান্তর ঘটনা।
চিত্র ১: এককালীন ক্রয়ের জীবনচক্রের অবস্থা এবং রূপান্তর ঘটনাসমূহ।

নতুন এককালীন পণ্য ক্রয়

ব্যবহারকারী বিলিং প্রক্রিয়াটি সম্পন্ন করার পর, আপনার অ্যাপ নিম্নলিখিত উপায়গুলোর যেকোনো একটির মাধ্যমে নতুন কেনাকাটা সম্পর্কিত তথ্য দেখতে পারে:

  • ক্রয়ের অবস্থা সম্পর্কে আপডেট পেতে Real-time developer notifications সেটআপ করুন এবং Get all notifications for subscriptions and one-time products বিকল্পটি চালু করুন।
  • ক্রয়ের আপডেট স্বয়ংক্রিয়ভাবে গ্রহণ করার জন্য BillingClient থেকে PurchasesUpdatedListener ইন্টারফেসটি প্রয়োগ করুন।
  • BillingClient.queryPurchasesAsync() মেথডটি কল করুন।

নতুন ক্রয়টি পাওয়ার পর, purchases.productsv2.getproductpurchasev2 in Play Developer API getPurchaseState মেথড অথবা purchases.productsv2.getproductpurchasev2 ব্যবহার করুন।

নতুন ক্রয়ের অর্থ পরিশোধের অবস্থা নির্ধারণ করতে।

রিয়েল-টাইম ডেভেলপার বিজ্ঞপ্তি

যখন কোনো ব্যবহারকারী একটি ওয়ান-টাইম প্রোডাক্ট কেনেন বা কেনা বাতিল করেন, তখন গুগল প্লে একটি OneTimeProductNotification মেসেজ পাঠায়। আপনার ব্যাকএন্ডের পারচেজ স্টেট আপডেট করতে, OneTimeProductNotification অবজেক্টে দেওয়া পারচেজ টোকেন ব্যবহার করে purchases.productsv2.getproductpurchasev2 মেথডটি কল করুন। এই মেথডটি একটি পারচেজ টোকেনের ভিত্তিতে সর্বশেষ ক্রয় এবং ব্যবহারের স্ট্যাটাস প্রদান করে।

যখন একটি প্রি-অর্ডার সম্পন্ন হয় এবং এর ক্রয়ের অবস্থা 'ক্রয়কৃত' (PURCHASED) অবস্থায় পরিবর্তিত হয়, তখন আপনার ক্লায়েন্টের কাছে একটি RTDN পাঠানো হয়। RTDN পাওয়ার পর, আপনার ব্যাকএন্ডে এককালীন পণ্য ক্রয় প্রক্রিয়া (Process one-time product purchases in your backend) অংশে বর্ণিত পদ্ধতি অনুযায়ী প্রি-অর্ডার ক্রয়টি প্রক্রিয়া করুন।

আপনার সুরক্ষিত ব্যাকএন্ডে লেনদেন-সম্পর্কিত RTDN-গুলো পরিচালনা করা উচিত।

সম্পন্ন লেনদেনগুলি পরিচালনা করুন

যখন কোনো ব্যবহারকারী এককালীন পণ্য ক্রয় সম্পন্ন করেন, তখন Google Play তাকে ONE_TIME_PRODUCT_PURCHASED টাইপের একটি OneTimeProductNotification মেসেজ পাঠায়। আপনি এই RTDN-টি পেলে, আপনার ব্যাকএন্ডে এককালীন পণ্য ক্রয় প্রক্রিয়া করার অংশে বর্ণিত পদ্ধতি অনুযায়ী ক্রয়টি সম্পন্ন করুন।

বাতিল লেনদেনগুলি পরিচালনা করুন

যখন কোনো এককালীন প্রোডাক্ট ক্রয় বাতিল করা হয়, তখন যদি আপনি রিয়েল-টাইম ডেভেলপার নোটিফিকেশন পাওয়ার জন্য কনফিগার করে থাকেন, Google Play ONE_TIME_PRODUCT_CANCELED টাইপের একটি OneTimeProductNotification মেসেজ পাঠায়। উদাহরণস্বরূপ, এটি ঘটতে পারে যদি ব্যবহারকারী নির্ধারিত সময়ের মধ্যে পেমেন্ট সম্পন্ন না করেন, অথবা যদি ডেভেলপার বা গ্রাহকের অনুরোধে ক্রয়টি প্রত্যাহার করা হয়। যখন আপনার ব্যাকএন্ড সার্ভার এই নোটিফিকেশনটি পায়, তখন সর্বশেষ ক্রয়ের অবস্থা জানার জন্য purchases.productsv2.getproductpurchasev2 মেথডটি কল করুন, এবং তারপর ব্যবহারকারীর এনটাইটেলমেন্ট সহ আপনার ব্যাকএন্ড সেই অনুযায়ী আপডেট করুন।

যদি Purchased অবস্থায় থাকা কোনো এককালীন পণ্য ফেরত দেওয়া হয়, তাহলে আপনাকে 'Voided Purchases API' ব্যবহার করে সে বিষয়েও অবহিত করা হবে।

আপনার ব্যাকএন্ডে এককালীন পণ্য ক্রয় প্রক্রিয়া করুন

আপনি ONE_TIME_PRODUCT_PURCHASED RTDN ব্যবহার করে নতুন কোনো কেনাকাটা শনাক্ত করুন, অথবা অ্যাপের মধ্যে PurchasesUpdatedListener মাধ্যমে অবগত হন, কিংবা আপনার অ্যাপের onResume() মেথডে ম্যানুয়ালি কেনাকাটাগুলো সংগ্রহ করুন , আপনাকে অবশ্যই নতুন কেনাকাটাটি প্রসেস করতে হবে। উন্নততর নিরাপত্তার জন্য আমরা সুপারিশ করি যে আপনি আপনার ব্যাকএন্ডে কেনাকাটা প্রসেসিংয়ের কাজটি পরিচালনা করুন।

নতুন এককালীন ক্রয় প্রক্রিয়া সম্পন্ন করতে এই ধাপগুলো অনুসরণ করুন:

  1. সর্বশেষ এককালীন পণ্য ক্রয়ের স্ট্যাটাস পেতে purchases.productsv2.getproductpurchasev2 এন্ডপয়েন্টটি কোয়েরি করুন। কোনো ক্রয়ের জন্য এই মেথডটি কল করতে, আপনার অ্যাপ অথবা ONE_TIME_PRODUCT_PURCHASED RTDN থেকে সংশ্লিষ্ট purchaseToken টি প্রয়োজন হবে।
  2. getPurchaseState() কল করুন এবং নিশ্চিত করুন যে ক্রয়ের অবস্থা PURCHASED আছে।
  3. ক্রয়টি যাচাই করুন
  4. ব্যবহারকারীকে কন্টেন্টে অ্যাক্সেস দিন। ক্রয়ের সাথে যুক্ত ব্যবহারকারী অ্যাকাউন্টটি purchases.productsv2.getproductpurchasev2 এর obfuscatedExternalAccountId ফিল্ড থেকে শনাক্ত করা যেতে পারে, যদি ক্রয় করার সময় setObfuscatedAccountId() ব্যবহার করে তা সেট করা হয়ে থাকে।
    1. অ-ব্যবহারযোগ্য পণ্য ক্রয়ের ক্ষেত্রে, purchases.products.acknowledge মেথডটি কল করে কন্টেন্ট ডেলিভারি নিশ্চিত করুন। acknowledgementState ফিল্ডটি পরীক্ষা করে নিশ্চিত হন যে ক্রয়টি পূর্বে নিশ্চিত করা হয়নি।
    2. যদি পণ্যটি ব্যবহারযোগ্য হয়, তাহলে purchases.products.consume মেথডটি কল করে আইটেমটিকে ব্যবহৃত হিসেবে চিহ্নিত করুন, যাতে ব্যবহারকারী এটি ব্যবহার করার পর আবার কিনতে পারেন। এই মেথডটি ক্রয়ের স্বীকৃতিও প্রদান করে।

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