সাবস্ক্রিপশন ক্রয়গুলি তাদের জীবনচক্র জুড়ে বিভিন্ন রাজ্যের মধ্য দিয়ে যেতে পারে, স্বয়ংক্রিয় পুনর্নবীকরণ আচরণ, অর্থপ্রদান হ্রাসের পরিস্থিতি এবং বিকাশকারী পরিচালনার ক্রিয়া সহ অনেকগুলি কারণের উপর নির্ভর করে।
স্বয়ংক্রিয়ভাবে পুনর্নবীকরণ সাবস্ক্রিপশনের জন্য জীবনচক্র পরিচালনা করুন
যখন একজন ব্যবহারকারীর সদস্যতার অবস্থা পরিবর্তিত হয়, তখন আপনার ব্যাকএন্ড সার্ভার একটি SubscriptionNotification
বার্তা পায়
আপনার ব্যাকএন্ডের অবস্থা আপডেট করতে, বিজ্ঞপ্তিতে অন্তর্ভুক্ত ক্রয় টোকেন সহ purchases.subscriptionsv2.get
API-এ কল করুন। এই শেষ পয়েন্টটি একটি ক্রয় টোকেন দেওয়া সর্বশেষ সাবস্ক্রিপশন অবস্থা প্রদান করে এবং সাবস্ক্রিপশন পরিচালনার জন্য সত্যের উৎস হিসেবে বিবেচিত হয়।
ক্রয় টোকেন সাবস্ক্রিপশন সাইনআপ থেকে মেয়াদ শেষ হওয়ার 60 দিন পর্যন্ত বৈধ। এই তারিখের পরে, Google Play Developer API কল করার জন্য ক্রয় টোকেনটি আর বৈধ থাকবে না।
নতুন স্বয়ংক্রিয় পুনর্নবীকরণ সাবস্ক্রিপশন ক্রয়
যখন একজন ব্যবহারকারী একটি সদস্যতা ক্রয় করেন, তখন আপনার RTDN ক্লায়েন্টকে SUBSCRIPTION_PURCHASED
টাইপ সহ একটি SubscriptionNotification
বার্তা পাঠানো হয়। আপনি এই বিজ্ঞপ্তিটি পান বা আপনি PurchasesUpdatedListener
মাধ্যমে অ্যাপ-মধ্যস্থ একটি নতুন কেনাকাটা নিবন্ধন করুন বা আপনার অ্যাপের onResume()
পদ্ধতিতে ম্যানুয়ালি কেনাকাটা আনুন , আপনার নিরাপদ ব্যাকএন্ডে নতুন কেনাকাটা প্রক্রিয়া করা উচিত। এটি করার জন্য, এই পদক্ষেপগুলি অনুসরণ করুন:
- একটি সাবস্ক্রিপশন রিসোর্স পেতে
purchases.subscriptionsv2.get
এন্ডপয়েন্টে প্রশ্ন করুন যাতে সর্বশেষ সাবস্ক্রিপশন স্টেট রয়েছে। - নিশ্চিত করুন যে
subscriptionState
ক্ষেত্রের মানSUBSCRIPTION_STATE_ACTIVE
। - ক্রয় যাচাই করুন ।
- ব্যবহারকারীকে সামগ্রীতে অ্যাক্সেস দিন। ক্রয়ের সাথে যুক্ত ব্যবহারকারীর অ্যাকাউন্টটিকে সদস্যতা সংস্থান থেকে
ExternalAccountIdentifiers
অবজেক্টের সাথে সনাক্ত করা যেতে পারে যদি শনাক্তকারীগুলি ক্রয়ের সময় সেট করা হয়setObfuscatedAccountId
এবংsetObfuscatedProfileId
ব্যবহার করে।
প্লে বিলিং লাইব্রেরিতে সাবস্ক্রিপশন স্বীকার করার একটি পদ্ধতি, acknowledgePurchase()
এবং স্বীকৃতির স্থিতি পরীক্ষা করার একটি পদ্ধতি, isAcknowledged()
অন্তর্ভুক্ত রয়েছে। যাইহোক, আমরা সুপারিশ করি যে আপনি ভাল নিরাপত্তার জন্য আপনার ব্যাকএন্ডে ক্রয় প্রক্রিয়া পরিচালনা করুন।
নতুন কেনাকাটার জন্য সাবস্ক্রিপশন সংস্থান নিম্নলিখিত উদাহরণের মতো দেখায়:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
"startTime": "2022-04-22T18:39:58.270Z",
"regionCode": "US",
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
"latestOrderId": "GPA.3333-4137-0319-36762",
"acknowledgementState": "ACKNOWLEDGEMENT_STATE_PENDING", // need to acknowledge new purchases
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": next_renewal_date,
"autoRenewingPlan": {
"autoRenewEnabled": true
}
}
],
}
সদস্যতা পুনর্নবীকরণ
অ-কিস্তির জন্য, স্বয়ংক্রিয়ভাবে পুনর্নবীকরণ করা সদস্যতাগুলির জন্য, সদস্যতা পুনর্নবীকরণের সময় একটি SUBSCRIPTION_RENEWED
বিজ্ঞপ্তি পাঠানো হয়৷ কিস্তি সাবস্ক্রিপশনের জন্য, একটি SUBSCRIPTION_RENEWED
বিজ্ঞপ্তি পাঠানো হয় প্রতিবার সদস্যতার বিলিংয়ের তারিখে চার্জ করা হয়। নিশ্চিত করুন যে ব্যবহারকারী এখনও সাবস্ক্রিপশনের অধিকারী এবং তারপর Google Play Developer API থেকে প্রত্যাবর্তিত সাবস্ক্রিপশন রিসোর্সে প্রদত্ত নতুন expiryTime
সাথে সদস্যতার অবস্থা আপডেট করুন। সাবস্ক্রিপশন সংস্থান নিম্নলিখিত উদাহরণের অনুরূপ দেখায়:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
"startTime": "2022-04-22T18:39:58.270Z",
"regionCode": "US",
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
"latestOrderId": "GPA.3333-4137-0319-36762",
"acknowledgementState": "ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED",
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": next_renewal_date,
"autoRenewingPlan": {
"autoRenewEnabled": true
}
}
]
}
আপনাকে সাবস্ক্রিপশন পুনর্নবীকরণ স্বীকার করতে হবে না।
গ্রেস পিরিয়ড
সাবস্ক্রিপশন পুনর্নবীকরণের ক্ষেত্রে অর্থপ্রদানের সমস্যা থাকলে, Google ব্যবহারকারীকে অবহিত করে এবং সাবস্ক্রিপশনের মেয়াদ শেষ হওয়ার আগে কিছু সময়ের জন্য সদস্যতা পুনর্নবীকরণ করার চেষ্টা করে। এই পুনরুদ্ধারের সময়কাল একটি গ্রেস পিরিয়ডের পরে একটি অ্যাকাউন্ট হোল্ড পিরিয়ড নিয়ে গঠিত হতে পারে। একটি অতিরিক্ত সময়ের মধ্যে, ব্যবহারকারীর এখনও তাদের সদস্যতা এনটাইটেলমেন্টে অ্যাক্সেস থাকা উচিত।
queryPurchasesAsync()
পদ্ধতি সেই ক্রয় ফেরত দিতে থাকে যা গ্রেস পিরিয়ডের মধ্যে থাকে। যদি আপনার অ্যাপটি শুধুমাত্র queryPurchasesAsync
উপর নির্ভর করে একজন ব্যবহারকারী সাবস্ক্রিপশনের অধিকারী কিনা তা পরীক্ষা করে, তাহলে আপনার অ্যাপটি স্বয়ংক্রিয়ভাবে গ্রেস পিরিয়ড পরিচালনা করবে, কারণ এই সদস্যতাগুলি প্লে বিলিং লাইব্রেরির মাধ্যমে সক্রিয় হিসাবে দেখানো হয়।
আপনার ব্যাকএন্ডের সাথে সাবস্ক্রিপশন স্থিতি সিঙ্ক্রোনাইজ করা আপনাকে অর্থপ্রদানের অস্বীকৃতি সম্পর্কে আরও সচেতন হতে দেয় এবং আপনি যখন অনিচ্ছাকৃত মন্থন কমানোর চেষ্টা করেন তখন আপনাকে আরও প্রসঙ্গ দেয়। SUBSCRIPTION_IN_GRACE_PERIOD
টাইপ সহ SubscriptionNotification
বার্তাগুলির জন্য শুনুন যখন ব্যবহারকারী একটি গ্রেস পিরিয়ড প্রবেশ করবে তখন বিজ্ঞপ্তি পাওয়ার জন্য৷ ব্যবহারকারী যখন গ্রেস পিরিয়ডে থাকে, সাবস্ক্রিপশন রিসোর্সে autoRenewEnabled = true
থাকে। গ্রেস পিরিয়ড শেষ না হওয়া পর্যন্ত Google Play গতিশীলভাবে expiryTime
মান বাড়ায় কারণ এনটাইটেলমেন্টটি ব্যবহারকারী বাতিল না হওয়া পর্যন্ত বা গ্রেস পিরিয়ড তার সর্বোচ্চ দৈর্ঘ্য পর্যন্ত স্থায়ী হওয়া উচিত। এই সময়ের মধ্যে subscriptionState
ফিল্ডের মান হল SUBSCRIPTION_STATE_IN_GRACE_PERIOD
। সাবস্ক্রিপশন সংস্থান নিম্নলিখিত উদাহরণের অনুরূপ দেখায়:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_IN_GRACE_PERIOD",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": timestamp_in_future,
"autoRenewingPlan": {
"autoRenewEnabled": true
}
}
],
}
Play তাদের পেমেন্ট প্রত্যাখ্যান করা হয়েছে বলে গ্রেস পিরিয়ডে থাকা ব্যবহারকারীদের জানায় এবং Play Store-এ তাদের পেমেন্ট পদ্ধতির সমস্যাগুলি সমাধান করার জন্য অনুরোধ করে। যখন একজন ব্যবহারকারী একটি গ্রেস পিরিয়ডে প্রবেশ করেন, আপনি ব্যবহারকারীকে তাদের অর্থপ্রদানের পদ্ধতিটি ঠিক করতে উৎসাহিত করবেন যদি ব্যর্থতা অনিচ্ছাকৃত হয়। এটি করার একটি সহজ উপায় হল ইন-অ্যাপ মেসেজিং API ব্যবহার করা। ব্যবহারকারী আপনার অ্যাপ খোলে আপনি যদি এই API-কে কল করেন, তাহলে তাদের একটি অস্থায়ী স্ন্যাকবারে একটি প্লে বার্তা দেখানো হয় যা ব্যবহারকারীকে জানায় যে তাদের অর্থপ্রদান প্রত্যাখ্যান করা হয়েছে। এই বার্তাটিতে ব্যবহারকারীর জন্য Google Play-এ তাদের অর্থপ্রদানের পদ্ধতি ঠিক করার জন্য একটি গভীর লিঙ্কও রয়েছে৷
ব্যবহারকারী তার অর্থপ্রদানের পদ্ধতি ঠিক করার সাথে সাথে সদস্যতাটি তার মূল পুনর্নবীকরণ তারিখের সাথে পুনর্নবীকরণ হয় এবং আপনি পুনর্নবীকরণে বর্ণিত হিসাবে পুনর্নবীকরণ পরিচালনা করতে পারেন৷
গ্রেস পিরিয়ড চলাকালীন ব্যবহারকারী যদি তাদের অর্থপ্রদানের পদ্ধতি ঠিক না করে, তাহলে সাবস্ক্রিপশন অ্যাকাউন্ট হোল্ডে প্রবেশ করে এবং তারা এনটাইটেলমেন্ট হারাবে।
গ্রেস পিরিয়ড অ্যাক্সেস এবং পুনরুদ্ধার
চিত্র 2 একটি সাবস্ক্রিপশনের জন্য একটি টাইমলাইন দেখায় যা একটি গ্রেস পিরিয়ডে প্রবেশ করে এবং ব্যবহারকারী যখন তাদের অর্থপ্রদানের পদ্ধতি ঠিক করে তখন পুনরুদ্ধার হয়। গ্রেস পিরিয়ড শেষ হওয়ার পরে, ব্যবহারকারীর সাবস্ক্রিপশন সুবিধা হারাবেন এবং অ্যাকাউন্ট হোল্ডে চলে যাবেন।

