সদস্যতা সম্পর্কে

এই বিষয়টি বর্ণনা করে যে কীভাবে সাবস্ক্রিপশন লাইফসাইকেল ইভেন্টগুলি পরিচালনা করতে হয়, যেমন পুনর্নবীকরণ এবং মেয়াদ শেষ। এটি অতিরিক্ত সাবস্ক্রিপশন বৈশিষ্ট্যও বর্ণনা করে যেমন প্রচার অফার করা এবং আপনার ব্যবহারকারীদের তাদের নিজস্ব সদস্যতা পরিচালনা করার অনুমতি দেওয়া।

আপনি যদি আপনার অ্যাপের জন্য সাবস্ক্রিপশন পণ্য কনফিগার না করে থাকেন, তাহলে আপনার পণ্য তৈরি করুন এবং কনফিগার করুন দেখুন।

সদস্যতা ওভারভিউ

একটি সাবস্ক্রিপশন একটি নির্দিষ্ট সময়ের মধ্যে ব্যবহারকারীরা অ্যাক্সেস করতে পারে এমন সুবিধাগুলির একটি সেট উপস্থাপন করে। উদাহরণস্বরূপ, একটি সাবস্ক্রিপশন একজন ব্যবহারকারীকে একটি সঙ্গীত স্ট্রিমিং পরিষেবা অ্যাক্সেস করার জন্য এনটাইটেল করতে পারে।

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

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

সাবস্ক্রিপশন পণ্য, বেস প্ল্যান এবং অফারগুলির বিশদ বিবরণের জন্য, Play Console সহায়তা কেন্দ্রে ডকুমেন্টেশন দেখুন।

প্রিপেইড প্ল্যান ইন্টিগ্রেশন

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

টপ-আপের জন্য, বিলিং ফ্লো চালু করুন যেভাবে আপনি আসল কেনাকাটা করেন। আপনাকে নির্দেশ করার দরকার নেই যে একটি ক্রয় একটি টপ-আপ।

প্রিপেইড প্ল্যান টপ-আপগুলি সর্বদা CHARGE_FULL_PRICE প্রতিস্থাপন মোড ব্যবহার করে এবং আপনাকে এই মোডটি স্পষ্টভাবে সেট করার দরকার নেই৷ ব্যবহারকারীকে অবিলম্বে সম্পূর্ণ বিলিং সময়ের জন্য চার্জ করা হয়, এবং তাদের এনটাইটেলমেন্ট টপ-আপে নির্দিষ্ট সময়কাল দ্বারা বাড়ানো হয়।

একটি টপ-আপের পরে, Purchase ফলাফল অবজেক্টের নিম্নলিখিত ক্ষেত্রগুলি সাম্প্রতিক টপ-আপ ক্রয় প্রতিফলিত করতে আপডেট করা হয়:

  • অর্ডার আইডি
  • ক্রয় সময়
  • স্বাক্ষর
  • টোকেন ক্রয় করুন
  • স্বীকৃত

নিম্নলিখিত Purchase ক্ষেত্রগুলিতে সর্বদা মূল কেনাকাটায় পাওয়া একই ডেটা থাকে:

  • প্যাকেজের নাম
  • ক্রয় অবস্থা
  • পণ্য
  • স্বয়ংক্রিয় পুনর্নবীকরণ

প্রিপেইড ক্রয় স্বীকৃতি

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

সংক্ষিপ্ত প্রিপেইড প্ল্যানের সময়কালের সম্ভাবনার কারণে, যত তাড়াতাড়ি সম্ভব ক্রয়টি স্বীকার করা গুরুত্বপূর্ণ।

এক সপ্তাহ বা তার বেশি সময়কালের প্রিপেইড প্ল্যানগুলি অবশ্যই তিন দিনের মধ্যে স্বীকার করতে হবে৷

এক সপ্তাহের কম সময়ের প্রিপেইড প্ল্যানগুলি অবশ্যই প্ল্যানের অর্ধেকের মধ্যে স্বীকার করতে হবে। উদাহরণস্বরূপ, ডেভেলপারদের তিন দিনের প্রিপেইড প্ল্যান স্বীকার করার জন্য 1.5 দিন আছে।

কিস্তি সাবস্ক্রিপশন ইন্টিগ্রেশন

একটি কিস্তি সাবস্ক্রিপশন হল এক ধরনের সাবস্ক্রিপশন যেখানে ব্যবহারকারীরা পুরো সাবস্ক্রিপশন ফি আগেই পরিশোধ না করে নির্দিষ্ট সময়ের মধ্যে একাধিক কিস্তিতে সাবস্ক্রিপশনের জন্য অর্থ প্রদান করে।

কিস্তি সাবস্ক্রিপশনের জন্য অতিরিক্ত বিবেচনা:

  • দেশের প্রাপ্যতা : কিস্তির সদস্যতা বৈশিষ্ট্য শুধুমাত্র ব্রাজিল, ফ্রান্স, ইতালি এবং স্পেনে উপলব্ধ (সর্বশেষ উপলব্ধতার জন্য কনসোল দেখুন)।
  • মূল্য নির্ধারণ করা : কনসোলে একটি কিস্তি সাবস্ক্রিপশনের জন্য মূল্য নির্ধারণ করার সময়, মূল্যটি মাসিক অর্থপ্রদানের পরিমাণকে প্রতিনিধিত্ব করে। এটি, সেট করা প্রতিশ্রুতি সময়ের সাথে মিলিত, ক্রয় স্ক্রিনে সদস্যতার জন্য মোট পরিমাণ তৈরি করে।
  • প্রতিশ্রুতির সময়কাল : প্রাথমিক সদস্যতা প্রতিশ্রুতির মোট সময়কাল, যার সময় মাসিক অর্থপ্রদান প্রয়োজন। উদাহরণস্বরূপ, যদি একটি বেস প্ল্যানের 15-মাসের প্রতিশ্রুতি সময়কাল থাকে, তাহলে ব্যবহারকারী এই সময়ের মধ্যে 15টি মাসিক অর্থপ্রদান করবেন।
  • পুনর্নবীকরণ : কিস্তি সাবস্ক্রিপশনের পরিপ্রেক্ষিতে, "নবায়ন" একটি প্রতিশ্রুতি সময়ের সমাপ্তি বোঝায়, হয় প্রাথমিক অঙ্গীকারের সময়কাল বা পরবর্তী অঙ্গীকারের সময়কাল। প্রাথমিক সাইন আপের পরে, প্রথম পুনর্নবীকরণটি সম্পূর্ণ প্রাথমিক অঙ্গীকারের মেয়াদ শেষ হওয়ার পরে ঘটে। পরবর্তী পুনর্নবীকরণগুলি পরবর্তী প্রতিটি প্রতিশ্রুতি সময় পূর্ণ হওয়ার পরে ঘটে। কিস্তি সাবস্ক্রিপশনের জন্য পুনর্নবীকরণের ধরনগুলি "মাসিক স্বয়ংক্রিয়ভাবে পুনর্নবীকরণ" বা "একই সময়কালের জন্য স্বয়ংক্রিয় পুনর্নবীকরণ" হতে পারে। "মাসিক স্বয়ংক্রিয় পুনর্নবীকরণ" এর জন্য, পরবর্তী কোনো প্রতিশ্রুতি নেই এবং পরিকল্পনাটি একটি মাসিক সাবস্ক্রিপশনের মতো আচরণ করে যেখানে প্রতিটি মাসিক সাবস্ক্রিপশন চার্জ একটি পুনর্নবীকরণ গঠন করে।
  • বিলিং সময়কাল : কিস্তি সাবস্ক্রিপশনের পরিপ্রেক্ষিতে, এটি পুনরাবৃত্ত ব্যবধানকে বোঝায় যেখানে পৃথক অর্থ প্রদান করা হয়, যেমন বেস প্ল্যানে উল্লেখ করা হয়েছে।
  • পরিকল্পনা পরিবর্তন বনাম মূল্য পরিবর্তন আচরণ : মূল্য পরিবর্তন এবং বাতিলকরণের জন্য, প্রতিশ্রুতি দৃঢ়। এর মানে হল যে যদি একজন ব্যবহারকারী বাতিল করতে চান বা একজন বিকাশকারী মূল্য পরিবর্তন করতে চান, তবে পরিবর্তনটি একটি প্রতিশ্রুতি সময়ের শেষে কার্যকর হয়। পরিকল্পনা পরিবর্তনের জন্য, প্রতিশ্রুতি দৃঢ় নয়। এর অর্থ হল প্ল্যান পরিবর্তনের জন্য একটি প্রতিশ্রুতি সময়ের শেষ না হওয়া পর্যন্ত অপেক্ষা করতে হবে না, এটি হয় অবিলম্বে বা সেট প্রতিস্থাপন মোডের উপর ভিত্তি করে পরবর্তী অর্থপ্রদানের তারিখে কার্যকর হয়৷
  • একই-সাবস্ক্রিপশন প্ল্যান পরিবর্তন : একটি কিস্তি বেস প্ল্যান থেকে একই সাবস্ক্রিপশন পণ্যের নন-ইনস্টলমেন্ট বেস প্ল্যানে প্ল্যান পরিবর্তন অনুমোদিত নয়।
  • রিয়েল-টাইম ডেভেলপার নোটিফিকেশন (RTDNs) : প্রতিশ্রুতিবদ্ধ সময়ের জন্য পেমেন্ট বাকি থাকলে ব্যবহারকারীর সূচনা বাতিল হওয়ার সাথে সাথে একটি SUBSCRIPTION_CANCELLATION_SCHEDULED RTDN পাঠানো হয়। বাতিলকরণ মুলতুবি আছে এবং শুধুমাত্র প্রতিশ্রুতি সময়ের শেষে কার্যকর হবে। তারপর, ব্যবহারকারীর দ্বারা পুনরুদ্ধার না করা হলে, SUBSCRIPTION_CANCELED এবং SUBSCRIPTION_EXPIRED RTDNগুলি প্রতিশ্রুতি সময়ের শেষে পাঠানো হয়৷

  • অর্থপ্রদান / রাজস্ব আদায় : ব্যবহারকারীরা তাদের মাসিক অর্থপ্রদান করার সাথে সাথে বিকাশকারীর অর্থ প্রদান ঘটবে, অন্যান্য সকল সদস্যতার মতো একই শর্তাবলী সাপেক্ষে। যখন ব্যবহারকারী কিস্তি সাবস্ক্রিপশনের জন্য সাইন আপ করেন তখন বিকাশকারীদের অগ্রিম অর্থ প্রদান করা হয় না।

  • মিসড পেমেন্ট কালেকশন : যদি কোনো ব্যবহারকারী কোনো কিস্তি সাবস্ক্রিপশন পেমেন্ট করতে ব্যর্থ হয়, তাহলে Google বা ডেভেলপার কেউই ব্যবহারকারীর কাছ থেকে এই ধরনের কোনো মিসড বা বকেয়া পেমেন্ট সংগ্রহ করার চেষ্টা করবে না, Google যে কোনো প্রযোজ্য গ্রেস পিরিয়ড বা অ্যাকাউন্ট হোল্ডের সময়কালে পেমেন্টের জন্য পর্যায়ক্রমে পুনরায় চেষ্টা করতে পারে। এর স্বাভাবিক অর্থপ্রদানের পুনঃপ্রচেষ্টার অনুশীলন অনুসারে। Google বিকাশকারীর কাছে কোনো অবশিষ্ট অবৈতনিক কিস্তির অর্থপ্রদানের জন্য দায়ী থাকবে না।

  • প্লে বিলিং লাইব্রেরি প্রাপ্যতা : installmentDetails ক্ষেত্রটি শুধুমাত্র PBL 7 বা তার পরে উপলব্ধ। PBL 5 এবং পরবর্তীতে, queryProductDetails() ব্যবহার করে কিস্তির সাবস্ক্রিপশন ফেরত দেওয়া হয়, কিন্তু সাবস্ক্রিপশনে প্ল্যানের প্রতিশ্রুতিবদ্ধ পেমেন্ট গণনার মতো বিস্তারিত কিস্তির তথ্য অন্তর্ভুক্ত করা হবে না।

