সাবস্ক্রিপশন ও এক-বার ক্রয় ম্যানেজ করা

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

সাবস্ক্রিপশন বাতিল করা

ব্যবহারকারী বা ডেভেলপার সাবস্ক্রিপশন বাতিল করার প্রসেস শুরু করতে পারেন।

ব্যবহারকারীর অনুরোধে বাতিল করা

ব্যবহারকারী Play Store ব্যবহার করে যেকোনও সময় Google Play সাবস্ক্রিপশন বাতিল করতে পারবেন। প্রযোজ্য হলে, আপনার অ্যাপ ও ওয়েবসাইটে ব্যবহারকারীদের সাবস্ক্রিপশন বাতিল করার বিকল্পও আপনাকে দিতে হবে।

ব্যবহারকারীদের স্বেচ্ছায় বাতিল করার সুবিধা দেওয়ার সবচেয়ে সহজ উপায় হল আপনার অ্যাপে Play Store-এর ডিপ লিঙ্ক প্রদান করা, যেখানে তারা নিজেদের সাবস্ক্রিপশন দেখতে ও ম্যানেজ করতে পারবেন।

ডেভেলপারদের দ্বারা শুরু করা বাতিলকরণ

ডেভেলপার হিসেবে, আপনাকে ব্যাকএন্ড থেকে বাতিল করার প্রসেস ট্রিগার করতে হতে পারে। purchases.subscriptions.cancel API আপনাকে সাবস্ক্রিপশন কেনাকাটা বাতিল করতে দেয়। যেমন, আপনি এই পদ্ধতি ব্যবহার করে কোনও লিগ্যাসি পরিষেবা বন্ধ করতে পারেন। সাবস্ক্রিপশন বাতিল করলে রিফান্ড ইস্যু করা হয় না এবং ব্যবহারকারী বর্তমান বিলিংয়ের মেয়াদ শেষ না হওয়া পর্যন্ত অ্যাক্সেস ধরে রাখেন।

এই পদ্ধতি আপনাকে cancellationType অনুরোধের বডি প্যারামিটারে নিম্নলিখিত ধরনের বাতিলকরণ নির্দিষ্ট করতে দেয়:

  • USER_REQUESTED_STOP_RENEWALS: সাবস্ক্রিপশন বাতিল করে, যেন ব্যবহারকারী Play Store থেকে বাতিল করেছেন। বর্তমান কমিটমেন্টের মেয়াদ শেষ না হওয়া পর্যন্ত ইনস্টলমেন্ট পেমেন্ট চলতে থাকবে। Play Store থেকে, সাবস্ক্রিপশন শেষ হওয়ার আগে ব্যবহারকারী সেটি রিস্টোর করতে পারেন, অথবা বেস প্ল্যানের জন্য চালু করা থাকলে, সেটি শেষ হওয়ার পরে আবার সাবস্ক্রাইব করতে পারেন।

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

কাজ করবে।

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

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

ব্যবহারকারী যে বাতিলকরণ রিস্টোর করতে পারবেন তা বোঝাতে, purchases.subscriptions.cancel API-তে POST অনুরোধ পাঠান এবং cancellationType অনুরোধ প্যারামিটারকে USER_REQUESTED_STOP_RENEWALS ভ্যালুতে সেট করুন।

উদাহরণ:

  • 1a2b3c4d5e6f7g8h9i0j সাবস্ক্রিপশনের পারচেজ টোকেন
  • অ্যাপ্লিকেশন প্যাকেজের নাম com.your.app
  • সাবস্ক্রিপশন আইডি your-subscription-product

HTTP POST অনুরোধ:

https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptions/your-subscription-product/tokens/1a2b3c4d5e6f7g8h9i0j:cancel

অনুরোধের প্রধান অংশ:

{
  "cancellationType": "USER_REQUESTED_STOP_RENEWALS"
}

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

মেয়াদ শেষ হয়ে যাওয়া সাবস্ক্রিপশন আবার সাবস্ক্রাইব করার অনুমতি দিতে, আপনাকে সাবস্ক্রিপশনের বেস প্ল্যানে আবার সাবস্ক্রাইব করুন বিকল্পটি চালু করতে হবে এবং তারপরে cancellationType প্যারামিটারটি USER_REQUESTED_STOP_RENEWALS ভ্যালুতে সেট করে সাবস্ক্রিপশন বাতিল করতে হবে।

ব্যবহারকারীদের শুধুমাত্র আপনার অ্যাপ্লিকেশনে আবার সাবস্ক্রাইব করার অনুমতি দিন