নিম্নলিখিত পয়েন্টগুলি মনে রাখা গুরুত্বপূর্ণ:
- একটি গ্রেস পিরিয়ডের সময়, ব্যবহারকারীর সদস্যতা সুবিধার অ্যাক্সেস বজায় রাখা উচিত।
- গ্রেস পিরিয়ডের মধ্যে যখন সাবস্ক্রিপশন পুনরুদ্ধার হয়, তখন পুনর্নবীকরণের তারিখ রিসেট হয় না ।
- আপনি যদি গ্রেস পিরিয়ড বাড়ান—উদাহরণস্বরূপ, 7 দিন থেকে 14 দিন—যারা গ্রেস পিরিয়ডের মধ্যে আছেন তারা সাবস্ক্রিপশন সুবিধাগুলিতে বর্ধিত অ্যাক্সেস পাবেন।
- আপনি যদি গ্রেস পিরিয়ড হ্রাস করেন, যে সমস্ত ব্যবহারকারীরা নতুন গ্রেস পিরিয়ড অতিক্রম করার জন্য পুরানো গ্রেস পিরিয়ডের মধ্যে যথেষ্ট, তাদের সদস্যতা সুবিধাগুলি অবিলম্বে প্রত্যাহার করা হবে৷ উদাহরণস্বরূপ, যদি আপনি গ্রেস পিরিয়ড 14 দিন থেকে কমিয়ে 7 দিনে করেন, যে সমস্ত ব্যবহারকারীরা পুরানো গ্রেস পিরিয়ডের 8-14 দিনে থাকে তাদের সদস্যতা সুবিধাগুলি অবিলম্বে প্রত্যাহার করা হবে৷
- সাবস্ক্রিপশন একটি সক্রিয় অবস্থায় থাকে এবং নীরব গ্রেস পিরিয়ড শেষ না হওয়া পর্যন্ত আপনি গ্রেস পিরিয়ড RTDN পাবেন না
নীরব গ্রেস পিরিয়ড
আপনি 0 দিনের গ্রেস পিরিয়ড সেট করতে পারেন, তবে পেমেন্টের পুনরায় চেষ্টা করার জন্য পর্যাপ্ত সময় নিশ্চিত করতে Play সর্বনিম্ন 1 দিন অপেক্ষা করবে। এই নীরব গ্রেস পিরিয়ড পেমেন্ট প্রক্রিয়াকরণের জন্য একটি নিরাপত্তা জাল অফার করে। এই 24-ঘন্টা সময়ের মধ্যে সদস্যতা ACTIVE
অবস্থায় থাকে৷
সাবস্ক্রিপশন স্টেট পরিবর্তনের সাথে সিঙ্কে থাকার জন্য আপনার জন্য সবচেয়ে ভালো উপায় হল রিয়েল-টাইম ডেভেলপার নোটিফিকেশন (RTDN) শোনা এবং প্রতিক্রিয়া জানানো। সাবস্ক্রিপশনের আরও সঠিক স্ট্যাটাস পেতে মেয়াদ শেষ হওয়ার পরিবর্তে RTDN সময়ে purchases.subscriptionsv2.get()
পদ্ধতিতে কল করুন।
24-ঘন্টা নীরব গ্রেস পিরিয়ডের পরে সদস্যতা স্থিতির উপর নির্ভর করে, আপনি নিম্নলিখিত বিজ্ঞপ্তিগুলির মধ্যে একটি পাবেন:
-
SUBSCRIPTION_ON_HOLD
(যদি সক্ষম করা থাকে) -
SUBSCRIPTION_CANCELED
(যদি বাতিল করা হয়) -
SUBSCRIPTION_EXPIRED
(যদি মেয়াদ শেষ হয়) -
SUBSCRIPTION_RENEWED
(যদি সফলভাবে নবায়ন করা হয়)
আপনি সাবস্ক্রিপশনের সর্বশেষ স্থিতি পেতে 24-ঘন্টা নীরব গ্রেস পিরিয়ডের পরে যে কোনও সময়ে subscriptionV2.get()
পদ্ধতিতে কল করতে পারেন।
অ্যাকাউন্ট হোল্ড
সাবস্ক্রিপশন পুনর্নবীকরণের ক্ষেত্রে অর্থপ্রদানের সমস্যা থাকলে, যেকোন গ্রেস পিরিয়ড শেষ হওয়ার পরে, একটি অ্যাকাউন্ট হোল্ড পিরিয়ড শুরু হয়। যখন একটি সাবস্ক্রিপশন অ্যাকাউন্ট হোল্ডে প্রবেশ করে, তখন আপনার সাবস্ক্রিপশন এনটাইটেলমেন্টে অ্যাক্সেস ব্লক করা উচিত।
অ্যাকাউন্ট হোল্ড চলাকালীন, আপনার সাবস্ক্রিপশনের যেকোনো বাতিলকরণ , পুনরুদ্ধার বা পুনঃক্রয়কে প্রয়োজন অনুযায়ী পরিচালনা করা উচিত, কারণ সাবস্ক্রিপশন হোল্ডে থাকা অবস্থায় ব্যবহারকারীর পক্ষে এই পরিবর্তনগুলি করা সম্ভব।
ব্যবহারকারী যখন অ্যাকাউন্ট হোল্ড পিরিয়ডে প্রবেশ করে তখন আরটিডিএনগুলি আপনাকে অবহিত করে, যাতে আপনি তাদের সাবস্ক্রিপশনে কেন তাদের অ্যাক্সেস স্থগিত করা হয়েছিল তা যত তাড়াতাড়ি সম্ভব জানাতে পারেন। এটি করার একটি সহজ উপায় হল ইন-অ্যাপ মেসেজিং API ব্যবহার করা। আপনার ব্যবহারকারী অ্যাপটি খুললে এই API-কে কল করলে ব্যবহারকারীকে একটি অস্থায়ী স্ন্যাকবারে একটি বার্তা দেখাবে যা তাদের জানিয়ে দেবে যে তাদের অর্থপ্রদান প্রত্যাখ্যান করা হয়েছে। এই বার্তাটিতে ব্যবহারকারীর জন্য Google Play-এ তাদের অর্থপ্রদানের পদ্ধতি ঠিক করার জন্য একটি গভীর লিঙ্কও রয়েছে৷
যদি আপনার ব্যবহারকারীরা আপনার অ্যাপের বাইরে সাবস্ক্রিপশন বিষয়বস্তু অ্যাক্সেস করতে পারে, তাহলে তারা আবিষ্কার করতে পারে যে তারা বিভিন্ন সারফেসে অ্যাক্সেস হারিয়েছে। আপনি ব্যবহারকারীর কাছে একটি পুশ বিজ্ঞপ্তি বা একটি ইমেল পাঠাতে চাইতে পারেন যাতে তাদের জানানো হয় যে অর্থপ্রদান হ্রাসের কারণে তাদের সদস্যতা আর সক্রিয় নেই৷
অ্যাকাউন্ট হোল্ডের সময় queryPurchasesAsync()
পদ্ধতি দ্বারা সদস্যতা ফেরত দেওয়া হয় না, তাই যদি আপনার অ্যাপ বিদ্যমান কেনাকাটাগুলি প্রদর্শন করতে এই পদ্ধতির উপর নির্ভর করে, তাহলে আপনার ডিফল্টরূপে অ্যাকাউন্ট হোল্ড সমর্থন করা উচিত।
রিয়েল-টাইম ডেভেলপার বিজ্ঞপ্তিগুলির সাথে, যখন একটি সদস্যতা অ্যাকাউন্ট হোল্ডে প্রবেশ করে তখন আপনি SUBSCRIPTION_ON_HOLD
টাইপ সহ একটি SubscriptionNotification
বার্তা পাবেন৷ নতুন সাবস্ক্রিপশন তথ্য পুনরুদ্ধার করতে আপনার নিরাপদ ব্যাকএন্ড সার্ভার থেকে purchases.subscriptionsv2.get
পদ্ধতিতে কল করুন। অ্যাকাউন্ট হোল্ডের সময় সাবস্ক্রিপশন রিসোর্সের expiryTime
ক্ষেত্রটি একটি অতীত টাইমস্ট্যাম্পে সেট করা হয় এবং subscriptionState
ক্ষেত্রটি SUBSCRIPTION_STATE_ON_HOLD
এ সেট করা হয় :
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ON_HOLD",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": timestamp_in_past,
...
}
],
}
অ্যাক্সেস পুনরুদ্ধার করতে, ব্যবহারকারীদের অবশ্যই তাদের অর্থপ্রদানের পদ্ধতি ঠিক করতে হবে। Play অ্যাকাউন্ট হোল্ডে থাকা ব্যবহারকারীদের তাদের পেমেন্ট প্রত্যাখ্যানের বিষয়ে জানিয়ে দেয় এবং তাদের পেমেন্ট পদ্ধতি ঠিক করতে আপনারও উৎসাহিত করা উচিত।
ব্যবহারকারী তাদের অর্থপ্রদানের পদ্ধতি ঠিক করার পরে, সাবস্ক্রিপশন একটি সক্রিয় অবস্থায় ফিরে আসে এবং তারপরে আপনাকে অবশ্যই সাবস্ক্রাইব করা সামগ্রীতে অ্যাক্সেস পুনরুদ্ধার করতে হবে। এই ক্ষেত্রে, ক্রয় টোকেনটি অ্যাকাউন্ট হোল্ড শুরু হওয়ার আগে যেমন ছিল একই রকম কারণ একই ক্রয় পুনরুদ্ধার হচ্ছে, এবং আপনি SUBSCRIPTION_RECOVERED
টাইপ সহ একটি RTDN পাবেন।
কিস্তি সাবস্ক্রিপশনের জন্য, পেমেন্ট প্রত্যাখ্যান এবং পুনরুদ্ধার যে কোনো ব্যক্তিগত অর্থপ্রদানের প্রচেষ্টার জন্য ঘটতে পারে।
পুনরুদ্ধারের পরে, প্লে বিলিং লাইব্রেরি queryPurchasesAsync()
পদ্ধতির মাধ্যমে আবার সদস্যতা ফেরত দেয়। যদি আপনি এই পদ্ধতিটি ব্যবহার করেন একজন ব্যবহারকারী সাবস্ক্রিপশনের অধিকারী কিনা তা নির্ধারণ করতে, তাহলে আপনার অ্যাপটি স্বয়ংক্রিয়ভাবে অ্যাকাউন্ট হোল্ড থেকে সাবস্ক্রিপশন পুনরুদ্ধারকে পরিচালনা করবে।
সাবস্ক্রিপশন পুনরুদ্ধার করা হলে বিজ্ঞপ্তি পাওয়ার জন্য SUBSCRIPTION_RECOVERED
টাইপ সহ একটি SubscriptionNotification
বার্তা শুনুন এবং ব্যবহারকারীর অ্যাক্সেস পুনরুদ্ধার করা উচিত। এই বিজ্ঞপ্তি পাওয়ার পর আপনি যদি সাবস্ক্রিপশনের জন্য ক্যোয়ারী করেন, তাহলে expiryTime
ক্ষেত্রটি ভবিষ্যতে একটি টাইমস্ট্যাম্পে সেট করা হবে এবং subscriptionState
ক্ষেত্রটি আবার SUBSCRIPTION_STATE_ACTIVE
এ সেট করা হয়েছে:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": next_renewal_date,
...
}
],
}
যদি ব্যবহারকারী অ্যাকাউন্ট হোল্ডের মেয়াদ শেষ হওয়ার আগে তাদের অর্থপ্রদানের পদ্ধতি ঠিক না করে, তাহলে আপনি পরিবর্তে SUBSCRIPTION_CANCELED
টাইপ সহ একটি RTDN পাবেন। একটি বাতিলকরণ পরিচালনার নির্দেশাবলীর জন্য, বাতিলকরণ দেখুন। আপনি যখন এইভাবে বাতিল করা সাবস্ক্রিপশনের জন্য অনুসন্ধান করেন, তখন প্রত্যাবর্তিত expiryTime
ক্ষেত্রটি একটি অতীত টাইমস্ট্যাম্পে সেট করা হয়:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_CANCELED",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": timestamp_in_past,
...
}
],
}
অ্যাকাউন্ট হোল্ডের সময় বাতিল হওয়ার বিষয়ে আপনাকে জানানোর পরপরই, আপনি SUBSCRIPTION_EXPIRED
টাইপ সহ একটি RTDNও পাবেন কারণ ব্যবহারকারীর অর্থপ্রদানের এনটাইটেলমেন্টের বাইরে রয়েছে এবং সদস্যতা বাতিলের সাথে মন্থন হয়েছে। আপনি এই মেয়াদ শেষ হওয়ার সময়টি আপনি সাধারণত যেভাবে করবেন সেভাবে পরিচালনা করতে পারেন।
ব্যবহারকারী একই সাবস্ক্রিপশন প্ল্যান পুনঃক্রয় করে অ্যাক্সেস পুনরুদ্ধার করতে পারেন অথবা আপনি অ্যাপের মাধ্যমে অফার করেন এমন অন্য কোনো প্ল্যান তাদের আসল ক্রয় থেকে অ্যাকাউন্ট হোল্ডের সময়কালে। সেই ক্ষেত্রে, একটি নতুন ক্রয় টোকেন জারি করা হয় এবং একটি SUBSCRIPTION_PURCHASED
ইভেন্টের অংশ হিসাবে নতুন মানটি ফেরত দেওয়া হয় যা এই নতুন উদাহরণটিকে উপস্থাপন করে।
অ্যাকাউন্ট হোল্ড অ্যাক্সেস এবং পুনরুদ্ধার
চিত্র 3 একটি সাবস্ক্রিপশনের জন্য একটি টাইমলাইন দেখায় যা অ্যাকাউন্ট হোল্ডে প্রবেশ করে এবং ব্যবহারকারী যখন তাদের অর্থপ্রদানের পদ্ধতি ঠিক করে তখন পুনরুদ্ধার হয়।

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