ব্যবহারকারীদের একটি সদস্যতা পরিচালনা করার অনুমতি দিতে গভীর লিঙ্ক ব্যবহার করুন৷

আপনার অ্যাপটিতে সেটিংস বা পছন্দের স্ক্রিনে একটি লিঙ্ক অন্তর্ভুক্ত করা উচিত যা ব্যবহারকারীদের তাদের সদস্যতাগুলি পরিচালনা করতে দেয়, যা আপনি আপনার অ্যাপের স্বাভাবিক চেহারা এবং অনুভূতিতে অন্তর্ভুক্ত করতে পারেন।

মেয়াদ শেষ না হওয়া সাবস্ক্রিপশনের জন্য আপনি আপনার অ্যাপ থেকে Google Play সাবস্ক্রিপশন সেন্টারে একটি গভীর লিঙ্ক অন্তর্ভুক্ত করতে পারেন, যা আপনি সাবস্ক্রিপশন রিসোর্সের subscriptionState ফিল্ড ব্যবহার করে নির্ধারণ করতে পারেন। এর উপর ভিত্তি করে, প্লে স্টোর সাবস্ক্রিপশন সেন্টারে আপনি ডিপ লিঙ্ক করতে পারেন এমন বিভিন্ন উপায় রয়েছে।

ব্যবহারকারীদের সেই পৃষ্ঠায় নির্দেশিত করতে নিম্নলিখিত URLটি ব্যবহার করুন যা তাদের সমস্ত সদস্যতা দেখায়, যেমন চিত্র 1 এবং 2 এ দেখানো হয়েছে:

https://play.google.com/store/account/subscriptions
প্লে স্টোর সাবস্ক্রিপশন স্ক্রিন ব্যবহারকারীর সমস্ত Google Play-বিল সাবস্ক্রিপশনের স্থিতি দেখায়।
চিত্র 1. প্লে স্টোর সদস্যতা স্ক্রীনটি ব্যবহারকারীর সমস্ত Google Play-বিল সাবস্ক্রিপশনের অবস্থা দেখায়।


অতিরিক্ত বিবরণ দেখতে একটি সদস্যতা আলতো চাপুন.
চিত্র 2. অতিরিক্ত বিবরণ দেখতে একটি সাবস্ক্রিপশনে আলতো চাপুন৷

এই গভীর লিঙ্কটি একজন ব্যবহারকারীকে প্লে স্টোর সাবস্ক্রিপশন সেন্টার থেকে বাতিল করা সাবস্ক্রিপশন পুনরুদ্ধার করতে সাহায্য করতে কার্যকর হতে পারে।

মেয়াদোত্তীর্ণ সাবস্ক্রিপশনের জন্য সরাসরি ব্যবস্থাপনা পৃষ্ঠার সাথে লিঙ্ক করতে, কেনা সাবস্ক্রিপশনের সাথে যুক্ত প্যাকেজের নাম এবং productId নির্দেশ করুন। একটি বিদ্যমান সাবস্ক্রিপশনের জন্য productId প্রোগ্রাম্যাটিকভাবে নির্ধারণ করতে, আপনার অ্যাপের ব্যাকএন্ড জিজ্ঞাসা করুন বা একটি নির্দিষ্ট ব্যবহারকারীর সাথে যুক্ত সদস্যতার তালিকার জন্য BillingClient.queryPurchasesAsync() এ কল করুন। প্রতিটি সাবস্ক্রিপশনে সাবস্ক্রিপশন স্ট্যাটাসের তথ্যের অংশ হিসেবে সংশ্লিষ্ট productId থাকে। সাবস্ক্রিপশন ক্রয়ের সাথে যুক্ত প্রতিটি SubscriptionPurchaseLineItem অবজেক্টে সেই লাইন আইটেমটিতে ব্যবহারকারীর কেনা সাবস্ক্রিপশনের সাথে যুক্ত productId মান থাকে।

ব্যবহারকারীদের একটি নির্দিষ্ট সাবস্ক্রিপশন ম্যানেজমেন্ট স্ক্রিনে নির্দেশিত করতে নিম্নলিখিত URLটি ব্যবহার করুন, যথাক্রমে productId এবং অ্যাপ প্যাকেজ নামের সাথে "your-sub-product-id" এবং "your-app-package" প্রতিস্থাপন করুন:

https://play.google.com/store/account/subscriptions?sku=your-sub-product-id&package=your-app-package

ব্যবহারকারী তারপরে তাদের অর্থপ্রদানের পদ্ধতিগুলি পরিচালনা করতে এবং বাতিলকরণ, পুনঃসাবস্ক্রিপশন এবং বিরতি সহ বৈশিষ্ট্যগুলি অ্যাক্সেস করতে সক্ষম হয়।

ব্যবহারকারীদের আপগ্রেড, ডাউনগ্রেড বা তাদের সদস্যতা পরিবর্তন করার অনুমতি দিন

আপনি বিদ্যমান গ্রাহকদের তাদের চাহিদাগুলি আরও ভালভাবে মেটাতে তাদের সদস্যতা পরিকল্পনা পরিবর্তন করতে বিভিন্ন বিকল্প সরবরাহ করতে পারেন:

  • আপনি যদি একাধিক সাবস্ক্রিপশন টিয়ার বিক্রি করেন, যেমন "বেসিক" এবং "প্রিমিয়াম" সাবস্ক্রিপশন, আপনি ব্যবহারকারীদের একটি ভিন্ন সাবস্ক্রিপশনের বেস প্ল্যান বা অফার কিনে স্তর পরিবর্তন করার অনুমতি দিতে পারেন।
  • আপনি ব্যবহারকারীদের তাদের বর্তমান বিলিং সময়কাল পরিবর্তন করার অনুমতি দিতে পারেন, যেমন একটি মাসিক থেকে একটি বার্ষিক পরিকল্পনায় স্যুইচ করা।
  • আপনি ব্যবহারকারীদের স্বয়ংক্রিয় পুনর্নবীকরণ এবং প্রিপেইড প্ল্যানগুলির মধ্যে স্যুইচ করার অনুমতি দিতে পারেন।

আপনি যোগ্য ব্যবহারকারীদের ডিসকাউন্ট প্রদানের জন্য সদস্যতা অফার প্রদান করে এই পরিবর্তনগুলির যেকোনো একটিকে উৎসাহিত করতে পারেন। উদাহরণস্বরূপ, আপনি একটি মাসিক থেকে বার্ষিক প্ল্যানে স্যুইচ করার সময় প্রথম বছরে 50% ডিসকাউন্ট প্রদান করে এমন একটি অফার তৈরি করতে পারেন এবং এই অফারটি মাসিক প্ল্যানে সদস্যতা নেওয়া ব্যবহারকারীদের জন্য সীমাবদ্ধ করতে পারেন যারা এই অফারটি কিনেননি। অফারের যোগ্যতার মানদণ্ড সম্পর্কে আরও তথ্য সহায়তা কেন্দ্রে উপলব্ধ