আপনি যদি cancellationType প্যারামিটার DEVELOPER_REQUESTED_STOP_PAYMENTS-এ সেট করে থাকেন অথবা cancellationType প্যারামিটার সেট না করে থাকেন, তাহলে ব্যবহারকারীরা Play সাবস্ক্রিপশন সেন্টার থেকে তাদের সাবস্ক্রিপশন রিস্টোর করতে পারবেন না। তবে, প্রয়োজন হলে ব্যবহারকারী আপনার অ্যাপের মাধ্যমে আবার সাবস্ক্রিপশনে সাইন-আপ করতে পারবেন।

এই অ্যাকশন নিলে SUBSCRIPTION_CANCELED রিয়েল-টাইম ডেভেলপার বিজ্ঞপ্তি ট্রিগার হয়। এইসব বাতিলকরণ বাতিলকরণ বিভাগে যেভাবে বর্ণনা করা হয়েছে সেইভাবে ম্যানেজ করুন।

বিলিং পিছিয়ে দিন

subscriptionsv2.defer পদ্ধতি ব্যবহার করে আপনি সাবস্ক্রিপশনের এনটাইটেলমেন্টের মেয়াদ বাড়াতে পারবেন। আপনি অ্যাড-অন সহ কোনও সাবস্ক্রিপশন স্থগিত করলে, সাবস্ক্রিপশনের সব আইটেম একই সময়ের জন্য স্থগিত করা হয়। বিলম্বিত সময়কালে, ব্যবহারকারী আপনার কন্টেন্টে সাবস্ক্রাইব করে থাকবেন, তবে অতিরিক্ত সময়ের জন্য তাকে চার্জ করা হবে না। আপনি কোনও সাবস্ক্রিপশনের জন্য বিলিং স্থগিত করলে, সেই অনুযায়ী স্ট্যাটাস সংক্রান্ত তথ্য আপডেট করা হয় এবং আপনি সেটি কেনাকাটার স্ট্যাটাস সংক্রান্ত তথ্যের expiryTime ফিল্ডে দেখতে পাবেন:

  • অ্যাক্টিভ রেকারিং সাবস্ক্রিপশনের জন্য, ডিফার্ড বিলিং পরবর্তী রিনিউ করার তারিখ বাড়িয়ে দেয়।
  • প্রিপেড প্ল্যানের ক্ষেত্রে, বিলিং স্থগিত করা হলে মেয়াদ শেষ হওয়ার সময় বাড়ানো হয়।

আপনি কীভাবে ডেফার্ড বিলিং ব্যবহার করতে পারেন তার কিছু উদাহরণ এখানে দেওয়া হল:

  • বিশেষ অফার হিসেবে ব্যবহারকারীদের ফ্রিতে অ্যাক্সেস দিন, যেমন, মতামত সমীক্ষা পূরণ করার জন্য বর্তমান সাবস্ক্রাইবারদের এক সপ্তাহ ফ্রিতে অ্যাক্সেস দেওয়া।
  • গ্রাহক পরিষেবা সংক্রান্ত অ্যাকশন হিসেবে গ্রাহকদের ফ্রিতে অ্যাক্সেস দিন, যেমন দীর্ঘ সময় ধরে পরিষেবা বন্ধ থাকার কারণে আপনার পরিষেবা ব্যবহার করতে না পারার পরে।

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

এই অ্যাকশন নিলে SUBSCRIPTION_DEFERRED রিয়েল-টাইম ডেভেলপার বিজ্ঞপ্তি ট্রিগার হয়। এইসব ইভেন্ট কীভাবে ম্যানেজ করতে হয় তা জানতে সাবস্ক্রিপশন সম্পর্কে বিভাগে সাবস্ক্রাইবারের জন্য বিলিং ডেফার করা দেখুন।