নিম্নলিখিত পয়েন্টগুলি মনে রাখা গুরুত্বপূর্ণ:
- সাবস্ক্রিপশন অ্যাকাউন্ট হোল্ডে প্রবেশ করার আগে, Google Play 48 ঘন্টা পর্যন্ত অর্থপ্রদানের পদ্ধতিতে চার্জ করার অতিরিক্ত প্রচেষ্টা করে। ব্যবহারকারী এই সময়ের মধ্যে সদস্যতা সুবিধা বজায় রাখে। এই পুনঃপ্রচেষ্টার সময়কাল অতিবাহিত হওয়ার পরে, সাবস্ক্রিপশন তারপর অ্যাকাউন্ট হোল্ডে প্রবেশ করে এবং ব্যবহারকারীর সাবস্ক্রিপশন সুবিধাগুলিতে অ্যাক্সেস হারাতে হবে।
- সাবস্ক্রিপশন সরাসরি অ্যাকাউন্ট হোল্ডে প্রবেশ করে যখন সাবস্ক্রিপশন বিরাম দেওয়া অবস্থা থেকে পেমেন্টের ব্যর্থ ফর্ম সহ পুনরায় শুরু হয়।
- অ্যাকাউন্ট হোল্ড থেকে সাবস্ক্রিপশন পুনরুদ্ধার হলে, পুনর্নবীকরণের তারিখ পুনরায় সেট করা হয়।
মেয়াদোত্তীর্ণ
একবার সাবস্ক্রিপশনের মেয়াদ শেষ হয়ে গেলে, ব্যবহারকারীর সাবস্ক্রিপশনে অ্যাক্সেস হারাতে হবে। সেই ক্ষেত্রে SUBSCRIPTION_EXPIRED
টাইপ সহ একটি SubscriptionNotification
বার্তা পাঠানো হয়৷ আপনি যখন এই বিজ্ঞপ্তিটি পান, সর্বশেষ সদস্যতা সংস্থান পেতে Google Play বিকাশকারী API-কে জিজ্ঞাসা করুন৷ আপনি নিশ্চিত করার পরে যে subscriptionState
SUBSCRIPTION_STATE_EXPIRED
, এনটাইটেলমেন্টটি সরান এবং আপনার ব্যাকএন্ডে ক্রয়ের অবস্থাটিকে অবৈধ হিসাবে নিবন্ধন করুন৷ সাবস্ক্রিপশন সংস্থান নিম্নলিখিত উদাহরণের অনুরূপ দেখায়:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_EXPIRED",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": expiration_time_in_past,
...
}
],
}
বাতিলকরণ
একজন ব্যবহারকারী স্বেচ্ছায় প্লে সাবস্ক্রিপশন সেন্টার থেকে একটি সাবস্ক্রিপশন বাতিল করতে পারেন বা অ্যাকাউন্ট হোল্ডে থাকার পরেও যদি সে পুনরুদ্ধার না করে তাহলে তাদের সদস্যতা স্বয়ংক্রিয়ভাবে বাতিল হয়ে যাবে। বিকাশকারীরাও purchases.subscriptions.cancel
এর মাধ্যমে একটি বাতিলকরণ ট্রিগার করতে পারে যখন একটি সাবস্ক্রিপশন বাতিল করা হয়, ব্যবহারকারী বর্তমান বিলিং চক্রের শেষ না হওয়া পর্যন্ত সামগ্রীতে অ্যাক্সেস বজায় রাখে। বিলিং চক্র শেষ হলে, অ্যাক্সেস প্রত্যাহার করা উচিত।
একটি অ-কিস্তি বাতিল করা, স্বয়ংক্রিয়ভাবে পুনর্নবীকরণ করা সদস্যতা একটি SUBSCRIPTION_CANCELED
বিজ্ঞপ্তি ট্রিগার করে৷ আপনি যখন এই বিজ্ঞপ্তিটি পান, তখন Google Play Developer API থেকে প্রত্যাবর্তিত সাবস্ক্রিপশন রিসোর্সে subscriptionState
ক্ষেত্রটি SUBSCRIPTION_STATE_CANCELED
এ সেট করা থাকে এবং expiryTime
সময় ক্ষেত্রটিতে ব্যবহারকারীর সদস্যতা হারানোর তারিখ থাকে৷ যদি সেই তারিখটি অতীতে থাকে, তাহলে ব্যবহারকারীকে অবিলম্বে এনটাইটেলমেন্ট হারাতে হবে। এটি ঘটতে পারে, উদাহরণস্বরূপ, যদি কোনও ব্যবহারকারী অর্থ প্রদানের অস্বীকৃতির কারণে অ্যাকাউন্ট হোল্ডে থাকাকালীন একটি সদস্যতা বাতিল করে।
একটি বাতিল ক্রয়ের জন্য সাবস্ক্রিপশন সংস্থান নিম্নলিখিত উদাহরণের মতো দেখায়:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_CANCELED",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": expiration_time,
...
}
],
}
কিস্তি সাবস্ক্রিপশনের জন্য, একটি SUBSCRIPTION_CANCELLATION_SCHEDULED
নোটিফিকেশন একটি ব্যবহারকারীর দ্বারা সূচিত বাতিলকরণের সময় পাঠানো হয় যখন পেমেন্ট প্রতিশ্রুতি সময়ের জন্য থাকে। বাতিলকরণ মুলতুবি রয়েছে এবং বর্তমান প্রতিশ্রুতি সময়ের শেষে কার্যকর হয়। যখন আপনি এই বিজ্ঞপ্তিটি পান, তখন Google Play Developer API থেকে প্রত্যাবর্তিত সাবস্ক্রিপশন রিসোর্সে সাবস্ক্রিপশন স্টেট ফিল্ডটি SUBSCRIPTION_STATE_ACTIVE
সেট করা থাকে কারণ কিস্তির সদস্যতা প্রতিশ্রুতি সময়ের শেষ না হওয়া পর্যন্ত সক্রিয় থাকে। যাইহোক, একটি খালি মুলতুবি বাতিলকরণ বস্তু উপস্থিত আছে। একটি SUBSCRIPTION_CANCELED
বিজ্ঞপ্তি পাঠানো হয় এবং প্রতিশ্রুতি সময়ের শেষে একটি SUBSCRIPTION_EXPIRED
পাঠানো হয়৷
একটি কিস্তি সাবস্ক্রিপশন ক্রয়ের জন্য সাবস্ক্রিপশন সংস্থান যা বাতিলকরণ মুলতুবি রয়েছে তা নিম্নলিখিত উদাহরণের মতো দেখায়:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
...
"lineItems": [
{
"productId": "sub_plan01",
"expiryTime": expiration_time,
"autoRenewingPlan": {
"autoRenewEnabled": true,
"recurringPrice": {
"currencyCode": "USD",
"units": "1",
"nanos": 990000000
},
"installmentDetails": {
"initialCommittedPaymentsCount": 6,
"remainingCommittedPaymentsCount": 5,
"pendingCancellation": {}
...
}
}
}
],
}
কেন সাবস্ক্রিপশন বাতিল করা হয়েছে তা জানতে আপনি সাবস্ক্রিপশন রিসোর্সে canceledStateContext
ক্ষেত্রটি দেখতে পারেন (উদাহরণস্বরূপ, সাবস্ক্রিপশন ব্যবহারকারী, সিস্টেম বা আপনার দ্বারা বাতিল করা হয়েছে কিনা)। ব্যবহারকারীর দ্বারা সাবস্ক্রিপশন বাতিল করা হলে, ব্যবহারকারী কেন সাবস্ক্রিপশন বাতিল করেছেন তা জানতে আপনি userInitiatedCancellation
ক্ষেত্রটি দেখতে পারেন। এটি যোগাযোগের কৌশলগুলি জানাতে সাহায্য করতে পারে।
যখন একটি সাবস্ক্রিপশন বাতিল করা হয় কিন্তু এখনও মেয়াদ শেষ না হয়, তখনও এটি queryPurchasesAsync()
থেকে ফেরত দেওয়া হয়। আপনি আপনার অ্যাপে একটি বার্তা প্রদর্শন করতে চাইতে পারেন যাতে ব্যবহারকারীকে জানানো হয় যে তাদের সদস্যতা বাতিল করা হয়েছে এবং তাদের মেয়াদ শেষ হওয়ার তারিখ দিতে হবে।
প্রত্যাহার
একটি সাবস্ক্রিপশন বিভিন্ন কারণে প্রত্যাহার করা যেতে পারে, যার মধ্যে আপনার ব্যাকএন্ড purchases.subscriptionsv2.revoke
ব্যবহার করে সাবস্ক্রিপশন প্রত্যাহার করে বা ক্রয় ফেরত চার্জ করা সহ। এই পরিস্থিতিতে, অবিলম্বে ব্যবহারকারীর এনটাইটেলমেন্ট প্রত্যাহার করুন। যখন এটি ঘটে তখন SUBSCRIPTION_REVOKED
টাইপ সহ একটি SubscriptionNotification
বার্তা পাঠানো হয়৷ আপনি যখন এই বিজ্ঞপ্তিটি পান, তখন Google Play Developer API থেকে প্রত্যাবর্তিত সাবস্ক্রিপশন রিসোর্সে subscriptionState
ফিল্ডটি SUBSCRIPTION_STATE_EXPIRED
সেট করা থাকে।
একটি প্রত্যাহার করা ক্রয়ের জন্য সদস্যতা সংস্থান নিম্নলিখিত উদাহরণের মতো দেখায়:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_EXPIRED",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": expiration_time,
...
}
]
}
বিলম্বিত সদস্যতা
আপনি একজন ব্যবহারকারীর এনটাইটেলমেন্ট প্রসারিত করতে চাইতে পারেন এমন বিভিন্ন কারণ রয়েছে। উদাহরণস্বরূপ, আপনি একটি বিশেষ প্রচার হিসাবে ব্যবহারকারীদের বিনামূল্যে অ্যাক্সেস অফার করতে চাইতে পারেন, যেমন একটি সিনেমা কেনার জন্য এক সপ্তাহ বিনামূল্যে দেওয়া বা শুভেচ্ছার অঙ্গভঙ্গি হিসাবে গ্রাহকদের বিনামূল্যে অ্যাক্সেস প্রদান করা। আপনি একটি স্বয়ংক্রিয় পুনর্নবীকরণ সাবস্ক্রিপশনের জন্য পরবর্তী বিলিংয়ের তারিখ অগ্রসর করতে Play Developer API থেকে purchases.subscriptions.defer
পদ্ধতি ব্যবহার করতে পারেন। আপনি যখন এটি করেন, SUBSCRIPTION_DEFERRED
টাইপ সহ একটি SubscriptionNotification
বার্তা পাঠানো হয়৷ বিলম্বিত সময়কালে, ব্যবহারকারী সম্পূর্ণ অ্যাক্সেস সহ আপনার সামগ্রীতে সদস্যতা নিয়েছে কিন্তু চার্জ করা হয় না। নতুন তারিখ প্রতিফলিত করতে সাবস্ক্রিপশন পুনর্নবীকরণের তারিখ আপডেট করা হয়েছে।
প্রিপেইড প্ল্যানের জন্য, মেয়াদ শেষ হওয়ার সময় পিছিয়ে দিতে আপনি ডিফার বিলিং API ব্যবহার করতে পারেন।
একটি বিলম্বিত সাবস্ক্রিপশনের জন্য সাবস্ক্রিপশন সংস্থান নিম্নলিখিত উদাহরণের মতো দেখায়:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": timestamp_in_future,
...
}
],
}
বিরতি দেওয়া সাবস্ক্রিপশন
আপনি ব্যবহারকারীদের তাদের সদস্যতা থামাতে সক্ষম করে স্বেচ্ছাসেবী মন্থন কমাতে পারেন। আপনি যখন বিরতি বৈশিষ্ট্যটি সক্ষম করেন, ব্যবহারকারীরা পুনরাবৃত্ত সময়ের উপর নির্ভর করে এক সপ্তাহ থেকে তিন মাসের মধ্যে সময়ের জন্য তাদের সদস্যতা বিরাম দিতে বেছে নিতে পারেন।
সদস্যতা পুনরাবৃত্তি | সাপ্তাহিক | মাসিক | তিন মাস | ছয় মাস | বার্ষিক |
---|---|---|---|---|---|
উপলব্ধ বিরতি দৈর্ঘ্য * | ১ সপ্তাহ 2 সপ্তাহ 3 সপ্তাহ 4 সপ্তাহ | 1 মাস 2 মাস 3 মাস | 1 মাস 2 মাস 3 মাস | 1 মাস 2 মাস 3 মাস | N/A |
একটি সাবস্ক্রিপশন বিরতি শুধুমাত্র বর্তমান বিলিং মেয়াদ শেষ হওয়ার পরে কার্যকর হয়৷ সাবস্ক্রিপশন পজ করার সময়, ব্যবহারকারীর সাবস্ক্রিপশনে অ্যাক্সেস থাকে না এবং তারা পুনর্নবীকরণের মূল্য পরিশোধ করে না। বিরতির সময় শেষে, সাবস্ক্রিপশন আবার শুরু হয় এবং Google সাবস্ক্রিপশন পুনর্নবীকরণ করার চেষ্টা করে। জীবনবৃত্তান্ত সফল হলে, সাবস্ক্রিপশন আবার সক্রিয় হয়ে যায়। পেমেন্টের সমস্যার কারণে জীবনবৃত্তান্ত ব্যর্থ হলে, ব্যবহারকারী অ্যাকাউন্ট হোল্ডের অবস্থাতে প্রবেশ করেন যেমনটি চিত্র 5 এবং 6 এ দেখানো হয়েছে:


একজন ব্যবহারকারী ম্যানুয়ালি একটি সাবস্ক্রিপশন পুনরায় শুরু করতেও বেছে নিতে পারেন বিরতির সময়কালে যে কোনো সময়, চিত্র 6-এ দেখানো হয়েছে। যখন একজন ব্যবহারকারী ম্যানুয়ালি পুনরায় শুরু করেন, তখন বিলিং তারিখটি ম্যানুয়াল সারসংকলনের তারিখে পরিবর্তিত হয়।
যখন একজন ব্যবহারকারীর সদস্যতা পজ করা হয়, প্লে বিলিং লাইব্রেরি queryPurchasesAsync()
পদ্ধতির মাধ্যমে সদস্যতা ফেরত দেয় না। যদি সাবস্ক্রিপশন পুনরায় চালু করা হয়, queryPurchasesAsync()
পদ্ধতি এটি আবার ফিরিয়ে দেয়।
একজন ব্যবহারকারী যখন তাদের সদস্যতা বিরতি দেয় তখন সচেতন হতে RTDN-এর জন্য শুনুন। এই বিজ্ঞপ্তিগুলি আপনাকে আপনার অ্যাপে আপনার ব্যবহারকারীদের অবহিত করার অনুমতি দেয় যে তারা তাদের সদস্যতা বিরাম দিয়েছে এবং এটিতে তাদের অ্যাক্সেস নেই। Google Play-তে একটি ডিপ লিঙ্ক ব্যবহার করে যেকোন সময় ব্যবহারকারীকে ম্যানুয়ালি তাদের সদস্যতা পুনরায় শুরু করার জন্য আপনাকে একটি উপায় প্রদান করতে হবে।
SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED
টাইপ সহ একটি SubscriptionNotification
বার্তা পাঠানো হয় যখন আপনার ব্যবহারকারী তাদের সাবস্ক্রিপশনের বিরতি শুরু করেন। এই সময়ে, ব্যবহারকারীকে পরবর্তী পুনর্নবীকরণের তারিখ পর্যন্ত তাদের সাবস্ক্রিপশনে অ্যাক্সেস রাখা উচিত এবং সাবস্ক্রিপশন সংস্থানে autoRenewEnabled = true
রয়েছে। subscriptionState
ফিল্ডের মান এই মুহুর্তে SUBSCRIPTION_STATE_ACTIVE
।
যখন বিরতি কার্যকর হয় তখন SUBSCRIPTION_PAUSED
টাইপ সহ একটি SubscriptionNotification
বার্তা পাঠানো হয়৷ যখন এটি ঘটবে, ব্যবহারকারীর তাদের সাবস্ক্রিপশনে অ্যাক্সেস হারাতে হবে, এবং সাবস্ক্রিপশন রিসোর্সে autoRenewEnabled = true
থাকে, এবং subscriptionState
ক্ষেত্রটি SUBSCRIPTION_STATE_PAUSED
এ সেট করা হয়। আপনি PausedStateContext
অবজেক্ট চেক করে সাবস্ক্রিপশন পুনরায় পুনর্নবীকরণের আশা করা হয় তা দেখতে পারেন।
SUBSCRIPTION_RENEWED
টাইপ সহ একটি SubscriptionNotification
বার্তা পাঠানো হয় যদি সাবস্ক্রিপশনটি বিরতির সময় শেষে স্বয়ংক্রিয়ভাবে পুনরায় শুরু করা হয় বা ব্যবহারকারী ম্যানুয়ালি সাবস্ক্রিপশন পুনরায় শুরু করতে বেছে নেন। এটি পুনর্নবীকরণে বর্ণিত হিসাবে পরিচালনা করা উচিত।
বিরতির পরে সাবস্ক্রিপশন পুনরায় চালু করার চেষ্টা করার সময় অর্থপ্রদান ব্যর্থ হলে SUBSCRIPTION_ON_HOLD
টাইপ সহ একটি SubscriptionNotification
বার্তা পাঠানো হয়৷ অ্যাকাউন্ট হোল্ডে বর্ণিত হিসাবে এটি পরিচালনা করা উচিত।
পুনরায় সদস্যতা
স্বয়ংক্রিয়ভাবে পুনর্নবীকরণ সাবস্ক্রিপশন বেস প্ল্যানের জন্য, Google Play স্টোর একটি পুনঃসাবস্ক্রাইব বোতাম প্রদর্শন করতে পারে। এই বোতামটি ব্যবহারকারীদের একটি সাবস্ক্রিপশনে অ্যাক্সেস পুনরুদ্ধার করতে দেয়। এটি বিভিন্ন কারণে প্রদর্শিত নাও হতে পারে, উদাহরণস্বরূপ যখন একটি সদস্যতার মেয়াদ অনেক আগে শেষ হয়ে গেছে৷