চিত্র 3 তিনটি ভিন্ন পরিকল্পনা সহ একটি উদাহরণ অ্যাপ দেখায়:

এই অ্যাপটির তিনটি সাবস্ক্রিপশন স্তর রয়েছে..
চিত্র 3. এই অ্যাপটির তিনটি সাবস্ক্রিপশন স্তর রয়েছে৷

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

যখন ব্যবহারকারীরা তাদের সাবস্ক্রিপশন আপগ্রেড, ডাউনগ্রেড বা পরিবর্তন করার সিদ্ধান্ত নেন, তখন আপনি একটি প্রতিস্থাপন মোড নির্দিষ্ট করেন যা নির্ধারণ করে যে বর্তমান প্রদত্ত বিলিং সময়ের আনুপাতিক মান কীভাবে প্রয়োগ করা হবে এবং কখন কোন এনটাইটেলমেন্ট পরিবর্তন ঘটে।

প্রতিস্থাপন মোড

নিম্নলিখিত সারণীতে উপলব্ধ প্রতিস্থাপন মোড এবং উদাহরণ ব্যবহার এবং অর্থপ্রদানের গণনা প্রদত্ত হিসাবে বিবেচিত হয়েছে।

প্রতিস্থাপন মোড

বর্ণনা

উদাহরণ ব্যবহার

প্রতিশ্রুতিবদ্ধ অর্থ প্রদানের হিসাবে রেকর্ড করা হয়েছে (কিস্তির সদস্যতা প্রতিস্থাপনের জন্য)

WITH_TIME_PRORATION

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

কোনো তাত্ক্ষণিক অতিরিক্ত অর্থপ্রদান ছাড়াই আরও ব্যয়বহুল স্তরে আপগ্রেড করুন৷

0

CHARGE_PRORATED_PRICE

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

দ্রষ্টব্য: এই বিকল্পটি শুধুমাত্র একটি সাবস্ক্রিপশন আপগ্রেডের জন্য উপলব্ধ, যেখানে সময়ের প্রতি ইউনিট মূল্য বৃদ্ধি পায়।

বিলিং তারিখ পরিবর্তন না করে একটি আরো ব্যয়বহুল স্তরে আপগ্রেড করুন৷

1

CHARGE_FULL_PRICE

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

দ্রষ্টব্য: যদি নতুন সাবস্ক্রিপশনে একটি বিনামূল্যের ট্রায়াল বা পরিচায়ক অফার থাকে, তবে আপগ্রেড বা ডাউনগ্রেডের সময় ব্যবহারকারীর কাছ থেকে $0 বা প্রাথমিক অফারের মূল্য, যেটি প্রযোজ্য হোক না কেন চার্জ করা হবে৷

ছোট থেকে দীর্ঘ বিলিং পিরিয়ডে আপগ্রেড করুন।

1 (দ্রষ্টব্য: 0 যদি নতুন সাবস্ক্রিপশনে বিনামূল্যে ট্রায়াল থাকে।)

WITHOUT_PRORATION

সদস্যতা অবিলম্বে আপগ্রেড বা ডাউনগ্রেড করা হয় এবং সদস্যতা পুনর্নবীকরণের সময় নতুন মূল্য চার্জ করা হয়। বিলিং চক্র একই থাকে।

কোনো অবশিষ্ট বিনামূল্যের সময় ধরে রেখে একটি উচ্চতর সাবস্ক্রিপশন স্তরে আপগ্রেড করুন।

0

DEFERRED

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

কম ব্যয়বহুল স্তরে ডাউনগ্রেড করুন।

1

আপগ্রেড বা ডাউনগ্রেড অফারের বিভিন্ন আপসেল এবং উইনব্যাক অ্যাপ্লিকেশন সম্পর্কে আরও জানতে, অফার এবং প্রচার নির্দেশিকা পড়ুন।

একটি ক্রয়ের জন্য প্রতিস্থাপন মোড সেট করুন

আপনি আপনার পছন্দ এবং ব্যবসায়িক যুক্তির উপর ভিত্তি করে বিভিন্ন ধরনের সাবস্ক্রিপশন ট্রানজিশনের জন্য বিভিন্ন প্রতিস্থাপন মোড ব্যবহার করতে পারেন। এই বিভাগটি ব্যাখ্যা করে যে কীভাবে সাবস্ক্রিপশনে পরিবর্তনের জন্য একটি প্রতিস্থাপন মোড সেট করতে হয় এবং প্রযোজ্য সীমাবদ্ধতাগুলি।

একই সাবস্ক্রিপশনের মধ্যে পুনরায় সদস্যতা নিন বা প্ল্যান পরিবর্তন করুন

আপনি Google Play কনসোলে একটি ডিফল্ট প্রতিস্থাপন মোড নির্দিষ্ট করতে পারেন। এই সেটিং আপনাকে বর্তমান গ্রাহকদের চার্জ করার সময় বেছে নিতে দেয় যদি তারা একটি ভিন্ন বেস প্ল্যান ক্রয় করে বা একই সাবস্ক্রিপশনের জন্য অফার করে বা বাতিল করার পরে পুনরায় সাবস্ক্রাইব করে। উপলব্ধ বিকল্পগুলি হল অবিলম্বে চার্জ করুন , CHARGE_FULL_PRICE এর সমতুল্য, এবং পরবর্তী বিলিং তারিখে চার্জ করুন , WITHOUT_PRORATION এর সমতুল্য৷ একই সাবস্ক্রিপশনের মধ্যে বেস প্ল্যান স্যুইচ করার সময় এইগুলিই একমাত্র প্রাসঙ্গিক প্রতিস্থাপন মোড।

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

সাবস্ক্রিপশন জুড়ে পরিকল্পনা স্যুইচ করুন, অথবা ডিফল্ট প্রতিস্থাপন মোড ওভাররাইড করুন

ব্যবহারকারী যদি সাবস্ক্রিপশন পণ্য পরিবর্তন করে থাকে—একটি ভিন্ন সাবস্ক্রিপশন কিনছে —অথবা আপনি যদি কোনো কারণে ডিফল্ট প্রতিস্থাপন মোডকে ওভাররাইড করতে চান, তাহলে ক্রয় প্রবাহের প্যারামিটারের অংশ হিসেবে আপনি রানটাইমে প্রেশন রেট নির্দিষ্ট করেন।

আপনার রানটাইম ক্রয় প্রবাহ কনফিগারেশনের অংশ হিসাবে সঠিকভাবে SubscriptionUpdateParams প্রদান করতে, নিম্নলিখিত সীমাবদ্ধতাগুলি নোট করুন:

  • প্রিপেইড প্ল্যান, স্বয়ংক্রিয় পুনর্নবীকরণ প্ল্যান বা কিস্তি প্ল্যান থেকে প্রিপেইড প্ল্যানে একই-সাবস্ক্রিপশন স্যুইচ করার সময় আপগ্রেড, ডাউনগ্রেড বা শুরু করার সময়, শুধুমাত্র অনুমোদিত প্রতিস্থাপন মোড হল CHARGE_FULL_PRICE । আপনি যদি অন্য কোনো প্রতিস্থাপন মোড নির্দিষ্ট করেন, তাহলে ক্রয় ব্যর্থ হয় এবং ব্যবহারকারীকে একটি ত্রুটি দেখানো হয়।
  • প্রিপেইড প্ল্যান বা অটো-রিনিউয়িং প্ল্যান থেকে একই সাবস্ক্রিপশনের মধ্যে প্ল্যানগুলি স্যুইচ করার সময়, বৈধ প্রেশন মোডগুলি হল CHARGE_FULL_PRICE এবং WITHOUT_PRORATION ৷ আপনি যদি অন্য কোনো প্রেশন মোড নির্দিষ্ট করেন, তাহলে ক্রয় ব্যর্থ হয় এবং ব্যবহারকারীকে একটি ত্রুটি দেখানো হয়।
  • একই সাবস্ক্রিপশন পণ্যের মধ্যে একটি কিস্তির বেস প্ল্যান থেকে একটি নন-ইনস্টলমেন্ট বেস প্ল্যানে স্যুইচ করার অনুমতি নেই।

প্রতিস্থাপন উদাহরণ এবং আচরণ

প্রতিটি প্রোরেশন মোড কীভাবে কাজ করে তা বোঝার জন্য, নিম্নলিখিত পরিস্থিতি বিবেচনা করুন:

Samwise-এর কান্ট্রি গার্ডেনার অ্যাপ থেকে অনলাইন সামগ্রীর সদস্যতা রয়েছে। কন্টেন্টের টায়ার 1 সংস্করণে তার মাসিক সাবস্ক্রিপশন রয়েছে, যা শুধুমাত্র পাঠ্য। এই সাবস্ক্রিপশনের জন্য তার প্রতি মাসে $2 খরচ হয়, এবং এটি মাসের প্রথম তারিখে পুনর্নবীকরণ হয়।

15 এপ্রিল, স্যামওয়াইজ টিয়ার 2 সাবস্ক্রিপশনের বার্ষিক সংস্করণে আপগ্রেড করার সিদ্ধান্ত নিয়েছে, যার মধ্যে ভিডিও আপডেট রয়েছে এবং প্রতি বছর $36 খরচ হয়।

