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

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

চিত্র 1 এককালীন কেনাকাটার জন্য জীবনচক্রের অবস্থা এবং ট্রানজিশন ইভেন্ট।

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

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

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

নতুন কেনাকাটা পাওয়ার পর, নতুন কেনাকাটার অর্থপ্রদানের অবস্থা নির্ধারণ করতে purchases.products.get in Play Developer API getPurchaseState পদ্ধতি বা purchases.products.get ব্যবহার করুন।

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

যখন একজন ব্যবহারকারী একটি এককালীন পণ্য ক্রয় করে বা বাতিল করে, তখন Google Play একটি OneTimeProductNotification মেসেজ পাঠায়। আপনার ব্যাকএন্ড ক্রয়ের অবস্থা আপডেট করতে, purchases.products.get পদ্ধতিতে কল করতে OneTimeProductNotification অবজেক্টে প্রদত্ত ক্রয় টোকেন ব্যবহার করুন। এই পদ্ধতি একটি ক্রয় টোকেন দেওয়া সর্বশেষ ক্রয় এবং খরচ অবস্থা প্রদান করে।

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

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

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

বাতিল লেনদেন হ্যান্ডেল

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

যদি Purchased অবস্থায় একটি এককালীন পণ্য ক্রয় ফেরত দেওয়া হয়, তাহলে আপনাকে অকার্যকর ক্রয় API-এর মাধ্যমেও সচেতন করা হবে।

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

আপনি একটি ONE_TIME_PRODUCT_PURCHASED RTDN-এর মাধ্যমে একটি নতুন কেনাকাটা শনাক্ত করেছেন বা আপনাকে PurchasesUpdatedListener এর মাধ্যমে অ্যাপ-মধ্যস্থ সচেতন করা হয়েছে বা আপনার অ্যাপের onResume() পদ্ধতিতে ম্যানুয়ালি কেনাকাটা আনা হয়েছে , আপনাকে অবশ্যই নতুন ক্রয় প্রক্রিয়া করতে হবে। আমরা সুপারিশ করি যে আপনি ভাল নিরাপত্তার জন্য আপনার ব্যাকএন্ডে ক্রয় প্রক্রিয়াকরণ পরিচালনা করুন৷

একটি নতুন এককালীন ক্রয় প্রক্রিয়া করতে এই পদক্ষেপগুলি অনুসরণ করুন:

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

এছাড়াও প্লে বিলিং লাইব্রেরিতে ক্রয় স্বীকৃতি এবং ব্যবহার পদ্ধতি উপলব্ধ রয়েছে যা আপনাকে আপনার অ্যাপ থেকে কেনাকাটা প্রক্রিয়া করার অনুমতি দেয়, তবে আমরা সুপারিশ করি যে আপনি যদি আরও নিরাপদ বাস্তবায়নের জন্য আপনার ব্যাকএন্ডে প্রক্রিয়াকরণ পরিচালনা করেন।