যদিও বোতামটি সর্বদা পুনঃসাবস্ক্রাইব লেবেলযুক্ত থাকে, তবে এর কার্যকারিতা সদস্যতার অবস্থার উপর নির্ভর করে।
যদিও একটি সাবস্ক্রিপশন বাতিল করা হয়েছে কিন্তু এখনও মেয়াদ শেষ হয়নি, ব্যবহারকারী এখনও সদস্যতা নিয়েছেন এবং সাবস্ক্রিপশন সুবিধা পাচ্ছেন। ব্যবহারকারী যদি পুনঃসাবস্ক্রাইব ট্যাপ করে, তাহলে বাতিলকরণ কার্যকরভাবে পূর্বাবস্থায় ফেরানো হয় এবং সাবস্ক্রিপশন পুনর্নবীকরণ অব্যাহত থাকে। এই ক্রিয়াটি Play বিকাশকারী ডকুমেন্টেশন এবং API-এ পুনরুদ্ধার হিসাবে পরিচিত।
একটি স্বয়ংক্রিয় পুনর্নবীকরণ সাবস্ক্রিপশনের মেয়াদ শেষ হওয়ার পরে, আপনি ব্যবহারকারীদের একই সাবস্ক্রিপশন বেস প্ল্যান কেনার অনুমতি দিতে পারেন। এই ক্রিয়াটি প্লে ডেভেলপার ডকুমেন্টেশন এবং API-এ পুনরায় সদস্যতা নেওয়ার জন্য পরিচিত। আপনি প্লে কনসোলে বা API ব্যবহার করে প্রতিটি বেস প্ল্যানের জন্য এই বিকল্পটি কনফিগার করতে পারেন।
মেয়াদ শেষ হওয়ার আগে পুনরুদ্ধার করুন
যদি আপনার অ্যাপ শুধুমাত্র queryPurchasesAsync()
পদ্ধতির উপর নির্ভর করে একজন ব্যবহারকারী সাবস্ক্রিপশনের অধিকারী কিনা তা নির্ধারণ করতে, তাহলে আপনার অ্যাপটি স্বয়ংক্রিয়ভাবে পুনরুদ্ধারগুলি পরিচালনা করবে কারণ queryPurchasesAsync()
পদ্ধতিটি তাদের মেয়াদ শেষ হওয়ার তারিখের আগে বাতিল করা কেনাকাটা ফেরত দিতে থাকে। একটি পুনরুদ্ধার করা সাবস্ক্রিপশন পুনর্নবীকরণ অব্যাহত থাকে যেন এটি বাতিল করা হয়নি।
যদি আপনার অ্যাপটি একটি ব্যাকএন্ডের সাথে সাবস্ক্রিপশনের অবস্থাকে সিঙ্ক্রোনাইজ করে, তাহলে আপনাকে SUBSCRIPTION_RESTARTED
টাইপ সহ একটি SubscriptionNotification
বার্তা শোনা উচিত। আপনি এই RTDN পাওয়ার পরে, আপনার অ্যাপ বিজ্ঞপ্তিতে সাড়া দিতে পারে, রেকর্ড করতে পারে যে সাবস্ক্রিপশনটি এখন পুনর্নবীকরণের জন্য সেট করা আছে এবং আপনার অ্যাপে পুনরুদ্ধার বার্তাগুলি প্রদর্শন করা বন্ধ করতে পারে। সাবস্ক্রিপশন সংস্থান নিম্নলিখিত উদাহরণের অনুরূপ দেখায়:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": next_renewal_date
...
}
],
}
মেয়াদ শেষ হওয়ার পরে পুনরায় সদস্যতা নিন
যদি পুনঃসাবস্ক্রাইব করার অনুমতি দেওয়ার জন্য Google Play Console বা API ব্যবহার করে একটি স্বয়ংক্রিয় পুনর্নবীকরণ বেস প্ল্যান কনফিগার করা হয়, তাহলে ব্যবহারকারীরা Google Play Store-এ মেয়াদোত্তীর্ণ সাবস্ক্রিপশন পুনরায় ক্রয় করতে পারবেন।
এগুলো নতুন কেনাকাটা। Google Play একটি নতুন ক্রয়ের টোকেন ইস্যু করে এবং আপনার ব্যাকএন্ড SUBSCRIPTION_PURCHASED
টাইপ সহ একটি RTDN পায়। এই ধরনের অ্যাপের বাইরের কেনাকাটার জন্য ক্রয়ের স্থিতিতে মূল ক্রয়ের সাথে যুক্ত একটি linkedPurchaseToken
অন্তর্ভুক্ত করা হয় না, কারণ মূল সাবস্ক্রিপশনের মেয়াদ সম্পূর্ণ হয়ে গেছে। এইগুলি হল নতুন কেনাকাটা যা আপনার ব্যাকএন্ডকে অবশ্যই অন্যান্য ক্রয়ের মতো প্রক্রিয়া করতে হবে এবং স্বীকার করতে হবে৷
আপগ্রেড, ডাউনগ্রেড, এবং পুনরায় সদস্যতা
সাবস্ক্রিপশনের মেয়াদ শেষ হওয়ার আগে যখন কোনো ব্যবহারকারী আপগ্রেড, ডাউনগ্রেড বা আপনার অ্যাপ থেকে বাতিল করার পরে সাইন আপ করেন , তখন পুরানো সাবস্ক্রিপশন বাতিল হয়ে যায় এবং একটি নতুন ক্রয় টোকেন দিয়ে একটি নতুন সদস্যতা তৈরি করা হয়।
উপরন্তু, Google Play Developer API থেকে প্রত্যাবর্তিত সাবস্ক্রিপশন রিসোর্সে একটি linkedPurchaseToken
ক্ষেত্র রয়েছে যা ব্যবহারকারীর আপগ্রেড, ডাউনগ্রেড বা পুনঃসাবস্ক্রাইব করা পুরানো কেনাকাটা নির্দেশ করে। আপনি পুরানো সাবস্ক্রিপশন দেখতে এবং বিদ্যমান ব্যবহারকারীর অ্যাকাউন্ট সনাক্ত করতে সেই ক্ষেত্রে ক্রয় টোকেন ব্যবহার করতে পারেন যাতে আপনি একই অ্যাকাউন্টের সাথে নতুন কেনাকাটা সংযুক্ত করতে পারেন।
আপনার অ্যাপে কোনো ব্যবহারকারীকে আপগ্রেড, ডাউনগ্রেড বা পুনরায় সদস্যতা দেওয়ার বিকল্পগুলি অফার করার আগে, আপনাকে অবশ্যই বিদ্যমান সদস্যতা স্বীকার করতে হবে। যদি বিদ্যমান সাবস্ক্রিপশনের স্বীকৃতি এখনও মুলতুবি থাকে তবে যেকোনো পরিকল্পনা পরিবর্তন বা পুনরায় সদস্যতা অবরুদ্ধ করা হয়।
যদি ব্যবহারকারী সফলভাবে আপগ্রেড, ডাউনগ্রেড বা পুনরায় সদস্যতা ক্রয় করেন, এটি একটি নতুন ক্রয় যা আপনাকে অবশ্যই স্বীকার করতে হবে। এটি করার প্রস্তাবিত উপায় হল Google Play Developer API ব্যবহার করা। সাবস্ক্রিপশন সংস্থান নিম্নলিখিত উদাহরণের অনুরূপ দেখায়:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
"linkedPurchaseToken": old_purchase_token,
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": next_renewal_date,
"autoRenewingPlan": {
"autoRenewEnabled": true
}
}
],
}
দাম পরিবর্তন
স্বয়ংক্রিয় পুনর্নবীকরণ সাবস্ক্রিপশন মূল্য পরিবর্তন এবং উপযুক্ত হলে ব্যবহারকারীদের অবহিত করার বিষয়ে জানতে মূল্য পরিবর্তনের সর্বোত্তম অনুশীলন নির্দেশিকা দেখুন।
অপ্ট-ইন হিসাবে বিদ্যমান গ্রাহকদের জন্য মূল্য পরিবর্তনগুলি প্রয়োগ করা হলে, ব্যবহারকারী নতুন মূল্য নিশ্চিত বা প্রত্যাখ্যান করার জন্য পদক্ষেপ নিলে আপনি একটি RTDN পাবেন।
একটি অপ্ট-ইন মূল্য পরিবর্তন ব্যবহারকারী নিশ্চিতকরণ হ্যান্ডেল
যখন কোনো ব্যবহারকারী আপনার সাবস্ক্রিপশনের মূল্য বৃদ্ধি স্বীকার করেন, আপনি SUBSCRIPTION_PRICE_CHANGED_CONFIRMED
টাইপ সহ একটি SubscriptionNotification
বার্তা পাবেন। একটি অপ্ট-আউট মূল্য হ্রাসের সাথে, অথবা যখন সদস্যতার মূল্য বৃদ্ধি পুনর্নবীকরণ হয়, আপনি SUBSCRIPTION_RENEWED
টাইপ সহ একটি SubscriptionNotification
বার্তা পাবেন৷ এই বিজ্ঞপ্তিটিকে অন্য যেকোনো পুনর্নবীকরণের মতো বিবেচনা করুন।
একটি অপ্ট-ইন মূল্য বৃদ্ধি গৃহীত হয় না এমন ক্ষেত্রে পরিচালনা করুন
যদি কোনও ব্যবহারকারী উচ্চ মূল্যে পুনর্নবীকরণ করার আগে আপনার অপ্ট-ইন মূল্য বৃদ্ধি গ্রহণ না করে থাকে, তবে তারা স্বয়ংক্রিয়ভাবে সদস্যতা ত্যাগ করবে এবং আপনি SUBSCRIPTION_CANCELED
টাইপ সহ একটি SubscriptionNotification
বার্তা পাবেন৷ বাতিলকরণে বর্ণিত হিসাবে এই ইভেন্টটি পরিচালনা করুন।
ব্যবহারকারীরা একই প্রক্রিয়া অনুসরণ করে অপ্ট-আউট মূল্য বৃদ্ধির জন্য তাদের সদস্যতা বাতিল করতে পারেন।
প্রিপেইড প্ল্যানের জন্য জীবনচক্র পরিচালনা করুন
স্বয়ংক্রিয় পুনর্নবীকরণ সাবস্ক্রিপশনের মতো, প্রতিটি নতুন কেনাকাটার পরে আপনাকে অবশ্যই প্রিপেইড প্ল্যান স্বীকার করতে হবে। প্রিপেইড প্ল্যানের ক্ষেত্রে, আপনাকে অবশ্যই প্রাথমিক ক্রয় এবং যেকোনো টপ-আপ উভয়ই সম্পূর্ণভাবে প্রক্রিয়া করতে হবে, কারণ ব্যবহারকারীকে প্রতিবার ক্রয় প্রবাহের মধ্য দিয়ে যেতে হবে।
সংক্ষিপ্ত প্রিপেইড প্ল্যানের সময়কালের সম্ভাবনার কারণে, যত তাড়াতাড়ি সম্ভব ক্রয়টি স্বীকার করা গুরুত্বপূর্ণ। এক সপ্তাহ বা তার বেশি সময়কালের প্রিপেইড প্ল্যানগুলি অবশ্যই 3 দিনের মধ্যে স্বীকার করতে হবে৷ এক সপ্তাহের কম সময়ের প্রিপেইড প্ল্যানগুলি অবশ্যই প্ল্যানের মেয়াদের অর্ধেকের মধ্যে স্বীকার করতে হবে। উদাহরণস্বরূপ, ডেভেলপারদের কাছে তিন দিনের প্রিপেইড প্ল্যান কেনার স্বীকৃতি দেওয়ার জন্য 1.5 দিন সময় আছে।
SUBSCRIPTION_PURCHASED
টাইপ সহ একটি SubscriptionNotification
বার্তা আপনার RTDN ক্লায়েন্টকে পাঠানো হয় যখনই প্রতিটি টপ-আপ সহ একটি প্রিপেইড প্ল্যান সদস্যতা কেনা হয়। সর্বশেষ প্রিপেইড প্ল্যান সাবস্ক্রিপশনের অবস্থা চেক করতে purchases.subscriptionsv2.get
পদ্ধতিতে কল করুন।
টপ-আপ কেনাকাটার জন্য একটি নতুন ক্রয় টোকেন জারি করা হয়, এবং আপনি নতুন সাবস্ক্রিপশন ক্রয়ের অবস্থার অংশ হিসাবে linkedPurchaseToken
ক্ষেত্রের আগের ক্রয়ের টোকেনটি পাবেন। ক্রয় টোকেন সাবস্ক্রিপশন সাইনআপ থেকে মেয়াদ শেষ হওয়ার 60 দিন পর্যন্ত বৈধ। এই তারিখের পরে, Google Play Developer API কল করার জন্য ক্রয় টোকেনটি আর বৈধ থাকবে না।
একটি প্রিপেইড প্ল্যান ক্রয়ের জন্য সাবস্ক্রিপশন সংস্থান নিম্নলিখিত উদাহরণের মতো দেখায়:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
"startTime": "2022-04-22T18:39:58.270Z",
"regionCode": "US",
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
"latestOrderId": "GPA.3333-4137-0319-36762",
"acknowledgementState": "ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED",
"lineItems": [
{
"productId": "prepaid_plan01",
"expiryTime": expiry_date,
"prepaidPlan": {
"allowExtendAfterTime": timestamp_after_which_topups_are_allowed
}
}
]
}
expiryTime
ক্ষেত্রে এনটাইটেলমেন্ট শেষ হলে আপনি দেখতে পাবেন। টপ-আপ ক্রয় এটি জমা করে এনটাইটেলমেন্ট সময় বাড়ায়। এর মানে হল যে ব্যবহারকারী যদি তাদের আসল এনটাইটেলমেন্ট শেষ হওয়ার আগে টপ আপ করে, তাহলে তাদের আগের মেয়াদ শেষ হওয়ার তারিখের উপরে নতুন সময় যোগ করা হয়।
আপনি ব্যবহারকারীকে জানিয়ে আপনার অ্যাপে একটি বার্তা প্রদর্শন করতে চাইতে পারেন যে তাদের প্রিপেইড সাবস্ক্রিপশন একটি টপ-আপের মাধ্যমে বাড়ানো যেতে পারে। একজন ব্যবহারকারী কখন টপ-আপ করতে সক্ষম হবেন তা জানতে, সাবস্ক্রিপশন রিসোর্সে allowExtendAfterTime
ক্ষেত্রটি পরীক্ষা করুন৷
প্রিপেইড প্ল্যানগুলি স্বয়ংক্রিয়ভাবে পুনর্নবীকরণ হয় না, তাই সেগুলি বাতিল করা যাবে না। যদি একজন ব্যবহারকারী একটি প্রিপেইড প্ল্যান বাতিল করতে চান, তাহলে তারা এটির মেয়াদ শেষ হওয়ার তারিখে পৌঁছাতে দিতে পারেন।
,সাবস্ক্রিপশন ক্রয়গুলি তাদের জীবনচক্র জুড়ে বিভিন্ন রাজ্যের মধ্য দিয়ে যেতে পারে, স্বয়ংক্রিয় পুনর্নবীকরণ আচরণ, অর্থপ্রদান হ্রাসের পরিস্থিতি এবং বিকাশকারী পরিচালনার ক্রিয়া সহ অনেকগুলি কারণের উপর নির্ভর করে।
স্বয়ংক্রিয়ভাবে পুনর্নবীকরণ সাবস্ক্রিপশনের জন্য জীবনচক্র পরিচালনা করুন
যখন একজন ব্যবহারকারীর সদস্যতার অবস্থা পরিবর্তিত হয়, তখন আপনার ব্যাকএন্ড সার্ভার একটি SubscriptionNotification
বার্তা পায়
আপনার ব্যাকএন্ডের অবস্থা আপডেট করতে, বিজ্ঞপ্তিতে অন্তর্ভুক্ত ক্রয় টোকেন সহ purchases.subscriptionsv2.get
API-এ কল করুন। এই শেষ পয়েন্টটি একটি ক্রয় টোকেন দেওয়া সর্বশেষ সাবস্ক্রিপশন অবস্থা প্রদান করে এবং সাবস্ক্রিপশন পরিচালনার জন্য সত্যের উৎস হিসেবে বিবেচিত হয়।
ক্রয় টোকেন সাবস্ক্রিপশন সাইনআপ থেকে মেয়াদ শেষ হওয়ার 60 দিন পর্যন্ত বৈধ। এই তারিখের পরে, Google Play Developer API কল করার জন্য ক্রয় টোকেনটি আর বৈধ থাকবে না।
নতুন অটো-পুনর্নবীকরণ সাবস্ক্রিপশন ক্রয়
যখন কোনও ব্যবহারকারী সাবস্ক্রিপশন ক্রয় করেন, তখন SUBSCRIPTION_PURCHASED
টাইপ সহ একটি SubscriptionNotification
বার্তা আপনার আরটিডিএন ক্লায়েন্টকে প্রেরণ করা হয়। আপনি এই বিজ্ঞপ্তিটি পান বা আপনি PurchasesUpdatedListener
মাধ্যমে অ্যাপ্লিকেশনটিতে নতুন ক্রয় নিবন্ধন করুন বা আপনার অ্যাপের onResume()
পদ্ধতিতে ম্যানুয়ালি ক্রয় আনুন , আপনার সুরক্ষিত ব্যাকএন্ডে নতুন ক্রয়টি প্রক্রিয়া করা উচিত। এটি করার জন্য, এই পদক্ষেপগুলি অনুসরণ করুন:
-
purchases.subscriptionsv2.get
জিজ্ঞাসা করুন । -
subscriptionState
ক্ষেত্রের মানSUBSCRIPTION_STATE_ACTIVE
কিনা তা নিশ্চিত করুন। - ক্রয় যাচাই করুন ।
- ব্যবহারকারীকে সামগ্রীতে অ্যাক্সেস দিন। ক্রয়ের সাথে সম্পর্কিত ব্যবহারকারী অ্যাকাউন্টটি সাবস্ক্রিপশন রিসোর্স থেকে
ExternalAccountIdentifiers
অবজেক্টের সাথে চিহ্নিত করা যেতে পারে যদি আইডেন্টিফায়ারগুলিsetObfuscatedAccountId
এবংsetObfuscatedProfileId
ব্যবহার করে ক্রয়ের সময় সেট করা থাকে।
প্লে বিলিং লাইব্রেরিতে একটি সাবস্ক্রিপশন স্বীকৃতি দেওয়ার একটি পদ্ধতি, acknowledgePurchase()
এবং স্বীকৃতি স্থিতি যাচাই করার একটি পদ্ধতি অন্তর্ভুক্ত রয়েছে, isAcknowledged()
। তবে, আমরা সুপারিশ করি যে আপনি আরও ভাল সুরক্ষার জন্য আপনার ব্যাকএন্ডে ক্রয় প্রসেসিং পরিচালনা করুন।
নতুন ক্রয়ের জন্য সাবস্ক্রিপশন রিসোর্সটি নিম্নলিখিত উদাহরণের মতো দেখাচ্ছে:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
"startTime": "2022-04-22T18:39:58.270Z",
"regionCode": "US",
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
"latestOrderId": "GPA.3333-4137-0319-36762",
"acknowledgementState": "ACKNOWLEDGEMENT_STATE_PENDING", // need to acknowledge new purchases
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": next_renewal_date,
"autoRenewingPlan": {
"autoRenewEnabled": true
}
}
],
}
সদস্যতা পুনর্নবীকরণ
অ-স্থাপনের জন্য, অটো-পুনর্নবীকরণ সাবস্ক্রিপশনগুলির জন্য, সাবস্ক্রিপশন পুনর্নবীকরণ করার সময় একটি SUBSCRIPTION_RENEWED
বিজ্ঞপ্তি প্রেরণ করা হয়। কিস্তি সাবস্ক্রিপশনের জন্য, প্রতিটি বিলিংয়ের তারিখে সাবস্ক্রিপশন চার্জ করা হলে একটি SUBSCRIPTION_RENEWED
বিজ্ঞপ্তি প্রেরণ করা হয়। নিশ্চিত হয়ে নিন যে ব্যবহারকারী এখনও সাবস্ক্রিপশনের অধিকারী এবং তারপরে গুগল প্লে বিকাশকারী এপিআই থেকে ফিরে আসা সাবস্ক্রিপশন রিসোর্সে প্রদত্ত নতুন expiryTime
সহ সাবস্ক্রিপশন রাষ্ট্রটি আপডেট করুন। সাবস্ক্রিপশন রিসোর্সটি নিম্নলিখিত উদাহরণের মতো দেখাচ্ছে:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
"startTime": "2022-04-22T18:39:58.270Z",
"regionCode": "US",
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
"latestOrderId": "GPA.3333-4137-0319-36762",
"acknowledgementState": "ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED",
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": next_renewal_date,
"autoRenewingPlan": {
"autoRenewEnabled": true
}
}
]
}
আপনার সাবস্ক্রিপশন পুনর্নবীকরণগুলি স্বীকার করার দরকার নেই।
গ্রেস পিরিয়ড
যদি সাবস্ক্রিপশন পুনর্নবীকরণের সাথে অর্থ প্রদানের সমস্যাগুলি থাকে তবে গুগল ব্যবহারকারীকে অবহিত করে এবং পর্যায়ক্রমে সাবস্ক্রিপশনটির মেয়াদ শেষ হওয়ার আগে কিছু সময়ের জন্য সাবস্ক্রিপশনটি পুনর্নবীকরণের চেষ্টা করে। এই পুনরুদ্ধারের সময়কালে অ্যাকাউন্ট হোল্ড পিরিয়ডের পরে গ্রেস পিরিয়ড থাকতে পারে। একটি গ্রেস পিরিয়ড চলাকালীন, ব্যবহারকারীর এখনও তাদের সাবস্ক্রিপশন এনটাইটেলমেন্টে অ্যাক্সেস থাকা উচিত।
queryPurchasesAsync()
পদ্ধতিটি গ্রেস পিরিয়ডে থাকা ক্রয়গুলি ফেরত অব্যাহত রাখে। যদি আপনার অ্যাপ্লিকেশনটি কোনও ব্যবহারকারী সাবস্ক্রিপশনের অধিকারী কিনা তা যাচাই করার জন্য যদি আপনার queryPurchasesAsync
সম্পূর্ণরূপে নির্ভর করে তবে আপনার অ্যাপ্লিকেশনটি স্বয়ংক্রিয়ভাবে গ্রেস পিরিয়ডগুলি পরিচালনা করতে হবে, কারণ এই সাবস্ক্রিপশনগুলি বিলিং লাইব্রেরির মাধ্যমে সক্রিয় হিসাবে দেখানো হয়েছে।
আপনার ব্যাকএন্ডের সাথে সাবস্ক্রিপশন স্টেটের সিঙ্ক্রোনাইজিং আপনাকে অর্থ প্রদানের হ্রাস সম্পর্কে আরও সচেতন হতে দেয় এবং আপনি স্বেচ্ছাসেবী মন্থন হ্রাস করার চেষ্টা করার সাথে সাথে আপনাকে আরও প্রসঙ্গ দেয়। ব্যবহারকারী যখন গ্রেস পিরিয়ডে প্রবেশ করে তখন SUBSCRIPTION_IN_GRACE_PERIOD
টাইপ সহ SubscriptionNotification
বার্তাগুলি শুনুন। ব্যবহারকারী যখন গ্রেস পিরিয়ডে থাকে, সাবস্ক্রিপশন রিসোর্সে autoRenewEnabled = true
থাকে। গুগল প্লে গতিশীলভাবে মেয়াদোত্তীর্ণ সময়টির মেয়াদ শেষ না হওয়া পর্যন্ত expiryTime
সময়টি প্রসারিত করে কারণ ব্যবহারকারী বাতিল হওয়া বা গ্রেস পিরিয়ডটি সর্বোচ্চ দৈর্ঘ্যের জন্য স্থায়ী না হওয়া পর্যন্ত এনটাইটেলমেন্ট স্থায়ী হওয়া উচিত। এই সময়ের মধ্যে subscriptionState
ক্ষেত্রের মান SUBSCRIPTION_STATE_IN_GRACE_PERIOD
। সাবস্ক্রিপশন রিসোর্সটি নিম্নলিখিত উদাহরণের মতো দেখাচ্ছে:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_IN_GRACE_PERIOD",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": timestamp_in_future,
"autoRenewingPlan": {
"autoRenewEnabled": true
}
}
],
}
প্লে ব্যবহারকারীদের অবহিত করে যা অনুগ্রহকালীন সময়ে রয়েছে যে তাদের অর্থ প্রদান হ্রাস পেয়েছে এবং তাদের প্লে স্টোরে তাদের অর্থ প্রদানের পদ্ধতির সমস্যাগুলি সমাধান করার অনুরোধ জানায়। যখন কোনও ব্যবহারকারী কোনও গ্রেস পিরিয়ডে প্রবেশ করে, ব্যর্থতা অনৈচ্ছিক হলে আপনার ব্যবহারকারীকে তাদের অর্থ প্রদানের পদ্ধতিটি ঠিক করতে উত্সাহিত করা উচিত। এটি করার একটি সহজ উপায় হ'ল অ্যাপ্লিকেশন মেসেজিং এপিআই ব্যবহার করা। যদি আপনি এই এপিআইকে কল করেন যখন ব্যবহারকারী আপনার অ্যাপটি খুলেন, তবে তাদের অস্থায়ী স্নাকবারে একটি প্লে বার্তা দেখানো হয় যাতে ব্যবহারকারীকে তাদের অর্থ প্রদানের বিষয়টি অস্বীকার করা হয়েছে তা অবহিত করে। এই বার্তায় গুগল প্লেতে তাদের অর্থ প্রদানের পদ্ধতিটি ঠিক করার জন্য ব্যবহারকারীর জন্য একটি গভীর লিঙ্কও অন্তর্ভুক্ত রয়েছে।
ব্যবহারকারী তাদের অর্থ প্রদানের পদ্ধতিটি ঠিক করার সাথে সাথে সাবস্ক্রিপশনটি তার মূল পুনর্নবীকরণের তারিখের সাথে পুনর্নবীকরণ করে এবং আপনি নবায়নগুলিতে বর্ণিত হিসাবে পুনর্নবীকরণ পরিচালনা করতে পারেন।
যদি গ্রেস পিরিয়ড চলাকালীন ব্যবহারকারী তাদের অর্থ প্রদানের পদ্ধতিটি ঠিক না করে, সাবস্ক্রিপশন অ্যাকাউন্ট হোল্ডে প্রবেশ করে এবং তারা এনটাইটেলমেন্ট হারায়।
গ্রেস পিরিয়ড অ্যাক্সেস এবং পুনরুদ্ধার
চিত্র 2 সাবস্ক্রিপশনের জন্য একটি টাইমলাইন দেখায় যা গ্রেস পিরিয়ডে প্রবেশ করে এবং তারপরে ব্যবহারকারী যখন তাদের অর্থ প্রদানের পদ্ধতিটি ঠিক করে দেয় তখন পুনরুদ্ধার হয়। গ্রেস পিরিয়ড শেষ হওয়ার পরে, ব্যবহারকারীর সাবস্ক্রিপশন সুবিধাগুলি হারাতে হবে এবং অ্যাকাউন্ট হোল্ডে যেতে হবে।