সাবস্ক্রিপশন আপগ্রেড করার সময়, বিকাশকারী একটি প্রেশন মোড নির্বাচন করে। নিম্নলিখিত তালিকাটি বর্ণনা করে যে কীভাবে প্রতিটি প্রোরেশন মোড Samwise এর সদস্যতাকে প্রভাবিত করে:

WITH_TIME_PRORATION

Samwise এর Tier 1 সদস্যতা অবিলম্বে শেষ হয়৷ যেহেতু তিনি পুরো মাসের জন্য অর্থ প্রদান করেছেন (এপ্রিল 1-30) কিন্তু সাবস্ক্রিপশন সময়ের অর্ধেক পথ আপগ্রেড করেছেন, তাই এক মাসের সাবস্ক্রিপশনের অর্ধেক ($1) তার নতুন সদস্যতায় প্রয়োগ করা হয়েছে। যাইহোক, যেহেতু নতুন সাবস্ক্রিপশনের খরচ প্রতি বছর $36, তাই $1 ক্রেডিট ব্যালেন্স মাত্র 10 দিনের জন্য (এপ্রিল 16-25); তাই 26 এপ্রিল, তাকে একটি নতুন সাবস্ক্রিপশনের জন্য $36 এবং পরবর্তী প্রতি বছরের 26শে এপ্রিল আরও $36 চার্জ করা হয়।

কেনাকাটা সফল হওয়ার মুহুর্তে আপনার অ্যাপের PurchasesUpdatedListener কল করা উচিত এবং আপনি একটি queryPurchasesAsync() কলের অংশ হিসাবে নতুন কেনাকাটা পুনরুদ্ধার করতে সক্ষম হবেন। আপনার ব্যাকএন্ড অবিলম্বে একটি SUBSCRIPTION_PURCHASED রিয়েল টাইম বিকাশকারী বিজ্ঞপ্তি পায়৷

CHARGE_PRORATED_PRICE

এই মোডটি ব্যবহার করা যেতে পারে কারণ টায়ার 2 সাবস্ক্রিপশন মূল্য প্রতি টাইম ইউনিট ($36/বছর = $3/মাস) প্রতি ইউনিট প্রতি টায়ার 1 সাবস্ক্রিপশন মূল্য ($2/মাস) থেকে বেশি। Samwise এর Tier 1 সদস্যতা অবিলম্বে শেষ হয়৷ যেহেতু তিনি পুরো মাসের জন্য অর্থ প্রদান করেছেন কিন্তু শুধুমাত্র অর্ধেক ব্যবহার করেছেন, তাই একটি মাসের সাবস্ক্রিপশনের অর্ধেক ($1) তার নতুন সাবস্ক্রিপশনে প্রয়োগ করা হয়েছে। যাইহোক, যেহেতু নতুন সাবস্ক্রিপশনের দাম $36/বছর, বাকি 15 দিনের খরচ $1.50; তাই তাকে তার নতুন সাবস্ক্রিপশনের জন্য $0.50 এর পার্থক্য চার্জ করা হয়েছে। 1লা মে, Samwise তার নতুন সাবস্ক্রিপশন স্তরের জন্য $36 এবং পরবর্তী প্রতি বছরের 1 মে তারিখে আরও $36 চার্জ করা হয়।

কেনাকাটা সফল হওয়ার মুহুর্তে আপনার অ্যাপের PurchasesUpdatedListener কল করা উচিত এবং আপনি একটি queryPurchasesAsync() কলের অংশ হিসাবে নতুন কেনাকাটা পুনরুদ্ধার করতে সক্ষম হবেন। আপনার ব্যাকএন্ড অবিলম্বে একটি SUBSCRIPTION_PURCHASED রিয়েল টাইম বিকাশকারী বিজ্ঞপ্তি পায়৷

WITHOUT_PRORATION

Samwise এর Tier 1 সাবস্ক্রিপশন অবিলম্বে কোন অতিরিক্ত চার্জ ছাড়াই Tier 2 এ আপগ্রেড করা হয় এবং 1লা মে তাকে তার নতুন সাবস্ক্রিপশন স্তরের জন্য $36 এবং পরবর্তী প্রতি বছরের 1 মে তারিখে আরও $36 চার্জ করা হয়।

কেনাকাটা সফল হওয়ার মুহুর্তে আপনার অ্যাপের PurchasesUpdatedListener কল করা উচিত এবং আপনি একটি queryPurchasesAsync() কলের অংশ হিসাবে নতুন কেনাকাটা পুনরুদ্ধার করতে সক্ষম হবেন। আপনার ব্যাকএন্ড অবিলম্বে একটি SUBSCRIPTION_PURCHASED রিয়েল টাইম বিকাশকারী বিজ্ঞপ্তি পায়৷

DEFERRED

স্যামওয়াইজ এর টিয়ার 1 সাবস্ক্রিপশন 30 এপ্রিল মেয়াদ শেষ না হওয়া পর্যন্ত চলতে থাকে। 1লা মে, টায়ার 2 সাবস্ক্রিপশন কার্যকর হয় এবং Samwise তার নতুন সাবস্ক্রিপশন স্তরের জন্য $36 চার্জ করা হয়।

কেনাকাটা সফল হওয়ার মুহুর্তে আপনার অ্যাপের PurchasesUpdatedListener কল করা উচিত এবং আপনি একটি queryPurchasesAsync() কলের অংশ হিসাবে নতুন কেনাকাটা পুনরুদ্ধার করতে সক্ষম হবেন। আপনার ব্যাকএন্ড অবিলম্বে একটি SUBSCRIPTION_PURCHASED রিয়েল টাইম বিকাশকারী বিজ্ঞপ্তি পায়৷ আপনি ক্রয়টি একইভাবে প্রক্রিয়া করবেন যেভাবে আপনি সেই সময়ে অন্য কোনও নতুন ক্রয় প্রক্রিয়া করবেন। বিশেষ করে, নিশ্চিত করুন যে আপনি নতুন ক্রয় স্বীকার করেছেন। মনে রাখবেন যে প্রতিস্থাপন কার্যকর হওয়ার মুহুর্তে নতুন সাবস্ক্রিপশনের startTime পপুলেট করা হয়, যা পুরানো সাবস্ক্রিপশনের মেয়াদ শেষ হলে ঘটে। সেই সময়ে, আপনি নতুন সদস্যতা পরিকল্পনার জন্য একটি SUBSCRIPTION_RENEWED RTDN পাবেন৷ ReplacementMode.DEFERRED আচরণ সম্পর্কে আরও পড়ুন হ্যান্ডেল ডিফারড রিপ্লেসমেন্টে

CHARGE_FULL_PRICE

Samwise এর Tier 1 সদস্যতা অবিলম্বে শেষ হয়৷ তার টিয়ার 2 সাবস্ক্রিপশন আজ থেকে শুরু হয়েছে এবং তাকে $36 চার্জ করা হয়েছে। যেহেতু তিনি পুরো মাসের জন্য অর্থ প্রদান করেছেন কিন্তু শুধুমাত্র অর্ধেক ব্যবহার করেছেন, তাই একটি মাসের সাবস্ক্রিপশনের অর্ধেক ($1) তার নতুন সাবস্ক্রিপশনে প্রয়োগ করা হয়েছে। যেহেতু নতুন সাবস্ক্রিপশনের দাম $36/বছর, সে তার সাবস্ক্রিপশন সময়ের (~10 দিন) সাথে এক বছরের 1/36তম অংশ পাবে। তাই, Samwise এর পরবর্তী চার্জ হবে আজ থেকে 1 বছর 10 দিনের মধ্যে $36। এর পরে, তাকে প্রতি বছর $36 চার্জ করা হয়।

একটি proration মোড নির্বাচন করার সময়, আমাদের প্রতিস্থাপন সুপারিশ পর্যালোচনা করতে ভুলবেন না।

ট্রিগার সদস্যতা পরিবর্তন অ্যাপ মধ্যে

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

কোটলিন

val offerToken = productDetails
        .getSubscriptionOfferDetails(selectedOfferIndex)
        .getOfferToken()

val billingParams = BillingFlowParams.newBuilder().setProductDetailsParamsList(
       listOf(
           BillingFlowParams.ProductDetailsParams.newBuilder()
               .setProductDetails(productDetails)
               .setOfferToken(offerToken)
               .build()
       )
       ).setSubscriptionUpdateParams(
           BillingFlowParams.SubscriptionUpdateParams.newBuilder()
               .setOldPurchaseToken("old_purchase_token")
               .setSubscriptionReplacementMode(
                 BillingFlowParams.ReplacementMode.CHARGE_FULL_PRICE
               )
               .build()
       ).build()

billingClient.launchBillingFlow(
    activity,
    billingParams
   )
// ...

জাভা

String offerToken = productDetails
    .getSubscriptionOfferDetails(selectedOfferIndex)
    .getOfferToken();

BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
    .setProductDetailsParamsList(
        ImmuableList.of(
            ProductDetailsParams.newBuilder()
                // fetched via queryProductDetailsAsync
                .setProductDetails(productDetails)
                // offerToken can be found in
                // ProductDetails=>SubscriptionOfferDetails
                .setOfferToken(offerToken)
                .build()))
    .setSubscriptionUpdateParams(
        SubscriptionUpdateParams.newBuilder()
            // purchaseToken can be found in Purchase#getPurchaseToken
            .setOldPurchaseToken("old_purchase_token")
            .setSubscriptionReplacementMode(ReplacementMode.CHARGE_FULL_PRICE)
            .build())
    .build();

BillingResult billingResult = billingClient.launchBillingFlow(activity, billingFlowParams);
// ...