উদাহরণ:

  1. FitnessGoals স্ট্রিমিং পরিষেবা ফেব্রুয়ারি মাসে নিয়মিত ব্যায়াম করার জন্য উৎসাহ দিতে একটি প্রচার চালাতে চায়।

  2. তারা সিদ্ধান্ত নেন যে, ফেব্রুয়ারি মাসে FitnessGoals-এর সাথে অন্তত ১০ বার ব্যায়াম করেছেন এমন যেকোনও সাবস্ক্রাইবারকে আরও এক মাসের পরিষেবা অফার করবেন।

  3. তারা চ্যালেঞ্জের ফলাফল ট্র্যাক করে এবং ১ মার্চ, তারা subscriptionsv2.defer পদ্ধতি কল করে, যাতে ফেব্রুয়ারি মাসে চ্যালেঞ্জ পূরণ করা ব্যবহারকারীদের প্রতিটি অ্যাক্টিভ সাবস্ক্রিপশন কেনাকাটা অন্তর্ভুক্ত থাকে।

  4. এইসব ব্যবহারকারী কোনও খরচ ছাড়াই অতিরিক্ত এক মাস নিয়মিত ব্যায়ামের ভিডিও দেখার সুবিধা পান এবং ব্যবহারকারীরা তাদের বন্ধুদের বলেন যে FitnessGoals কীভাবে তাদের সুস্থ থাকতে সাহায্য করে!

রিফান্ড ও প্রত্যাহার করা

এমন অনেক পরিস্থিতি আছে যেখানে আপনি সাবস্ক্রিপশন বা এককালীন কেনাকাটার জন্য রিফান্ড ইস্যু করতে বা অ্যাক্সেস প্রত্যাহার করতে চান।

অর্ডার আইডি দিয়ে কোনও অর্ডারের সম্পূর্ণ রিফান্ড করা

orders.refund API-এর মাধ্যমে, আপনি কেনার তিন বছরের মধ্যে যেকোনও অর্ডারের জন্য ফুল রিফান্ড ইস্যু করতে পারবেন। orders.refund পদ্ধতিতে একটি প্রত্যাহার প্যারামিটার পাওয়া যায় যা নির্দেশ করে যে রিফান্ড দেওয়ার পাশাপাশি অ্যাক্সেস প্রত্যাহার করা উচিত কিনা।

সাবস্ক্রিপশন কেনার জন্য রিফান্ড সহ প্রত্যাহারের অনুরোধ করলে, সাবস্ক্রিপশন সাথে সাথেই বন্ধ হয়ে যায় এবং এর ফলে SUBSCRIPTION_REVOKED রিয়েল-টাইম ডেভেলপার বিজ্ঞপ্তি ও VoidedPurchaseNotification (বাতিল করা কেনাকাটা API-তে রেকর্ড করা) দু'টিই ট্রিগার হয়। এইসব ইভেন্ট কীভাবে ম্যানেজ করতে হয় তা জানতে সাবস্ক্রিপশন লাইফসাইকেল ম্যানেজমেন্ট গাইডের প্রত্যাহার বিভাগ পড়ুন।

উদাহরণ:

  1. নতুন বিশ্বকাপ শুরু হওয়ার উদযাপন হিসেবে, Football-Not-Soccer ই-স্পোর্টস অ্যাপ প্রথম ২৪ ঘণ্টায় নতুন টিম কিট কেনা সব ব্যবহারকারীদের জন্য বিনামূল্যে ভার্চুয়াল জার্সি র‍্যাফেল করার সিদ্ধান্ত নিয়েছে।

  2. Football-Not-Soccer orders.refund API ব্যবহার করে, কিন্তু বিজয়ীদের জার্সি কেনার খরচ রিফান্ড করার জন্য প্রত্যাহার করার প্যারামিটার পাস করে না।

পারচেজ টোকেনের মাধ্যমে সাবস্ক্রিপশন প্রত্যাহার ও রিফান্ড করা

কিছু নির্দিষ্ট ব্যবহারের ক্ষেত্রে, আপনাকে হয়ত কোনও ব্যবহারকারীর সাবস্ক্রিপশনের অ্যাক্সেস প্রত্যাহার করতে হবে এবং রিফান্ড দিতে হবে। Play Billing-এ সম্পূর্ণ রিফান্ড ও subscriptionsv2.revoke API-এর মাধ্যমে আনুপাতিক রিফান্ড সহ প্রত্যাহার করার পদ্ধতি অফার করা হয়। এই এন্ডপয়েন্টের সাহায্যে, রিফান্ড কীভাবে গণনা করা হয় তা নির্ধারণ করতে, আপনি revocationContext নির্দিষ্ট করতে পারবেন।

এই অ্যাকশন নিলে SUBSCRIPTION_REVOKED রিয়েল-টাইম ডেভেলপার বিজ্ঞপ্তি এবং VoidedPurchaseNotification, দুটিই ট্রিগার হয় এবং Voided Purchases API-এ রেকর্ড করা হয়। আপনার অ্যাপকে এইসব বাতিলকরণ প্রত্যাহার বিভাগে যেভাবে বর্ণনা করা হয়েছে সেইভাবে ম্যানেজ করতে হবে।