নিম্নলিখিত পয়েন্টগুলি মনে রাখা গুরুত্বপূর্ণ:
- গ্রেস পিরিয়ড চলাকালীন, ব্যবহারকারীর সাবস্ক্রিপশন সুবিধাগুলিতে অ্যাক্সেস বজায় রাখা উচিত।
- যখন কোনও সাবস্ক্রিপশন গ্রেস পিরিয়ডের সময় পুনরুদ্ধার হয়, পুনর্নবীকরণের তারিখটি পুনরায় সেট করা হয় না ।
- আপনি যদি গ্রেস পিরিয়ডটি বাড়ান - উদাহরণস্বরূপ, 7 দিন থেকে 14 দিন পর্যন্ত - ব্যবহারকারীরা যারা গ্রেস পিরিয়ডে রয়েছেন তারা সাবস্ক্রিপশন সুবিধাগুলিতে বর্ধিত অ্যাক্সেস পান।
- আপনি যদি গ্রেস পিরিয়ড হ্রাস করেন তবে নতুন গ্রেস পিরিয়ডের চেয়ে পুরানো গ্রেস পিরিয়ডে যথেষ্ট পরিমাণে ব্যবহারকারীরা তাদের সাবস্ক্রিপশন সুবিধাগুলি অবিলম্বে বাতিল করে দেয়। উদাহরণস্বরূপ, আপনি যদি গ্রেস পিরিয়ডটি 14 দিন থেকে 7 দিনে হ্রাস করেন তবে পুরানো গ্রেস পিরিয়ডের 8-14 দিনের মধ্যে থাকা ব্যবহারকারীরা তাদের সাবস্ক্রিপশন সুবিধাগুলি অবিলম্বে প্রত্যাহার করে নিয়েছেন।
- সাবস্ক্রিপশনটি একটি সক্রিয় অবস্থায় রয়ে গেছে এবং নীরব গ্রেস পিরিয়ড শেষ না হওয়া পর্যন্ত আপনি গ্রেস পিরিয়ড আরটিডিএন পাবেন না
নীরব গ্রেস পিরিয়ড
আপনি 0 দিনের গ্রেস পিরিয়ড সেট করতে পারেন, তবে অর্থ প্রদানের জন্য পর্যাপ্ত সময় নিশ্চিত করতে খেলুন সর্বনিম্ন 1 দিন অপেক্ষা করবেন। এই নীরব গ্রেস পিরিয়ড অর্থ প্রদানের প্রক্রিয়াকরণের জন্য একটি সুরক্ষা নেট সরবরাহ করে। এই 24 ঘন্টা সময়কালে সাবস্ক্রিপশনটি ACTIVE
অবস্থায় থাকে।
আপনার সাবস্ক্রিপশন রাষ্ট্রের পরিবর্তনের সাথে সিঙ্কে থাকার সর্বোত্তম উপায় হ'ল রিয়েল-টাইম বিকাশকারী বিজ্ঞপ্তিগুলি (আরটিডিএন) শুনতে এবং প্রতিক্রিয়া জানানো। সাবস্ক্রিপশনের আরও সঠিক স্থিতি পেতে মেয়াদোত্তীর্ণ সময়ের পরিবর্তে আরটিডিএন সময়ে purchases.subscriptionsv2.get()
পদ্ধতিটি কল করুন।
24 -ঘন্টা নীরব গ্রেস পিরিয়ডের পরে সাবস্ক্রিপশন স্থিতির উপর নির্ভর করে আপনার নিম্নলিখিত বিজ্ঞপ্তিগুলির একটি পাওয়া উচিত:
-
SUBSCRIPTION_ON_HOLD
(যদি সক্ষম হয়) -
SUBSCRIPTION_CANCELED
(যদি বাতিল করা হয়) -
SUBSCRIPTION_EXPIRED
(যদি মেয়াদোত্তীর্ণ হয়) -
SUBSCRIPTION_RENEWED
(সফলভাবে পুনর্নবীকরণ করা হলে)
সাবস্ক্রিপশনের সর্বশেষ স্থিতি পেতে আপনি 24 -ঘন্টা নীরব গ্রেস পিরিয়ডের পরে যে কোনও সময়ে subscriptionV2.get()
পদ্ধতিতে কল করতে পারেন।
অ্যাকাউন্ট হোল্ড
যদি সাবস্ক্রিপশন পুনর্নবীকরণের সাথে অর্থ প্রদানের সমস্যাগুলি থাকে তবে কোনও গ্রেস পিরিয়ড শেষ হওয়ার পরে, একটি অ্যাকাউন্ট হোল্ড পিরিয়ড শুরু হয়। যখন কোনও সাবস্ক্রিপশন অ্যাকাউন্টে প্রবেশ করে, আপনার সাবস্ক্রিপশন এনটাইটেলমেন্টে অ্যাক্সেস ব্লক করা উচিত।
অ্যাকাউন্ট হোল্ড চলাকালীন, আপনার প্রয়োজনীয় হিসাবে আপনার সাবস্ক্রিপশনগুলির কোনও বাতিলকরণ , পুনরুদ্ধার বা পুনরায় কেনার ব্যবস্থা করা চালিয়ে যাওয়া উচিত, কারণ সাবস্ক্রিপশনটি ধরে রাখার সময় ব্যবহারকারীর পক্ষে এই পরিবর্তনগুলি করা সম্ভব।
ব্যবহারকারী অ্যাকাউন্ট হোল্ড পিরিয়ডে প্রবেশ করার সময় আরটিডিএনগুলি আপনাকে অবহিত করে, যাতে সাবস্ক্রিপশনে তাদের অ্যাক্সেস কেন স্থগিত করা হয়েছিল তা সম্পর্কে আপনি যত তাড়াতাড়ি সম্ভব তাদের অবহিত করতে পারেন। এটি করার একটি সহজ উপায় হ'ল অ্যাপ্লিকেশন মেসেজিং এপিআই ব্যবহার করা। আপনার ব্যবহারকারী অ্যাপটি খোলার সময় এই এপিআইকে কল করা ব্যবহারকারীকে অস্থায়ী স্নাকবারে একটি বার্তা দেখাবে যাতে তাদের জানিয়ে দেয় যে তাদের অর্থ প্রদান হ্রাস পেয়েছে। এই বার্তায় গুগল প্লেতে তাদের অর্থ প্রদানের পদ্ধতিটি ঠিক করার জন্য ব্যবহারকারীর জন্য একটি গভীর লিঙ্কও অন্তর্ভুক্ত রয়েছে।
যদি আপনার ব্যবহারকারীরা আপনার অ্যাপ্লিকেশনটির বাইরে সাবস্ক্রিপশন সামগ্রী অ্যাক্সেস করতে পারে তবে তারা আবিষ্কার করতে পারে যে তারা বিভিন্ন পৃষ্ঠে অ্যাক্সেস হারিয়েছে। আপনি ব্যবহারকারীকে একটি পুশ বিজ্ঞপ্তি বা একটি ইমেল প্রেরণ করতে চাইতে পারেন তাদের জানাতে যে অর্থ প্রদানের হ্রাসের কারণে তাদের সাবস্ক্রিপশনটি আর সক্রিয় নয়।
সাবস্ক্রিপশনটি অ্যাকাউন্ট হোল্ডের সময় queryPurchasesAsync()
পদ্ধতি দ্বারা ফিরে আসে না, সুতরাং যদি আপনার অ্যাপ্লিকেশনটি বিদ্যমান ক্রয়গুলি প্রদর্শন করার জন্য এই পদ্ধতির উপর নির্ভর করে তবে আপনার ডিফল্টরূপে অ্যাকাউন্ট হোল্ডকে সমর্থন করা উচিত।
রিয়েল-টাইম বিকাশকারী বিজ্ঞপ্তিগুলির সাথে, সাবস্ক্রিপশন অ্যাকাউন্ট হোল্ডে প্রবেশ করার সময় আপনি SUBSCRIPTION_ON_HOLD
সাথে একটি SubscriptionNotification
বার্তা পান। নতুন সাবস্ক্রিপশন তথ্য পুনরুদ্ধার করতে আপনার সিকিউর ব্যাকএন্ড সার্ভার থেকে purchases.subscriptionsv2.get
পদ্ধতিটি কল করুন। অ্যাকাউন্টের সময় সাবস্ক্রিপশন রিসোর্সটির expiryTime
ক্ষেত্রটি একটি অতীত টাইমস্ট্যাম্পে সেট করা আছে এবং subscriptionState
ক্ষেত্রটি SUBSCRIPTION_STATE_ON_HOLD
সেট করা আছে:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ON_HOLD",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": timestamp_in_past,
...
}
],
}
অ্যাক্সেস পুনরুদ্ধার করতে, ব্যবহারকারীদের অবশ্যই তাদের অর্থ প্রদানের পদ্ধতিটি ঠিক করতে হবে। প্লে ব্যবহারকারীদের তাদের অর্থ প্রদানের হ্রাসের অ্যাকাউন্টে অবহিত করে এবং আপনার তাদের অর্থ প্রদানের পদ্ধতিটি ঠিক করতে উত্সাহিত করা উচিত।
ব্যবহারকারী তাদের অর্থ প্রদানের পদ্ধতিটি ঠিক করার পরে, সাবস্ক্রিপশনটি একটি সক্রিয় অবস্থায় ফিরে আসে এবং তারপরে আপনাকে অবশ্যই সাবস্ক্রাইব করা সামগ্রীতে অ্যাক্সেস পুনরুদ্ধার করতে হবে। এই ক্ষেত্রে, ক্রয় টোকেনটি অ্যাকাউন্ট হোল্ড শুরু হওয়ার আগে যেমন ছিল একই কারণ একই ক্রয়টি পুনরুদ্ধার হচ্ছে এবং আপনি SUBSCRIPTION_RECOVERED
টাইপ সহ একটি আরটিডিএন পান।
কিস্তি সাবস্ক্রিপশনের জন্য, কোনও পৃথক অর্থ প্রদানের চেষ্টার জন্য অর্থ প্রদানের হ্রাস এবং পুনরুদ্ধার ঘটতে পারে।
পুনরুদ্ধারের পরে, প্লে বিলিং লাইব্রেরি queryPurchasesAsync()
পদ্ধতির মাধ্যমে আবার সাবস্ক্রিপশনটি ফিরিয়ে দেয়। যদি আপনি কোনও ব্যবহারকারী সাবস্ক্রিপশনের অধিকারী কিনা তা নির্ধারণ করতে যদি এই পদ্ধতিটি ব্যবহার করেন তবে আপনার অ্যাপ্লিকেশনটি অ্যাকাউন্ট হোল্ড থেকে পুনরুদ্ধারকারী সাবস্ক্রিপশনটি স্বয়ংক্রিয়ভাবে পরিচালনা করা উচিত।
সাবস্ক্রিপশনটি পুনরুদ্ধার করা হয় এবং সাবস্ক্রিপশন পুনরুদ্ধার করা হয় এবং ব্যবহারকারীর অ্যাক্সেস ফিরে পাওয়া উচিত তা অবহিত করার জন্য SubscriptionNotification
SUBSCRIPTION_RECOVERED
শুনুন। যদি আপনি এই বিজ্ঞপ্তিটি পাওয়ার পরে সাবস্ক্রিপশনের জন্য জিজ্ঞাসা করেন তবে expiryTime
ফিল্ডটি ভবিষ্যতে একটি টাইমস্ট্যাম্পে সেট করা আছে এবং subscriptionState
ক্ষেত্রটি আবার SUBSCRIPTION_STATE_ACTIVE
সেট করা হয়েছে:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": next_renewal_date,
...
}
],
}
যদি ব্যবহারকারী অ্যাকাউন্ট হোল্ড পিরিয়ড শেষ হওয়ার আগে তাদের অর্থ প্রদানের পদ্ধতিটি ঠিক না করে, আপনি পরিবর্তে SUBSCRIPTION_CANCELED
টাইপ সহ একটি আরটিডিএন পান। বাতিলকরণ পরিচালনা করার নির্দেশাবলীর জন্য, বাতিলকরণগুলি দেখুন। আপনি যখন এইভাবে বাতিল হওয়া সাবস্ক্রিপশনের জন্য জিজ্ঞাসা করবেন, তখন ফিরে আসা expiryTime
ফিল্ডটি অতীত টাইমস্ট্যাম্পে সেট করা আছে:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_CANCELED",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": timestamp_in_past,
...
}
],
}
অ্যাকাউন্ট হোল্ডের সময় আপনাকে বাতিল করার বিষয়ে অবহিত হওয়ার সাথে সাথেই আপনি টাইপ SUBSCRIPTION_EXPIRED
সহ একটি আরটিডিএনও পাবেন কারণ ব্যবহারকারী প্রদত্ত এনটাইটেলমেন্টের বাইরে এবং সাবস্ক্রিপশন বাতিল হওয়ার সাথে মন্থর হয়েছে। আপনি সাধারণত এইভাবে এই মেয়াদোত্তীর্ণতা পরিচালনা করতে পারেন।
ব্যবহারকারী একই সাবস্ক্রিপশন পরিকল্পনা বা অন্য কোনও পরিকল্পনা পুনরায় কেনার মাধ্যমে অ্যাক্সেস ফিরে পেতে পারেন যা আপনি তাদের অ্যাকাউন্টের সময় তাদের মূল ক্রয় থেকে সময় ধরে অ্যাপের মাধ্যমে অফার করেন। সেক্ষেত্রে, একটি নতুন ক্রয় টোকেন জারি করা হয় এবং নতুন মানটি SUBSCRIPTION_PURCHASED
ইভেন্টের অংশ হিসাবে ফিরে আসে যা এই নতুন উদাহরণটিকে উপস্থাপন করে।
অ্যাকাউন্ট অ্যাক্সেস এবং পুনরুদ্ধার হোল্ড
চিত্র 3 সাবস্ক্রিপশনের জন্য একটি সময়রেখা দেখায় যা অ্যাকাউন্ট হোল্ডে প্রবেশ করে এবং তারপরে ব্যবহারকারী যখন তাদের অর্থ প্রদানের পদ্ধতিটি ঠিক করে দেয় তখন পুনরুদ্ধার করে।

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