প্রতিস্থাপন সুপারিশ

নিম্নলিখিত সারণীটি প্রতিটি দৃশ্যের জন্য আমরা যা সুপারিশ করি তার সাথে বিভিন্ন প্রেশনের পরিস্থিতি দেখায়:

দৃশ্যকল্প প্রস্তাবিত প্রতিস্থাপন মোড ফলাফল
আরও ব্যয়বহুল স্তরে আপগ্রেড করা হচ্ছে CHARGE_PRORATED_PRICE একই বিলিং পিরিয়ড রাখার সময় ব্যবহারকারী অবিলম্বে অ্যাক্সেস পান।
কম ব্যয়বহুল স্তরে অবনমিত হচ্ছে DEFERRED ব্যবহারকারী ইতিমধ্যে আরও ব্যয়বহুল স্তরের জন্য অর্থ প্রদান করেছে, তাই তারা পরবর্তী বিলিং তারিখ পর্যন্ত অ্যাক্সেস বজায় রাখে।
ফ্রি ট্রায়ালে থাকাকালীন আপগ্রেড করা, ট্রায়াল রাখা WITHOUT_PRORATION ব্যবহারকারী বিনামূল্যে ট্রায়াল অ্যাক্সেস রাখে, কিন্তু বাকি ট্রায়ালের জন্য একটি উচ্চ স্তরে আপগ্রেড করে৷
বিনামূল্যের ট্রায়ালে থাকাকালীন আপগ্রেড করা - বিনামূল্যে ট্রায়ালে অ্যাক্সেস শেষ করা CHARGE_PRORATED_PRICE ব্যবহারকারী অবিলম্বে নতুন স্তরে অ্যাক্সেস পায় তবে আর বিনামূল্যে ট্রায়াল নেই৷

সাবস্ক্রিপশন পরিবর্তন কেনাকাটা পরিচালনা করুন

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

অ্যাপ-মধ্যস্থ আচরণ যেকোনো নতুন কেনাকাটার মতোই। আপনার অ্যাপটি আপনার PurchasesUpdatedListener এ নতুন ক্রয়ের ফলাফল পায় এবং নতুন কেনাকাটা queryPurchasesAsync এ উপলব্ধ।

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

আপনি যখন নতুন ক্রয়ের টোকেন পাবেন, তখন একটি নতুন ক্রয়ের টোকেন যাচাই করার মতো একই যাচাইকরণ প্রক্রিয়া অনুসরণ করুন৷ Google Play বিলিং লাইব্রেরি থেকে BillingClient.acknowledgePurchase() অথবা Google Play Developer API থেকে Purchases.subscriptions:acknowledge করে এই কেনাকাটাগুলিকে স্বীকার করতে ভুলবেন না।

স্থগিত প্রতিস্থাপন হ্যান্ডেল

বিলম্বিত প্রতিস্থাপন মোড আপনাকে নতুন প্ল্যান শুরু করার আগে একজন ব্যবহারকারীকে তাদের পুরানো প্ল্যানে অবশিষ্ট এনটাইটেলমেন্ট ব্যবহার করতে দেয়।

যখন আপনি একটি নতুন কেনাকাটার জন্য ReplacementMode.DEFERRED ব্যবহার করেন, queryPurchasesAsync() ক্রয় প্রবাহের পরে একটি নতুন ক্রয় টোকেন ফেরত দেয় যা পরবর্তী পুনর্নবীকরণ তারিখে বিলম্বিত প্রতিস্থাপন না হওয়া পর্যন্ত পুরানো পণ্যের সাথে যুক্ত থাকে, যার পরে নতুন পণ্যটি ফেরত দেওয়া হয়।

অতীতে আপনি এই ব্যবহারকারীর অভিজ্ঞতাটি অপ্রচলিত ProrationMode.DEFERRED এর সাথে অর্জন করতে পারতেন, কিন্তু ProrationMode.DEFERRED প্লে বিলিং লাইব্রেরি 6 এর সাথে বাতিল করা হয়েছে। আচরণের পার্থক্য কোথায় তা বোঝার জন্য নিম্নলিখিত টেবিলটি দেখুন:

সময়

ProrationMode.DEFERRED (বঞ্চিত)

প্রতিস্থাপন মোড। বিলম্বিত

ক্রয় প্রবাহ সফল হওয়ার ঠিক পরে (অ্যাপ)

ক্রয় করার পরে আপগ্রেড বা ডাউনগ্রেড সফল হয়েছে কিনা তার একটি স্ট্যাটাস সহ ক্রয় করার পর PurchasesUpdatedListener ডাকা হয়।

পুরানো পরিকল্পনার এনটাইটেলমেন্ট পরবর্তী পুনর্নবীকরণ তারিখ পর্যন্ত অব্যাহত থাকে। অ্যাপটি সঠিক এনটাইটেলমেন্ট দেয় তা নিশ্চিত করতে, queryPurchasesAsync() প্রতিস্থাপন না হওয়া পর্যন্ত আসল ক্রয় টোকেন এবং আসল এনটাইটেলমেন্ট সহ একটি ক্রয় বস্তু ফেরত দেয়।

নতুন ক্রয়ের টোকেনটি দেখা যাচ্ছে না, তাই এটি এই সময়ে প্রক্রিয়া করা যাবে না।

ক্রয় করার পরে আপগ্রেড বা ডাউনগ্রেড সফল হয়েছে কিনা সে সম্পর্কে একটি স্ট্যাটাস সহ ক্রয়ের পর PurchasesUpdatedListener ডাকা হয়।

queryPurchasesAsync() অবিলম্বে নতুন ক্রয় টোকেন সহ ক্রয় ফেরত দেয় এবং এর সাথে যুক্ত মূল এনটাইটেলমেন্ট

নতুন ক্রয়ের টোকেনটি সামনে এসেছে, তাই প্রতিস্থাপনের সময় এটিকে বিবেচনায় রেখে এটি প্রক্রিয়া করা উচিত।

ক্রয় প্রবাহ সফল হওয়ার ঠিক পরে (ব্যাকএন্ড)

ক্রয় প্রবাহের পরে SUBSCRIPTION_PURCHASED RTDN পাঠানো হয় না । ব্যাকএন্ড এখনও নতুন ক্রয় সম্পর্কে সচেতন করা হয়নি।

SUBSCRIPTION_PURCHASED পুরানো product_id সহ RTDN নতুন ক্রয় টোকেনের জন্য ক্রয় প্রবাহের পরপরই পাঠানো হয়।

নতুন ক্রয় টোকেন সহ purchases.subscriptionsv2.get পদ্ধতিতে কল করলে দুটি লাইন আইটেম সহ ক্রয়ের সময় নির্দেশ করে একটি 'স্টার্টটাইম' সহ একটি ক্রয় ফেরত দেয়:

  • একটি পুরানো এনটাইটেলমেন্টের প্রতিনিধিত্ব করে এবং ভবিষ্যতে একটি 'এক্সপায়ারিটাইম' আছে। পুরানো এনটাইটেলমেন্ট পুনর্নবীকরণ করা হবে না এবং নতুন এনটাইটেলমেন্টের পণ্য সহ একটি DeferredItemReplacement আছে। এটি মেয়াদ শেষ হওয়ার পরে পুরানো এনটাইটেলমেন্টের একটি মুলতুবি প্রতিস্থাপন নির্দেশ করে।
  • একটি নতুন কেনা এনটাইটেলমেন্টের প্রতিনিধিত্ব করে। এটির 'expiryTime'-এর জন্য কোনো মান সেট করা নেই।

পুরানো ক্রয়ের টোকেনের জন্য SUBSCRIPTION_EXPIRED পাঠানো হয়েছে৷ পুরানো ক্রয় টোকেন সহ purchases.subscriptionsv2.get পদ্ধতিতে কল করার সময়, এটি মেয়াদোত্তীর্ণ হিসাবে প্রদর্শিত হয় (পুরানো পরিকল্পনার জন্য এনটাইটেলমেন্ট অবশিষ্ট সময়ের জন্য নতুন কেনাকাটায় স্থানান্তরিত হয়)।

প্রতিস্থাপনে - ক্রয় প্রবাহের পরে প্রথম পুনর্নবীকরণ (অ্যাপ)

queryPurchasesAsync() নতুন ক্রয়ের টোকেন এবং এনটাইটেলমেন্ট সহ একটি নতুন ক্রয় বস্তু ফেরত দেয়।

নতুন ক্রয়ের টোকেন এখন সামনে এসেছে, তাই এটি প্রক্রিয়া করা উচিত।

queryPurchasesAsync() অবিলম্বে নতুন ক্রয় টোকেন সহ ক্রয় ফেরত দেয়, এবং এর সাথে যুক্ত নতুন এনটাইটেলমেন্ট

ক্রয় প্রবাহ সফল হওয়ার পরে নতুন ক্রয়টি ইতিমধ্যেই প্রক্রিয়া করা উচিত ছিল, তাই সঠিক এনটাইটেলমেন্ট মঞ্জুর করা হয়েছে তা নিশ্চিত করা ছাড়া অ্যাপটির কোনও বিশেষ পদক্ষেপ নেওয়া উচিত নয়।

প্রতিস্থাপনে - ক্রয় প্রবাহের পরে প্রথম পুনর্নবীকরণ (ব্যাকএন্ড)

প্রথম SUBSCRIPTION_RENEWED RTDN পাঠানো হলে নতুন ক্রয় এখন প্রক্রিয়া করা এবং স্বীকার করা যেতে পারে।