উদাহরণ:

  • 1a2b3c4d5e6f7g8h9i0j পারচেজ টোকেন ব্যবহার করে কেনাকাটা করুন
  • com.your.app প্যাকেজের নাম সহ অ্যাপ্লিকেশন
  • প্রো-রেটা রিফান্ড ইস্যু করার উদ্দেশ্য

HTTP POST অনুরোধ:

https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptionsv2/tokens/1a2b3c4d5e6f7g8h9i0j:revoke

অনুরোধের বডি:

{
  "revocationContext": {
    "proratedRefund": {}
  }
}

সম্পূর্ণ টাকা ফেরত

আপনাকে যদি কোনও সাবস্ক্রিপশন বন্ধ করতে হয় এবং বর্তমান বিলিংয়ের মেয়াদের সম্পূর্ণ টাকা রিফান্ড করতে হয়, তাহলে ফুল রিফান্ড ইস্যু করুন। purchases.subscriptionsv2.revoke ফাংশন ব্যবহার করুন এবং রিফান্ডের ধরন হিসেবে "fullRefund": {} সেট করুন।

উদাহরণ:

  1. মারিয়া SuperMovies স্ট্রিমিং মাসিক প্ল্যানের ৩০-দিনের অটোমেটিক রিনিউ হওয়া সাবস্ক্রিপশন নিয়েছেন। মারিয়া কিছু প্রযুক্তিগত সমস্যার সম্মুখীন হয়েছেন যার ফলে তিনি কন্টেন্ট অ্যাক্সেস করতে পারছেন না। তিনি বিলিং চক্রের ৩য় দিনে গ্রাহক পরিষেবায় যোগাযোগ করে জানান যে তিনি সাবস্ক্রিপশন অ্যাক্সেস করতে পারেননি।

  2. গ্রাহক পরিষেবা তাদের সিস্টেমে মারিয়ার সাবস্ক্রিপশন কেনার বিবরণ খুঁজে পায় এবং সম্পূর্ণ রিফান্ডের অনুরোধ করে purchases.subscriptionsv2.revoke-এ কল করে।

  3. গ্রাহক পরিষেবা মারিয়াকে জানায় যে সাবস্ক্রিপশনের জন্য দেওয়া অর্থের ১০০% রিফান্ড করা হবে এবং তিনি আর এই প্ল্যানে সাবস্ক্রাইব করে নেই।

প্রোরেট রিফান্ড

আপনাকে কোনও সাবস্ক্রিপশন বন্ধ করতে হলে এবং বাকি এনটাইটেলমেন্ট সময়ের জন্য আংশিক রিফান্ড করতে হলে, প্রো-রেটা রিফান্ড ইস্যু করুন। purchases.subscriptionsv2.revoke ফাংশন ব্যবহার করুন এবং রিফান্ডের ধরন হিসেবে "proratedRefund": {} সেট করুন।

অটোমেটিক রিনিউ হওয়া সাবস্ক্রিপশন এবং কমপক্ষে এক সপ্তাহ মেয়াদের প্রিপেড প্ল্যান, উভয়ের ক্ষেত্রেই প্রো-রেটা রিফান্ড প্রযোজ্য।

উদাহরণ:

  1. মানসীর SuperMovies স্ট্রিমিংয়ের ৩০-দিনের অটোমেটিক রিনিউ হওয়া মাসিক প্ল্যান আছে। সে কিছু সময় ধরে আনন্দের সাথে পরিষেবাটি ব্যবহার করেছে। বিলিং চক্রের ১৫তম দিনে মারিয়া গ্রাহক পরিষেবার সাথে যোগাযোগ করে জানায় যে সে বিদেশে চলে যাচ্ছে এবং পরের দিন থেকে আর পরিষেবা ব্যবহার করতে পারবে না।

  2. গ্রাহক পরিষেবা বিভাগ তাদের সিস্টেমে মারিয়ার সাবস্ক্রিপশন কেনার বিবরণ খুঁজে পায় এবং প্রো-রেটা রিফান্ডের অনুরোধ করে purchases.subscriptionsv2.revoke-এ কল ট্রিগার করে।

  3. গ্রাহক পরিষেবা মারিয়াকে জানায় যে তার সাবস্ক্রিপশনের দামের প্রায় ৫০% রিফান্ড করা হবে এবং পরিষেবার অ্যাক্সেস অবিলম্বে বন্ধ করে দেওয়া হবে।