নিম্নলিখিত পয়েন্টগুলি মনে রাখা গুরুত্বপূর্ণ:
- সাবস্ক্রিপশন অ্যাকাউন্ট হোল্ডে প্রবেশের আগে, গুগল প্লে 48 ঘন্টা পর্যন্ত অর্থ প্রদানের পদ্ধতিটি চার্জ করার জন্য অতিরিক্ত প্রচেষ্টা করে। ব্যবহারকারী এই সময়ের মধ্যে সাবস্ক্রিপশন সুবিধাগুলি ধরে রাখে। এই পুনরায় চেষ্টা সময়টি কেটে যাওয়ার পরে, সাবস্ক্রিপশনটি তখন অ্যাকাউন্ট হোল্ডে প্রবেশ করে এবং ব্যবহারকারীর সাবস্ক্রিপশন সুবিধাগুলিতে অ্যাক্সেস হারাতে হবে।
- সাবস্ক্রিপশনটি সরাসরি অ্যাকাউন্টে প্রবেশ করে যখন সাবস্ক্রিপশনটি কোনও পেমেন্টের ব্যর্থ ফর্ম সহ কোনও বিরতিযুক্ত রাষ্ট্র থেকে পুনরায় শুরু হয়।
- যখন কোনও সাবস্ক্রিপশন অ্যাকাউন্ট হোল্ড থেকে পুনরুদ্ধার হয়, পুনর্নবীকরণের তারিখটি পুনরায় সেট করে।
মেয়াদোত্তীর্ণ
সাবস্ক্রিপশনটির মেয়াদ শেষ হয়ে গেলে, ব্যবহারকারীর সাবস্ক্রিপশনে অ্যাক্সেস হারাতে হবে। টাইপ SUBSCRIPTION_EXPIRED
সহ একটি SubscriptionNotification
বার্তা প্রেরণ করা হয়। আপনি যখন এই বিজ্ঞপ্তিটি পান, সর্বশেষ সাবস্ক্রিপশন সংস্থান পেতে গুগল প্লে বিকাশকারী এপিআইকে জিজ্ঞাসা করুন। আপনি subscriptionState
SUBSCRIPTION_STATE_EXPIRED
কিনা তা নিশ্চিত করার পরে, এনটাইটেলমেন্টটি সরিয়ে দিন এবং আপনার ব্যাকএন্ডে ক্রয় রাষ্ট্রকে অবৈধ হিসাবে নিবন্ধন করুন। সাবস্ক্রিপশন রিসোর্সটি নিম্নলিখিত উদাহরণের মতো দেখাচ্ছে:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_EXPIRED",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": expiration_time_in_past,
...
}
],
}
বাতিলকরণ
কোনও ব্যবহারকারী স্বেচ্ছায় প্লে সাবস্ক্রিপশন সেন্টার থেকে সাবস্ক্রিপশন বাতিল করতে পারেন বা অ্যাকাউন্ট হোল্ডে থাকার পরে যদি তারা পুনরুদ্ধার না করেন তবে তাদের সাবস্ক্রিপশনটি স্বয়ংক্রিয়ভাবে বাতিল করতে পারে। বিকাশকারীরা purchases.subscriptions.cancel
সাথে একটি বাতিলকরণও ট্রিগার করতে পারে S যখন বিলিং চক্রটি শেষ হয়, অ্যাক্সেস প্রত্যাহার করা উচিত।
একটি অ-স্থাপনা বাতিল করা, অটো-পুনর্নবীকরণ সাবস্ক্রিপশন একটি SUBSCRIPTION_CANCELED
বিজ্ঞপ্তি ট্রিগার করে। আপনি যখন এই বিজ্ঞপ্তিটি পাবেন, গুগল প্লে ডেভেলপার এপিআই থেকে ফিরে আসা সাবস্ক্রিপশন রিসোর্সটি subscriptionState
ক্ষেত্রটি SUBSCRIPTION_STATE_CANCELED
সেট করেছে এবং expiryTime
ক্ষেত্রটিতে ব্যবহারকারীর সাবস্ক্রিপশনে অ্যাক্সেস হারাতে হবে এমন তারিখ রয়েছে। যদি সেই তারিখটি অতীতে থাকে তবে ব্যবহারকারীর অবিলম্বে এনটাইটেলমেন্ট হারাতে হবে। এটি ঘটতে পারে, উদাহরণস্বরূপ, যদি কোনও ব্যবহারকারী অ্যাকাউন্টে থাকা অবস্থায় কোনও সাবস্ক্রিপশন বাতিল করে দেয় তবে অর্থ প্রদানের হ্রাসের কারণে।
বাতিল ক্রয়ের জন্য সাবস্ক্রিপশন রিসোর্সটি নিম্নলিখিত উদাহরণের অনুরূপ দেখায়:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_CANCELED",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": expiration_time,
...
}
],
}
কিস্তি সাবস্ক্রিপশনগুলির জন্য, যখন প্রতিশ্রুতি সময়কালের জন্য অর্থ প্রদান থাকে তখন একটি SUBSCRIPTION_CANCELLATION_SCHEDULED
বিজ্ঞপ্তি কোনও ব্যবহারকারী-উদ্যোগী বাতিলকরণের উপর প্রেরণ করা হয়। বাতিলকরণ মুলতুবি রয়েছে এবং বর্তমান প্রতিশ্রুতি সময়কালের শেষে কার্যকর হয়। আপনি যখন এই বিজ্ঞপ্তিটি পাবেন, গুগল প্লে ডেভেলপার এপিআই থেকে ফিরে আসা সাবস্ক্রিপশন রিসোর্সটি সাবস্ক্রিপশনস্টেট ক্ষেত্রটি SUBSCRIPTION_STATE_ACTIVE
সেট করেছে কারণ কিস্তি সাবস্ক্রিপশনটি প্রতিশ্রুতি সময়কাল শেষ না হওয়া পর্যন্ত এখনও সক্রিয় রয়েছে। তবে, একটি খালি মুলতুবি থাকা অবজেক্ট উপস্থিত রয়েছে। একটি SUBSCRIPTION_CANCELED
বিজ্ঞপ্তি পাঠানো হয় তারপরে প্রতিশ্রুতিবদ্ধ সময়কালের শেষে একটি SUBSCRIPTION_EXPIRED
।
একটি কিস্তি সাবস্ক্রিপশন ক্রয়ের জন্য সাবস্ক্রিপশন রিসোর্স যা বাতিল মুলতুবি রয়েছে তা নিম্নলিখিত উদাহরণের অনুরূপ:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
...
"lineItems": [
{
"productId": "sub_plan01",
"expiryTime": expiration_time,
"autoRenewingPlan": {
"autoRenewEnabled": true,
"recurringPrice": {
"currencyCode": "USD",
"units": "1",
"nanos": 990000000
},
"installmentDetails": {
"initialCommittedPaymentsCount": 6,
"remainingCommittedPaymentsCount": 5,
"pendingCancellation": {}
...
}
}
}
],
}
সাবস্ক্রিপশন রিসোর্সে বাতিল করা হয়েছে তা জানতে আপনি সাবস্ক্রিপশন রিসোর্সে বাতিল canceledStateContext
ক্ষেত্রটি দেখতে পারেন (উদাহরণস্বরূপ, সাবস্ক্রিপশনটি ব্যবহারকারী দ্বারা, সিস্টেম দ্বারা বা আপনার দ্বারা বাতিল করা হয়েছিল কিনা)। যদি সাবস্ক্রিপশনটি ব্যবহারকারী দ্বারা বাতিল করা হয় তবে আপনি কেন সাবস্ক্রিপশনটি বাতিল করেছেন তা জানতে আপনি userInitiatedCancellation
ক্ষেত্রটি দেখতে পারেন। এটি যোগাযোগের কৌশলগুলি অবহিত করতে সহায়তা করতে পারে।
যখন সাবস্ক্রিপশন বাতিল করা হয় তবে এখনও মেয়াদোত্তীর্ণ হয়নি, তখনও এটি queryPurchasesAsync()
থেকে ফিরে আসে। আপনি ব্যবহারকারীকে তাদের সাবস্ক্রিপশন বাতিল করা হয়েছে এবং তাদের মেয়াদ শেষ হওয়ার তারিখ দিচ্ছেন তা অবহিত করে আপনার অ্যাপ্লিকেশনটিতে একটি বার্তা প্রদর্শন করতে চাইতে পারেন।
প্রত্যাহার
আপনার ব্যাকএন্ড purchases.subscriptionsv2.revoke
ব্যবহার করে সাবস্ক্রিপশন প্রত্যাহার সহ বিভিন্ন কারণে একটি সাবস্ক্রিপশন বাতিল করা যেতে পারে s এই পরিস্থিতিতে, অবিলম্বে ব্যবহারকারীর এনটাইটেলমেন্টটি প্রত্যাহার করুন। টাইপ SUBSCRIPTION_REVOKED
সহ একটি SubscriptionNotification
বার্তা প্রেরণ করা হয় যখন এটি ঘটে। আপনি যখন এই বিজ্ঞপ্তিটি পাবেন, গুগল প্লে বিকাশকারী এপিআই থেকে ফিরে আসা সাবস্ক্রিপশন রিসোর্সটি subscriptionState
ক্ষেত্রটি SUBSCRIPTION_STATE_EXPIRED
সেট করেছে।
প্রত্যাহারিত ক্রয়ের জন্য সাবস্ক্রিপশন রিসোর্সটি নিম্নলিখিত উদাহরণের মতো দেখাচ্ছে:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_EXPIRED",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": expiration_time,
...
}
]
}
স্থগিত সাবস্ক্রিপশন
আপনি কোনও ব্যবহারকারীর এনটাইটেলমেন্ট প্রসারিত করতে চাইতে পারেন এমন বিভিন্ন কারণ রয়েছে। উদাহরণস্বরূপ, আপনি ব্যবহারকারীদের একটি বিশেষ প্রচার হিসাবে বিনামূল্যে অ্যাক্সেস সরবরাহ করতে চাইতে পারেন, যেমন একটি সিনেমা কেনার জন্য এক সপ্তাহ বিনামূল্যে দেওয়া বা শুভেচ্ছার অঙ্গভঙ্গি হিসাবে গ্রাহকদের বিনামূল্যে অ্যাক্সেস সরবরাহ করা। আপনি একটি অটো-পুনর্নবীকরণ সাবস্ক্রিপশনের জন্য পরবর্তী বিলিলং তারিখটি এগিয়ে নিতে প্লে ডেভেলপার এপিআই থেকে purchases.subscriptions.defer
পদ্ধতি ব্যবহার করতে পারেন। আপনি যখন এটি করেন, SUBSCRIPTION_DEFERRED
টাইপ সহ একটি SubscriptionNotification
বার্তা প্রেরণ করা হয়। মুলতুবি সময়কালে, ব্যবহারকারী সম্পূর্ণ অ্যাক্সেস সহ আপনার সামগ্রীতে সাবস্ক্রাইব করা হয় তবে চার্জ করা হয় না। সাবস্ক্রিপশন পুনর্নবীকরণের তারিখটি নতুন তারিখটি প্রতিফলিত করতে আপডেট করা হয়েছে।
প্রিপেইড পরিকল্পনার জন্য, আপনি মেয়াদোত্তীর্ণ সময় স্থগিত করতে ডিফার বিলিং এপিআই ব্যবহার করতে পারেন।
মুলতুবি সাবস্ক্রিপশনের জন্য সাবস্ক্রিপশন রিসোর্সটি নিম্নলিখিত উদাহরণের মতো দেখাচ্ছে:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": timestamp_in_future,
...
}
],
}
সাবস্ক্রিপশন বিরতি দেওয়া
ব্যবহারকারীদের তাদের সাবস্ক্রিপশন বিরতি দিতে সক্ষম করে আপনি স্বেচ্ছাসেবী মন্থন হ্রাস করতে পারেন। আপনি যখন বিরতি বৈশিষ্ট্যটি সক্ষম করেন, ব্যবহারকারীরা পুনরাবৃত্ত সময়ের উপর নির্ভর করে এক সপ্তাহ থেকে তিন মাসের মধ্যে তাদের সাবস্ক্রিপশনটি বিরতি দিতে বেছে নিতে পারেন।
সাবস্ক্রিপশন পুনরাবৃত্তি | সাপ্তাহিক | মাসিক | তিন মাস | ছয় মাস | বার্ষিক |
---|---|---|---|---|---|
উপলব্ধ বিরতি দৈর্ঘ্য * | ১ সপ্তাহ 2 সপ্তাহ 3 সপ্তাহ 4 সপ্তাহ | 1 মাস 2 মাস 3 মাস | 1 মাস 2 মাস 3 মাস | 1 মাস 2 মাস 3 মাস | N/A |
একটি সাবস্ক্রিপশন বিরতি বর্তমান বিলিং সময়কাল শেষ হওয়ার পরে কার্যকর হয়। সাবস্ক্রিপশনটি বিরতি দেওয়ার সময়, ব্যবহারকারীর সাবস্ক্রিপশনে অ্যাক্সেস নেই এবং তারা পুনর্নবীকরণের মূল্য প্রদান করে না। বিরতি সময়কালের শেষে, সাবস্ক্রিপশন পুনরায় শুরু হয় এবং গুগল সাবস্ক্রিপশনটি পুনর্নবীকরণের চেষ্টা করে। যদি জীবনবৃত্তান্ত সফল হয় তবে সাবস্ক্রিপশনটি আবার সক্রিয় হয়ে যায়। যদি কোনও অর্থ প্রদানের সমস্যার কারণে জীবনবৃত্তান্ত ব্যর্থ হয় তবে চিত্র 5 এবং 6 -তে প্রদর্শিত হিসাবে ব্যবহারকারী অ্যাকাউন্ট হোল্ড স্টেটে প্রবেশ করে:


কোনও ব্যবহারকারী বিরতি পিরিয়ডের সময় যে কোনও সময় ম্যানুয়ালি সাবস্ক্রিপশন পুনরায় শুরু করতেও বেছে নিতে পারেন, যেমন চিত্র 6 -তে দেখানো হয়েছে। যখন কোনও ব্যবহারকারী ম্যানুয়ালি পুনরায় শুরু করে, বিলিংয়ের তারিখটি ম্যানুয়াল পুনঃসূচনা তারিখে পরিবর্তিত হয়।
যখন কোনও ব্যবহারকারীর সাবস্ক্রিপশন বিরতি দেওয়া হয়, প্লে বিলিং লাইব্রেরি queryPurchasesAsync()
পদ্ধতির মাধ্যমে সাবস্ক্রিপশনটি ফেরত দেয় না। যদি সাবস্ক্রিপশনটি পুনরায় শুরু করা হয়, তবে queryPurchasesAsync()
পদ্ধতিটি এটি আবার ফিরিয়ে দেয়।
কোনও ব্যবহারকারী যখন তাদের সাবস্ক্রিপশন বিরতি দেয় তখন সচেতন হওয়ার জন্য আরটিডিএনএসের কাছে শুনুন। এই বিজ্ঞপ্তিগুলি আপনাকে আপনার অ্যাপ্লিকেশনটিতে আপনার ব্যবহারকারীদের অবহিত করার অনুমতি দেয় যে তারা তাদের সাবস্ক্রিপশনটি বিরতি দিয়েছে এবং এতে অ্যাক্সেস নেই। গুগল প্লেটিতে গভীর লিঙ্কটি ব্যবহার করে ব্যবহারকারীকে যে কোনও সময় ম্যানুয়ালি তাদের সাবস্ক্রিপশনটি পুনরায় চালু করার একটি উপায় সরবরাহ করা উচিত।
আপনার ব্যবহারকারী যখন তাদের সাবস্ক্রিপশনের বিরতি শুরু করে তখন SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED
টাইপ সহ একটি SubscriptionNotification
বার্তা প্রেরণ করা হয়। এই মুহুর্তে, ব্যবহারকারীর পরবর্তী পুনর্নবীকরণের তারিখ পর্যন্ত তাদের সাবস্ক্রিপশনে অ্যাক্সেস রাখা উচিত এবং সাবস্ক্রিপশন রিসোর্সে autoRenewEnabled = true
রয়েছে। subscriptionState
ক্ষেত্রের মান এই মুহুর্তে SUBSCRIPTION_STATE_ACTIVE
।
বিরতি কার্যকর হয়ে গেলে SUBSCRIPTION_PAUSED
টাইপ সহ একটি SubscriptionNotification
বার্তা প্রেরণ করা হয়। যখন এটি ঘটে তখন ব্যবহারকারীর তাদের সাবস্ক্রিপশনে অ্যাক্সেস হারাতে হবে এবং সাবস্ক্রিপশন রিসোর্সটিতে autoRenewEnabled = true
রয়েছে এবং subscriptionState
ক্ষেত্রটি SUBSCRIPTION_STATE_PAUSED
সেট করা আছে। আপনি যখন সাবস্ক্রিপশনটি PausedStateContext
অবজেক্টটি পরীক্ষা করে আবার পুনর্নবীকরণ করবেন বলে আশা করা যায়।
SUBSCRIPTION_RENEWED
টাইপ সহ একটি SubscriptionNotification
বার্তা প্রেরণ করা হয় যদি সাবস্ক্রিপশনটি বিরতি পিরিয়ডের শেষে স্বয়ংক্রিয়ভাবে পুনরায় শুরু করা হয় বা যদি ব্যবহারকারী ম্যানুয়ালি সাবস্ক্রিপশনটি পুনরায় চালু করতে বেছে নেন। এটি পুনর্নবীকরণে বর্ণিত হিসাবে পরিচালনা করা উচিত।
টাইপ SUBSCRIPTION_ON_HOLD
সহ একটি SubscriptionNotification
বার্তা প্রেরণ করা হয় যদি বিরতি দেওয়ার পরে সাবস্ক্রিপশনটি পুনরায় শুরু করার চেষ্টা করার সময় কোনও অর্থ প্রদানের ব্যর্থতা থাকে। অ্যাকাউন্ট হোল্ডে বর্ণিত হিসাবে এটি পরিচালনা করা উচিত।
পুনরায় সদস্যতা
অটো-পুনর্নবীকরণ সাবস্ক্রিপশন বেস পরিকল্পনাগুলির জন্য, গুগল প্লে স্টোরটি একটি রিসাবস্ক্রাইব বোতামটি প্রদর্শন করতে পারে। এই বোতামটি ব্যবহারকারীদের সাবস্ক্রিপশনে অ্যাক্সেস ফিরে পেতে দেয়। এটি বিভিন্ন কারণে উপস্থিত নাও হতে পারে, উদাহরণস্বরূপ যখন সাবস্ক্রিপশনটি দীর্ঘদিন আগে মেয়াদোত্তীর্ণ হয়েছিল।