আপনার সাবস্ক্রিপশন ব্যাকএন্ডের কোন ব্যবহারকারীকে নতুন এনটাইটেলমেন্টের সাথে আপডেট করতে হবে তা নির্ধারণ করতে সাবস্ক্রিপশন রিসোর্সে linkedPurchaseToken ব্যবহার করা যেতে পারে।

SUBSCRIPTION_PURCHASED RTDN যখন নতুন ক্রয়ের টোকেনের জন্য পাঠানো হয়েছিল এবং 'স্টার্টটাইম' হিসাবে রেকর্ড করা হয়েছিল তখন নতুন ক্রয় প্রক্রিয়া করা হয়েছিল এবং স্বীকার করা হয়েছিল৷

ReplacementMode.DEFERRED এর সাথে, প্রথম পুনর্নবীকরণগুলি অন্য কোনও পুনর্নবীকরণের আদর্শ আচরণ অনুসরণ করে এবং এই ঘটনাটি ঘটলে প্রতিস্থাপনের জন্য আপনাকে বিশেষ যুক্তি পরিচালনা করতে হবে না৷

নতুন ক্রয় টোকেন সহ purchases.subscriptionsv2.get পদ্ধতিতে কল করার সময় দুটি লাইন আইটেম সহ একটি ক্রয় ফেরত দেয়:

  • একটি পুরানো এনটাইটেলমেন্টের প্রতিনিধিত্ব করে, অতীতে একটি `ExpiryTime` সহ এবং DeferredItemReplacement- এর জন্য কোনো সেট মান নেই।
  • একটি নতুন এনটাইটেলমেন্টের প্রতিনিধিত্ব করে, ভবিষ্যতে একটি `ExpiryTime` সহ এবং স্বয়ংক্রিয়_পুনর্নবীকরণ_সক্ষম পতাকা চালু করা হয়েছে।

ReplacementMode.DEFERRED এখন থেকে অবহেলিত ProrationMode.DEFERRED এর পরিবর্তে ব্যবহার করা উচিত, কারণ এটি এনটাইটেলমেন্ট পরিবর্তনের ক্ষেত্রে একই আচরণ উপস্থাপন করে, কিন্তু ক্রয় পরিচালনা করার একটি উপায় অফার করে যা অন্যান্য নতুন কেনাকাটার জন্য আচরণের সাথে আরও সামঞ্জস্যপূর্ণ।

গ্রাহক ব্যবস্থাপনা

রিয়েল-টাইম ডেভেলপার বিজ্ঞপ্তি ব্যবহার করে, আপনি রিয়েল টাইমে সনাক্ত করতে পারেন যখন একজন ব্যবহারকারী বাতিল করার সিদ্ধান্ত নেয়। যখন একজন ব্যবহারকারী বাতিল করেন, কিন্তু তাদের সদস্যতার মেয়াদ শেষ হওয়ার আগেই, আপনি তাদের পুশ বিজ্ঞপ্তি বা অ্যাপ-মধ্যস্থ বার্তা পাঠাতে পারেন যাতে তারা পুনরায় সদস্যতা নিতে বলেন।

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

সাবস্ক্রিপশনের মেয়াদ শেষ হওয়ার আগে সাবস্ক্রিপশনের মেয়াদ শেষ হওয়ার পর
ইন-অ্যাপ প্লে স্টোরে ইন-অ্যাপ প্লে স্টোরে
উইনব্যাক বৈশিষ্ট্য ইন-অ্যাপ সদস্যতা পুনরুদ্ধার করুন ইন-অ্যাপ সদস্যতা পুনরায় সদস্যতা
ব্যবহারকারী চেকআউট প্রবাহ মাধ্যমে যায় হ্যাঁ না হ্যাঁ হ্যাঁ
ব্যবহারকারীর সদস্যতা একই SKU এর সাথে যুক্ত থাকে ব্যবহারকারী একই বা ভিন্ন SKU-এর জন্য সাইন আপ করতে পারেন হ্যাঁ ব্যবহারকারী একই বা ভিন্ন SKU-এর জন্য সাইন আপ করতে পারেন হ্যাঁ
নতুন ক্রয় টোকেন তৈরি করে হ্যাঁ না হ্যাঁ হ্যাঁ
ডিফল্টরূপে সক্রিয় না হ্যাঁ, সমস্ত devs-এর জন্য সমর্থন প্রয়োজন না

বিলিং লাইব্রেরি 2.0+ ছাড়া অ্যাপস: না

বিলিং লাইব্রেরি 2.0+ সহ অ্যাপস: হ্যাঁ। Devs কনসোলে অপ্ট-আউট করতে পারে।

যখন ব্যবহারকারীকে চার্জ করা হয়

একই SKU ব্যবহার করলে: বর্তমান বিলিং সময়কাল শেষ।

যদি ভিন্ন SKU ব্যবহার করা হয়: proration মোডের উপর নির্ভর করে।

বর্তমান বিলিং সময়ের শেষ অবিলম্বে অবিলম্বে
বাস্তবায়ন প্রয়োজন আপনার অ্যাপে একটি পুনরায় সাইন আপ UI প্রদান করুন

সদস্যতা অবস্থার পরিবর্তন সনাক্ত করুন

প্লে স্টোরে ডিপ লিঙ্ক

আপনার অ্যাপে একটি পুনরায় সাইন আপ UI প্রদান করুন অ্যাপ-এর বাইরে কেনাকাটা পরিচালনা করুন

সাবস্ক্রিপশনের মেয়াদ শেষ হওয়ার আগে - ইন-অ্যাপ

যে সাবস্ক্রিপশনগুলি বাতিল করা হয়েছে কিন্তু এখনও মেয়াদ শেষ হয়নি, আপনি নতুন গ্রাহকদের মতো একই অ্যাপ-মধ্যস্থ পণ্য ক্রয়ের প্রবাহ প্রয়োগ করে আপনার অ্যাপের মধ্যে সদস্যদের তাদের সদস্যতা পুনরুদ্ধার করার অনুমতি দিতে পারেন। নিশ্চিত করুন যে আপনার UI প্রতিফলিত করে যে ব্যবহারকারীর একটি বিদ্যমান সদস্যতা রয়েছে৷ উদাহরণস্বরূপ, আপনি একটি পুনঃঅ্যাক্টিভেট বোতামের মাধ্যমে ব্যবহারকারীর বর্তমান মেয়াদ শেষ হওয়ার তারিখ এবং পুনরাবৃত্ত মূল্য প্রদর্শন করতে চাইতে পারেন।

বেশিরভাগ সময়, আপনি ব্যবহারকারীকে একই মূল্য এবং SKU অফার করতে চান যে তারা ইতিমধ্যে সদস্যতা নিয়েছে, নিম্নরূপ:

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

আপনি যদি একটি ভিন্ন মূল্য অফার করতে চান—উদাহরণস্বরূপ একটি নতুন বিনামূল্যের ট্রায়াল বা একটি উইনব্যাক ছাড়—আপনি পরিবর্তে ব্যবহারকারীকে একটি ভিন্ন SKU অফার করতে পারেন:

  • WITHOUT_PRORATION প্রতিস্থাপন মোড ব্যবহার করে বিভিন্ন SKU এর সাথে একটি আপগ্রেড বা ডাউনগ্রেড শুরু করুন।
  • নতুন সাবস্ক্রিপশন পুরানোটিকে প্রতিস্থাপন করে এবং একই মেয়াদ শেষ হওয়ার তারিখে পুনর্নবীকরণ করে। ব্যবহারকারীর কাছ থেকে মূল মেয়াদ শেষ হওয়ার তারিখে নতুন SKU-এর মূল্য, যেকোন প্রাথমিক মূল্য সহ চার্জ করা হয়। যদি পুরানো সাবস্ক্রিপশন একটি অস্পষ্ট অ্যাকাউন্ট আইডি ব্যবহার করে তৈরি করা হয়, তাহলে সেই একই আইডি আপগ্রেড এবং ডাউনগ্রেডের জন্য BillingFlowParams এ পাস করা উচিত।
  • উদাহরণ স্বরূপ, অ্যাকিলিসের উদাহরণ মিউজিক অ্যাপের সাবস্ক্রিপশন রয়েছে এবং সাবস্ক্রিপশনের মেয়াদ 1 আগস্ট শেষ হবে। 10 জুলাই, তিনি একটি প্রাথমিক মূল্য সহ একটি বার্ষিক সাবস্ক্রিপশনে পুনরায় সদস্যতা নেন। নতুন সাবস্ক্রিপশন অবিলম্বে সক্রিয় হয়, এবং ব্যবহারকারীকে 1 আগস্ট থেকে প্রাথমিক মূল্য চার্জ করা হয়।
  • আপনি যদি আপনার winback SKU-তে একটি বিনামূল্যের ট্রায়াল বা ইন্ট্রো মূল্য অন্তর্ভুক্ত করার সিদ্ধান্ত নেন, তাহলে নিশ্চিত করুন যে ব্যবহারকারী Google Play Console-এ অ্যাপ প্রতি একটি বিনামূল্যের ট্রায়ালের অনুমতি দিন টিক চিহ্ন মুক্ত করে, যা ব্যবহারকারীকে প্রতি অ্যাপে একটি বিনামূল্যের ট্রায়াল পেতে সীমাবদ্ধ করে।

আপনি যখন ক্রয়ের টোকেন পাবেন, তখন ক্রয়টি প্রক্রিয়া করুন ঠিক যেমন আপনি একটি নতুন সদস্যতার সাথে করবেন। উপরন্তু, Google Play Developer API সাবস্ক্রিপশন রিসোর্সে একটি linkedPurchaseToken ফেরত দেয়। আপনার পরিষেবাগুলিতে অ্যাক্সেস পাওয়ার জন্য পুরানো টোকেন ব্যবহার করা হচ্ছে না তা নিশ্চিত করতে linkedPurchaseToken এ প্রদত্ত টোকেনটিকে বাতিল করতে ভুলবেন না।

সাবস্ক্রিপশনের মেয়াদ শেষ হওয়ার আগে - প্লে স্টোরে

সাবস্ক্রিপশন বাতিল হয়ে গেলেও সক্রিয় থাকলেও, ব্যবহারকারীরা Google Play সাবস্ক্রিপশন সেন্টারে পুনঃসাবস্ক্রাইব (আগে পুনরুদ্ধার করুন ) ক্লিক করে সদস্যতা পুনরুদ্ধার করতে পারেন। এটি একই সাবস্ক্রিপশন এবং ক্রয় টোকেন রাখে।

গুগল প্লে স্টোর অ্যাপে সাবস্ক্রিপশন সেকশনে রিসাবস্ক্রাইব বোতাম সহ বাতিল হওয়া সাবস্ক্রিপশন দেখানো হয়েছে
চিত্র 8. অ্যাকাউন্ট> গুগল প্লে স্টোর অ্যাপে সাবস্ক্রিপশন বিভাগগুলি একটি পুনরায় জমা দেওয়া বোতাম সহ বাতিল সাবস্ক্রিপশন দেখায়।

সাবস্ক্রিপশন পুনরুদ্ধার সম্পর্কিত আরও তথ্যের জন্য, পুনরুদ্ধার দেখুন।

সাবস্ক্রিপশন মেয়াদ শেষ হওয়ার পরে - অ্যাপ্লিকেশন

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

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

আপনি যখন ক্রয় টোকেনটি পান, আপনি যেমন একটি নতুন সাবস্ক্রিপশন দিয়ে ক্রয়টি প্রক্রিয়া করুন । আপনি সাবস্ক্রিপশন রিসোর্সে কোনও linkedPurchaseToken পাবেন না।

সাবস্ক্রিপশন মেয়াদ শেষ হওয়ার পরে - প্লে স্টোরে

যদি সক্ষম করা থাকে তবে ব্যবহারকারীরা গুগল প্লে সাবস্ক্রিপশন সেন্টারে রিসবস্ক্রাইব ক্লিক করে মেয়াদোত্তীর্ণ হওয়ার পরে এক বছর পর্যন্ত একই এসকিউতে পুনরায় জমা দিতে পারেন। এটি একটি নতুন সাবস্ক্রিপশন এবং ক্রয় টোকেন উত্পন্ন করে।

গুগল প্লে স্টোর অ্যাপে সাবস্ক্রিপশন বিভাগগুলি পুনরায় জমা দেওয়া এবং বোতামগুলি অপসারণ সহ একটি বাতিল এবং মেয়াদোত্তীর্ণ সাবস্ক্রিপশন দেখায়
চিত্র 9. অ্যাকাউন্ট> গুগল প্লে স্টোর অ্যাপে সাবস্ক্রিপশন বিভাগগুলি পুনরায় জমা দেওয়া এবং বোতামগুলি অপসারণ সহ একটি বাতিল এবং মেয়াদোত্তীর্ণ সাবস্ক্রিপশন দেখায়।

পুনরায় সাবস্ক্রাইবকে একটি অ্যাপ-অফ-অ্যাপ্লিকেশন ক্রয় হিসাবে বিবেচনা করা হয়, তাই আপনার অ্যাপের বাইরে থেকে তৈরি ক্রয় পরিচালনার জন্য সেরা অনুশীলনগুলি অনুসরণ করতে ভুলবেন না।

আপনার সদস্যতা প্রচার করুন

আপনি নির্বাচিত ব্যবহারকারীদের একটি বিদ্যমান সাবস্ক্রিপশনে একটি বর্ধিত ফ্রি ট্রায়াল দিতে প্রচার কোড তৈরি করতে পারেন। আরও জানতে, প্রোমো কোডগুলি দেখুন।

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

পরীক্ষার সময় শেষ হওয়ার পরে, ব্যবহারকারীর অর্থ প্রদানের পদ্ধতিটি সম্পূর্ণ সাবস্ক্রিপশন পরিমাণের জন্য চার্জ করা হয়।

যদি কোনও ব্যবহারকারী নিখরচায় পরীক্ষার সময় যে কোনও সময় সাবস্ক্রিপশন বাতিল করে দেয়, তবে সাবস্ক্রিপশনটি ট্রায়াল শেষ না হওয়া পর্যন্ত সক্রিয় থাকে এবং বিনামূল্যে পরীক্ষার সময়কাল শেষ হলে তাদের চার্জ করা হয় না।

বাতিল, ফেরত বা প্রত্যাহার

আপনি সাবস্ক্রিপশন বাতিল , ফেরত বা প্রত্যাহার করতে গুগল প্লে বিকাশকারী এপিআই ব্যবহার করতে পারেন। এই কার্যকারিতাটি গুগল প্লে কনসোলেও উপলব্ধ।

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

নিম্নলিখিত টেবিলটি বাতিল, ফেরত এবং প্রত্যাহারের মধ্যে পার্থক্য চিত্রিত করে।

পুনর্নবীকরণ বন্ধ করে দেয় টাকা ফেরত অ্যাক্সেস প্রত্যাহার
বাতিল করুন হ্যাঁ না না
ফেরত না হ্যাঁ না
প্রত্যাহার করুন হ্যাঁ হ্যাঁ হ্যাঁ

একটি গ্রাহকের জন্য বিলিং বিলিং

আপনি Purchases.subscriptions:defer ব্যবহার করে একটি অটো-পুনর্নবীকরণ গ্রাহকের জন্য পরবর্তী বিলিংয়ের তারিখটি অগ্রসর করতে পারেন S বিলম্বিত সময়কালে, ব্যবহারকারী সম্পূর্ণ অ্যাক্সেস সহ আপনার সামগ্রীতে সদস্যতা নিয়েছে কিন্তু চার্জ করা হয় না। নতুন তারিখ প্রতিফলিত করতে সাবস্ক্রিপশন পুনর্নবীকরণের তারিখ আপডেট করা হয়েছে।

প্রিপেইড প্ল্যানের জন্য, মেয়াদ শেষ হওয়ার সময় পিছিয়ে দিতে আপনি ডিফার বিলিং API ব্যবহার করতে পারেন।

মুলতুবি বিলিং আপনাকে নিম্নলিখিতগুলি করতে দেয়:

  • ব্যবহারকারীদের একটি বিশেষ অফার হিসাবে বিনামূল্যে অ্যাক্সেস দিন, যেমন সিনেমা কেনার জন্য এক সপ্তাহ বিনামূল্যে দেওয়া।
  • শুভেচ্ছার অঙ্গভঙ্গি হিসাবে গ্রাহকদের বিনামূল্যে অ্যাক্সেস দিন।

বিলিংকে একদিনের মতো সামান্য এবং এপিআই কল প্রতি এক বছর ধরে পিছিয়ে দেওয়া যেতে পারে। আরও বিলিংকে আরও স্থগিত করার জন্য, নতুন বিলিংয়ের তারিখ আসার আগে আপনি আবার এপিআইকে কল করতে পারেন।

উদাহরণস্বরূপ, ফিশিং ত্রৈমাসিক অ্যাপ্লিকেশনটির জন্য অনলাইন সামগ্রীতে ডারসির একটি মাসিক সাবস্ক্রিপশন রয়েছে। তিনি সাধারণত প্রতি মাসের প্রথমটিতে £ 1.25 বিল দেওয়া হয়। মার্চ মাসে, তিনি অ্যাপ প্রকাশকের জন্য একটি অনলাইন সমীক্ষায় অংশ নিয়েছিলেন। প্রকাশক তাকে ১৫ ই মে অবধি পরবর্তী অর্থ প্রদানের জন্য ছয় সপ্তাহের সাথে পুরস্কৃত করে, যা তার পূর্বে নির্ধারিত বিলিংয়ের তারিখের ছয় সপ্তাহ পরে এপ্রিলের ১. এপ্রিল বা মে মাসের শুরুতে ডারসি চার্জ করা হয় না এবং এখনও সামগ্রীতে অ্যাক্সেস রয়েছে। 15 ই মে, তাকে মাসের জন্য সাধারণ £ 1.25 সাবস্ক্রিপশন ফি নেওয়া হয়। তার পরবর্তী পুনর্নবীকরণের তারিখ এখন 15 জুন।

স্থগিত করার সময়, আপনি তাদের বিলিংয়ের তারিখ পরিবর্তিত হয়েছে তা অবহিত করতে ইমেল বা অ্যাপের মধ্যে ব্যবহারকারীকে অবহিত করতে চাইতে পারেন।

হ্যান্ডলিং পেমেন্ট হ্রাস

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

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

যে কোনও গ্রেস পিরিয়ড শেষ হওয়ার পরে, সাবস্ক্রিপশনটি অ্যাকাউন্ট হোল্ড পিরিয়ডে প্রবেশ করে। অ্যাকাউন্ট হোল্ডের সময়, আপনার নিশ্চিত হওয়া উচিত যে ব্যবহারকারীর সাবস্ক্রিপশন এনটাইটেলমেন্টগুলিতে অ্যাক্সেস নেই।