যদিও বোতামটি সর্বদা পুনরায় জমা দেওয়া লেবেলযুক্ত, তবে এর কার্যকারিতা সাবস্ক্রিপশন অবস্থার উপর নির্ভর করে।
সাবস্ক্রিপশন বাতিল করা হলেও এখনও মেয়াদোত্তীর্ণ হয়নি, ব্যবহারকারী এখনও সাবস্ক্রাইব এবং সাবস্ক্রিপশন সুবিধাগুলি গ্রহণ করছেন। যদি ব্যবহারকারী পুনরায় জমা দেওয়ার জন্য ট্যাপ করে তবে বাতিলটি কার্যকরভাবে পূর্বাবস্থায় ফিরে আসে এবং সাবস্ক্রিপশনটি পুনর্নবীকরণ অব্যাহত থাকে। এই ক্রিয়াটি প্লে ডেভেলপার ডকুমেন্টেশন এবং এপিআইগুলিতে পুনরুদ্ধার হিসাবে পরিচিত।
একটি অটো-পুনর্নবীকরণ সাবস্ক্রিপশন মেয়াদ শেষ হয়ে যাওয়ার পরে, আপনি ব্যবহারকারীদের একই সাবস্ক্রিপশন বেস পরিকল্পনাটি কিনতে অনুমতি দিতে পারেন। এই ক্রিয়াটি প্লে ডেভেলপার ডকুমেন্টেশন এবং এপিআইগুলিতে পুনরায় জমা দেওয়া হয়েছে । আপনি প্লে কনসোলে বা এপিআই ব্যবহার করে প্রতিটি বেস পরিকল্পনার জন্য এই বিকল্পটি কনফিগার করতে পারেন।
মেয়াদ শেষ হওয়ার আগে পুনরুদ্ধার করুন
যদি আপনার অ্যাপ্লিকেশনটি কোনও ব্যবহারকারী সাবস্ক্রিপশনের অধিকারী কিনা তা নির্ধারণের জন্য যদি কেবল queryPurchasesAsync()
পদ্ধতির উপর নির্ভর করে তবে আপনার অ্যাপ্লিকেশনটি স্বয়ংক্রিয়ভাবে পুনরুদ্ধারগুলি পরিচালনা করতে হবে কারণ queryPurchasesAsync()
পদ্ধতিটি তাদের মেয়াদোত্তীর্ণের তারিখের আগে বাতিল হওয়া ক্রয়গুলি ফেরত অব্যাহত রাখে। একটি পুনরুদ্ধার করা সাবস্ক্রিপশন পুনর্নবীকরণ অব্যাহত রেখেছে যেন এটি বাতিল হয়নি।
যদি আপনার অ্যাপ্লিকেশনটি সাবস্ক্রিপশন স্টেটকে ব্যাকএন্ডের সাথে সিঙ্ক্রোনাইজ করে তবে আপনার SubscriptionNotification
বার্তাটি SUBSCRIPTION_RESTARTED
টাইপ সহ শুনতে হবে। আপনি এই আরটিডিএন পাওয়ার পরে, আপনার অ্যাপ্লিকেশনটি বিজ্ঞপ্তিতে সাড়া দিতে পারে, রেকর্ড করুন যে সাবস্ক্রিপশনটি এখন পুনর্নবীকরণের জন্য সেট করা আছে এবং আপনার অ্যাপ্লিকেশনটিতে পুনরুদ্ধার বার্তাগুলি প্রদর্শন করা বন্ধ করুন। সাবস্ক্রিপশন রিসোর্সটি নিম্নলিখিত উদাহরণের মতো দেখাচ্ছে:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": next_renewal_date
...
}
],
}
মেয়াদ শেষ হওয়ার পরে পুনরায় জমা দিন
যদি কোনও অটো-পুনর্নবীকরণ বেস পরিকল্পনাটি পুনরায় জমা দেওয়ার অনুমতি দেওয়ার জন্য গুগল প্লে কনসোল বা এপিআই ব্যবহার করে কনফিগার করা থাকে তবে ব্যবহারকারীরা গুগল প্লে স্টোরে একটি মেয়াদোত্তীর্ণ সাবস্ক্রিপশন পুনরায় কিনে নিতে পারেন।
এগুলি নতুন ক্রয়। গুগল প্লে একেবারে নতুন ক্রয়ের টোকেন জারি করে এবং আপনার ব্যাকএন্ডগুলি SUBSCRIPTION_PURCHASED
টাইপ সহ একটি আরটিডিএন গ্রহণ করে। এই ধরণের অ্যাপ্লিকেশন ক্রয়ের জন্য ক্রয়ের স্থিতি সেই ক্ষেত্রে মূল ক্রয়ের সাথে যুক্ত কোনও linkedPurchaseToken
অন্তর্ভুক্ত করে না, কারণ মূল সাবস্ক্রিপশন সম্পূর্ণরূপে মেয়াদ শেষ হয়ে গেছে। এগুলি এমন নতুন ক্রয় যা আপনার ব্যাকএন্ড অবশ্যই অন্য কোনও ক্রয়ের মতো প্রক্রিয়া এবং স্বীকৃতি দিতে হবে।
আপগ্রেড, ডাউনগ্রেড এবং পুনরায় জমা দেওয়া
যখন কোনও ব্যবহারকারী সাবস্ক্রিপশনটির মেয়াদ শেষ হওয়ার আগে আপনার অ্যাপ্লিকেশন থেকে বাতিল হওয়ার পরে আপগ্রেড করে, ডাউনগ্রেড করে বা সাইন আপ করে , তখন পুরানো সাবস্ক্রিপশনটি বাতিল করা হয় এবং একটি নতুন ক্রয় টোকেন দিয়ে একটি নতুন সাবস্ক্রিপশন তৈরি করা হয়।
তদতিরিক্ত, গুগল প্লে বিকাশকারী এপিআই থেকে ফিরে আসা সাবস্ক্রিপশন রিসোর্সটিতে একটি linkedPurchaseToken
ক্ষেত্র রয়েছে যা পুরানো ক্রয়কে নির্দেশ করে যা থেকে ব্যবহারকারী আপগ্রেড, ডাউনগ্রেড বা পুনরায় জমা দেওয়া হয়েছে। পুরানো সাবস্ক্রিপশনটি সন্ধান করতে এবং বিদ্যমান ব্যবহারকারী অ্যাকাউন্টটি সনাক্ত করতে আপনি সেই ক্ষেত্রের ক্রয় টোকেনটি ব্যবহার করতে পারেন যাতে আপনি একই অ্যাকাউন্টের সাথে নতুন ক্রয়টি সংযুক্ত করতে পারেন।
আপনার অ্যাপের কোনও ব্যবহারকারীর কাছে আপগ্রেড, ডাউনগ্রেড বা পুনরায় জমা দেওয়ার বিকল্পগুলি সরবরাহ করার আগে আপনাকে অবশ্যই বিদ্যমান সাবস্ক্রিপশনটি স্বীকার করতে হবে। যদি বিদ্যমান সাবস্ক্রিপশনটি এখনও স্বীকৃতি মুলতুবি থাকে তবে যে কোনও পরিকল্পনা পরিবর্তন বা পুনরায় জমা দেওয়া অবরুদ্ধ রয়েছে।
যদি ব্যবহারকারী সফলভাবে আপগ্রেড, ডাউনগ্রেড বা পুনরায় জমা দেওয়া কিনে তবে এটি একটি নতুন ক্রয় যা আপনাকে অবশ্যই স্বীকার করতে হবে। এটি করার প্রস্তাবিত উপায় হ'ল গুগল প্লে বিকাশকারী এপিআই ব্যবহার করা। সাবস্ক্রিপশন রিসোর্সটি নিম্নলিখিত উদাহরণের মতো দেখাচ্ছে:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
...
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
"linkedPurchaseToken": old_purchase_token,
...
"lineItems": [
{
"productId": "sub_variant_plan01",
"expiryTime": next_renewal_date,
"autoRenewingPlan": {
"autoRenewEnabled": true
}
}
],
}
দাম পরিবর্তন
অটো-পুনর্নবীকরণ সাবস্ক্রিপশন মূল্য পরিবর্তন এবং উপযুক্ত হলে ব্যবহারকারীদের অবহিত করার বিষয়ে শিখতে দাম পরিবর্তন সেরা অনুশীলন গাইড দেখুন।
অপ্ট-ইন হিসাবে বিদ্যমান গ্রাহকদের জন্য যখন দাম পরিবর্তনগুলি প্রয়োগ করা হয়, আপনি যদি নতুন দামটি নিশ্চিত করতে বা প্রত্যাখ্যান করার জন্য পদক্ষেপ নেন তবে আপনি একটি আরটিডিএন পাবেন।
অপ্ট-ইন মূল্য পরিবর্তনের ব্যবহারকারীর নিশ্চিতকরণ পরিচালনা করুন
যখন কোনও ব্যবহারকারী আপনার সাবস্ক্রিপশন মূল্য বৃদ্ধি গ্রহণ করে, আপনি SubscriptionNotification
বার্তা পাবেন টাইপ SUBSCRIPTION_PRICE_CHANGED_CONFIRMED
। অপ্ট-আউট দাম হ্রাস সহ, বা সাবস্ক্রিপশন মূল্য বৃদ্ধি যখন পুনর্নবীকরণ হয়, আপনি SubscriptionNotification
বার্তা পাবেন টাইপ SUBSCRIPTION_RENEWED
সহ। এই বিজ্ঞপ্তিটি অন্য কোনও পুনর্নবীকরণের মতো আচরণ করুন।
অপ্ট-ইন দাম বৃদ্ধি গ্রহণ করা হয় না এমন মামলাগুলি পরিচালনা করুন
যদি কোনও ব্যবহারকারী উচ্চতর দামে পুনর্নবীকরণের আগে আপনার অপ্ট-ইন মূল্য বৃদ্ধি গ্রহণ না করে থাকে তবে সেগুলি স্বয়ংক্রিয়ভাবে সাবস্ক্রিপশনযুক্ত এবং আপনি SubscriptionNotification
বার্তা পাবেন টাইপ SUBSCRIPTION_CANCELED
সহ। বাতিলকরণে বর্ণিত হিসাবে এই ইভেন্টটি পরিচালনা করুন।
ব্যবহারকারীরা একই প্রক্রিয়া অনুসরণ করে অপ্ট-আউট মূল্য বৃদ্ধির জন্য তাদের সাবস্ক্রিপশনগুলিও বাতিল করতে পারেন।
প্রিপেইড পরিকল্পনার জন্য লাইফসাইকেল পরিচালনা করুন
অটো-পুনর্নবীকরণ সাবস্ক্রিপশনগুলির মতো, আপনাকে অবশ্যই প্রতিটি নতুন ক্রয়ের পরে প্রিপেইড পরিকল্পনাগুলি স্বীকার করতে হবে। প্রিপেইড পরিকল্পনার ক্ষেত্রে, আপনাকে অবশ্যই প্রাথমিক ক্রয় এবং যে কোনও শীর্ষ-আপ উভয়ই সম্পূর্ণরূপে প্রক্রিয়া করতে হবে, কারণ ব্যবহারকারীকে প্রতিবার ক্রয়ের প্রবাহের মধ্য দিয়ে যেতে হবে।
সংক্ষিপ্ত প্রিপেইড পরিকল্পনার সময়কালের সম্ভাবনার কারণে, যত তাড়াতাড়ি সম্ভব ক্রয়টি স্বীকার করা গুরুত্বপূর্ণ। এক সপ্তাহ বা তার বেশি সময়কাল সহ প্রিপেইড পরিকল্পনাগুলি অবশ্যই 3 দিনের মধ্যে স্বীকৃত হতে হবে। এক সপ্তাহেরও কম সময়কালের সাথে প্রিপেইড পরিকল্পনাগুলি পরিকল্পনার সময়কালের অর্ধেকের মধ্যে অবশ্যই স্বীকৃত হতে হবে। উদাহরণস্বরূপ, বিকাশকারীদের তিন দিনের প্রিপেইড পরিকল্পনা ক্রয়ের স্বীকৃতি জানাতে 1.5 দিন সময় রয়েছে।
টাইপ SUBSCRIPTION_PURCHASED
সহ একটি SubscriptionNotification
বার্তা আপনার আরটিডিএন ক্লায়েন্টকে প্রেরণ করা হয় যখনই প্রতিটি টপ-আপ সহ কোনও প্রিপেইড প্ল্যান সাবস্ক্রিপশন কেনা হয়। সর্বশেষ প্রিপেইড প্ল্যান সাবস্ক্রিপশন রাষ্ট্রের জন্য চেক করতে purchases.subscriptionsv2.get
পদ্ধতিটি কল করুন।
টপ-আপ ক্রয়ের জন্য একটি নতুন ক্রয় টোকেন জারি করা হয় এবং আপনি নতুন সাবস্ক্রিপশন ক্রয় রাজ্যের অংশ হিসাবে linkedPurchaseToken
ক্ষেত্রে পূর্ববর্তী ক্রয় টোকেনটি পান। ক্রয় টোকেন সাবস্ক্রিপশন সাইনআপ থেকে মেয়াদ শেষ হওয়ার 60 দিন অবধি বৈধ। এই তারিখের পরে, ক্রয় টোকেন গুগল প্লে বিকাশকারী এপিআই কল করতে আর ব্যবহার করতে বৈধ নয়।
প্রিপেইড প্ল্যান ক্রয়ের জন্য সাবস্ক্রিপশন রিসোর্সটি নিম্নলিখিত উদাহরণের অনুরূপ দেখায়:
{
"kind": "androidpublisher#subscriptionPurchaseV2",
"startTime": "2022-04-22T18:39:58.270Z",
"regionCode": "US",
"subscriptionState": "SUBSCRIPTION_STATE_ACTIVE",
"latestOrderId": "GPA.3333-4137-0319-36762",
"acknowledgementState": "ACKNOWLEDGEMENT_STATE_ACKNOWLEDGED",
"lineItems": [
{
"productId": "prepaid_plan01",
"expiryTime": expiry_date,
"prepaidPlan": {
"allowExtendAfterTime": timestamp_after_which_topups_are_allowed
}
}
]
}
আপনি যখন এনটাইটেলমেন্টটি expiryTime
সময় শেষে শেষ হয় তখন আপনি দেখতে পাবেন। টপ-আপ ক্রয়গুলি এটি জমা করে এনটাইটেলমেন্টের সময় বাড়ায়। এর অর্থ হ'ল যদি ব্যবহারকারী তাদের মূল এনটাইটেলমেন্ট শেষ হওয়ার আগে শীর্ষে থাকে তবে নতুন সময়টি তাদের আগের মেয়াদ শেষ হওয়ার তারিখের শীর্ষে যুক্ত করা হয়।
আপনি আপনার অ্যাপ্লিকেশনটিতে একটি বার্তা প্রদর্শন করতে চাইতে পারেন ব্যবহারকারীকে জানিয়ে যে তাদের প্রিপেইড সাবস্ক্রিপশনগুলি একটি টপ-আপ দিয়ে বাড়ানো যেতে পারে। কোনও ব্যবহারকারী কখন টপ-আপ করতে সক্ষম হবেন তা জানতে, সাবস্ক্রিপশন রিসোর্সে allowExtendAfterTime
ক্ষেত্রটি পরীক্ষা করুন।
প্রিপেইড পরিকল্পনাগুলি অটো-পুনর্নবীকরণ করে না, তাই সেগুলি বাতিল করা যায় না। যদি কোনও ব্যবহারকারী কোনও প্রিপেইড পরিকল্পনা বাতিল করতে চায় তবে তারা এটিকে তার মেয়াদ শেষ হওয়ার তারিখে পৌঁছাতে পারে।