আপনি গুগল প্লে কনসোলে প্রতিটি অটো-পুনর্নবীকরণ বেস প্ল্যানের গ্রেস পিরিয়ড এবং অ্যাকাউন্ট হোল্ডের দৈর্ঘ্য নির্দিষ্ট করতে পারেন। ডিফল্ট মানগুলির চেয়ে কম দৈর্ঘ্য নির্দিষ্ট করা অর্থ প্রদানের হ্রাস থেকে উদ্ধার সাবস্ক্রিপশনের সংখ্যা হ্রাস করতে পারে।

অর্থ প্রদানের হ্রাসের সময় সাবস্ক্রিপশন পুনরুদ্ধারের সম্ভাবনা সর্বাধিক করতে, আপনি আপনার ব্যবহারকারীকে কোনও অর্থ প্রদানের সমস্যা সম্পর্কে অবহিত করতে পারেন এবং তাদের এটি ঠিক করতে বলতে পারেন।

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

ইন-অ্যাপ মেসেজিং

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

স্নাকবার ব্যবহারকারীকে তাদের অর্থ প্রদানের জন্য অবহিত করে
চিত্র 20. স্নাকবার ব্যবহারকারীকে তাদের অর্থ প্রদানের জন্য অবহিত করে।

আমরা সুপারিশ করি যে আপনি যখনই বার্তাটি দেখানো উচিত কিনা তা নির্ধারণের জন্য যখনই ব্যবহারকারী অ্যাপটি খুলবে তখন আপনি এই এপিআইকে কল করুন।

যদি ব্যবহারকারী সফলভাবে তাদের সাবস্ক্রিপশনটি পুনরুদ্ধার করে তবে আপনি ক্রয় টোকেনের সাথে SUBSCRIPTION_STATUS_UPDATED একটি প্রতিক্রিয়া কোড পাবেন। তারপরে গুগল প্লে বিকাশকারী এপিআইকে কল করতে এবং আপনার অ্যাপ্লিকেশনটিতে সাবস্ক্রিপশন স্থিতি রিফ্রেশ করতে আপনার এই ক্রয় টোকেনটি ব্যবহার করা উচিত।

অ্যাপ্লিকেশন মেসেজিং ইন্টিগ্রেট

ব্যবহারকারীর কাছে অ্যাপ্লিকেশন মেসেজিং দেখানোর জন্য, BillingClient.showInAppMessages() ব্যবহার করুন।

অ্যাপ্লিকেশন মেসেজিং প্রবাহকে ট্রিগার করার একটি উদাহরণ এখানে:

কোটলিন

val inAppMessageParams = InAppMessageParams.newBuilder()
        .addInAppMessageCategoryToShow(InAppMessageCategoryId.TRANSACTIONAL)
        .build()

billingClient.showInAppMessages(activity,
        inAppMessageParams,
        object : InAppMessageResponseListener() {
            override fun onInAppMessageResponse(inAppMessageResult: InAppMessageResult) {
                if (inAppMessageResult.responseCode == InAppMessageResponseCode.NO_ACTION_NEEDED) {
                    // The flow has finished and there is no action needed from developers.
                } else if (inAppMessageResult.responseCode
                        == InAppMessageResponseCode.SUBSCRIPTION_STATUS_UPDATED) {
                    // The subscription status changed. For example, a subscription
                    // has been recovered from a suspend state. Developers should
                    // expect the purchase token to be returned with this response
                    // code and use the purchase token with the Google Play
                    // Developer API.
                }
            }
        })

জাভা

InAppMessageParams inAppMessageParams = InAppMessageParams.newBuilder()
        .addInAppMessageCategoryToShow(InAppMessageCategoryId.TRANSACTIONAL)
        .build();

billingClient.showInAppMessages(activity,
        inAppMessageParams,
        new InAppMessageResponseListener() {
            @Override
            public void onInAppMessageResponse(InAppMessageResult inAppMessageResult) {
                if (inAppMessageResult.responseCode
                        == InAppMessageResponseCode.NO_ACTION_NEEDED) {
                    // The flow has finished and there is no action needed from developers.
                } else if (inAppMessageResult.responseCode
                        == InAppMessageResponseCode.SUBSCRIPTION_STATUS_UPDATED) {
                    // The subscription status changed. For example, a subscription
                    // has been recovered from a suspend state. Developers should
                    // expect the purchase token to be returned with this response
                    // code and use the purchase token with the Google Play
                    // Developer API.
                }
            }
        });

মুলতুবি লেনদেন সাবস্ক্রিপশন পরিচালনা করুন

মুলতুবি লেনদেনগুলি প্রাথমিক ক্রয়, টপ-আপ, আপগ্রেড বা ডাউনগ্রেডে ঘটতে পারে। সাবস্ক্রিপশন ক্রয় SUBSCRIPTION_STATE_PENDING স্টেট দিয়ে শুরু হয় SUBSCRIPTION_STATE_ACTIVE স্থানান্তরিত হওয়ার আগে। যদি লেনদেনটির মেয়াদ শেষ হয়ে যায় বা ব্যবহারকারীর দ্বারা বাতিল করা হয় তবে এটি SUBSCRIPTION_STATE_PENDING_PURCHASE_EXPIRED যায়। লেনদেনটি শেষ হওয়ার পরে আপনাকে অবশ্যই ব্যবহারকারীর এনটাইটেলমেন্ট আপডেট করতে হবে।

মুলতুবি লেনদেনের সাথে প্রাথমিক ক্রয়ের জন্য সাবস্ক্রিপশন রাষ্ট্রীয় পরিবর্তন সোজা। ব্যবহারকারী যখন মুলতুবি লেনদেন শুরু করে তখন আপনার অ্যাপ্লিকেশনটি PENDING অবস্থার সাথে একটি Purchase গ্রহণ করে। লেনদেনটি শেষ হয়ে গেলে, আপনার অ্যাপ্লিকেশনটি PURCHASED জন্য আপডেট হওয়া রাষ্ট্রের সাথে আবার Purchase গ্রহণ করে। টাইপ SUBSCRIPTION_PURCHASED সহ একটি SubscriptionNotification বার্তা আপনার আরটিডিএন ক্লায়েন্টকে প্রেরণ করা হয়েছে। ক্রয়টি যাচাই করতে, ব্যবহারকারীকে সামগ্রীতে অ্যাক্সেস দিন এবং ক্রয়ের স্বীকৃতি দেওয়ার জন্য সাধারণ প্রক্রিয়াটি অনুসরণ করুন। যদি লেনদেনের মেয়াদ শেষ হয়ে যায় বা বাতিল করা হয় তবে SubscriptionNotification বার্তাটি টাইপ SUBSCRIPTION_PENDING_PURCHASE_CANCELED সহ আপনার আরটিডিএন ক্লায়েন্টকে প্রেরণ করা হয়েছে। এই জাতীয় ক্ষেত্রে, ব্যবহারকারীর সামগ্রীতে অ্যাক্সেস পাওয়া উচিত ছিল না।

মুলতুবি লেনদেনের সাথে টপ-আপ, আপগ্রেড বা ডাউনগ্রেড পুরানো এবং নতুন উভয় সাবস্ক্রিপশন জন্য রাষ্ট্রীয় পরিবর্তন জড়িত। যখন ব্যবহারকারী কোনও মুলতুবি টপ-আপ, আপগ্রেড বা ডাউনগ্রেড লেনদেন শুরু করে, তখন আপনার অ্যাপ্লিকেশনটি একটি PendingPurchaseUpdate অবজেক্টের সাথে পুরানো সাবস্ক্রিপশনের জন্য একটি Purchase গ্রহণ করে। এই মুহুর্তে, ব্যবহারকারী এখনও পুরানো সাবস্ক্রিপশনটির মালিক এবং এখনও নতুন সাবস্ক্রিপশন অর্জন করতে পারেনি। PendingPurchaseUpdate অবজেক্টে getProducts() এবং getPurchaseToken() কল করা পণ্য আইডিগুলি ফেরত দেয় এবং নতুন সাবস্ক্রিপশনটির টোকেন ক্রয় করে। যখন লেনদেনটি সম্পন্ন হয়, আপনার অ্যাপ্লিকেশনটি নতুন সাবস্ক্রিপশনটির জন্য শীর্ষ-স্তরের ক্রয় টোকেন সেট এবং স্টেট PURCHASED জন্য সেট সহ একটি Purchase গ্রহণ করে। টাইপ SUBSCRIPTION_PURCHASED সহ একটি SubscriptionNotification বার্তা আপনার আরটিডিএন ক্লায়েন্টকে প্রেরণ করা হয়েছে। কেবলমাত্র এই মুহুর্তে, আপনার পুরানো ক্রয় টোকেনটি নতুন ক্রয় টোকেনের সাথে প্রতিস্থাপন করা উচিত এবং সামগ্রীতে ব্যবহারকারীর অ্যাক্সেস আপডেট করা উচিত। যদি লেনদেনের মেয়াদ শেষ হয়ে যায় বা বাতিল করা হয় তবে SubscriptionNotification বার্তাটি টাইপ SUBSCRIPTION_PENDING_PURCHASE_CANCELED সহ আপনার আরটিডিএন ক্লায়েন্টকে প্রেরণ করা হয়েছে। এই জাতীয় ক্ষেত্রে, ব্যবহারকারীর এখনও পুরানো সাবস্ক্রিপশনের সামগ্রীতে অ্যাক্সেস থাকা উচিত।