উপযুক্ত অ্যাপে শুধুমাত্র বিকল্প বিলিং (অর্থাৎ, ব্যবহারকারীর পছন্দ ছাড়াই) অফার করার জন্য কীভাবে API ইন্টিগ্রেট করতে হয় তা এই গাইড বর্ণনা করে। উপযুক্ততার প্রয়োজনীয়তা ও ভৌগোলিক পরিধি সহ এইসব প্রোগ্রাম সম্পর্কে আরও জানতে বিকল্প বিলিং পদ্ধতি সম্পর্কে দেখুন।
Play Billing Library সেট-আপ
আপনার Android অ্যাপে Play Billing Library ডিপেন্ডেন্সি যোগ করুন। বিকল্প বিলিং API ব্যবহার করতে হলে আপনাকে 6.1 বা তার পরের যেকোনও ভার্সন ব্যবহার করতে হবে।
Google Play-তে কানেক্ট করা
ইন্টিগ্রেশন প্রসেসের প্রথম ধাপগুলি Google Play বিলিং ইন্টিগ্রেশন গাইড-এ বর্ণিত ধাপগুলির মতোই, তবে আপনার BillingClient ইনিশিয়ালাইজ করার সময় কিছু পরিবর্তন করতে হবে:
- আপনার অ্যাপ যে শুধুমাত্র একটি
বিকল্প বিলিং সিস্টেম ব্যবহার করে তা বোঝাতে আপনাকে একটি নতুন পদ্ধতি কল করতে হবে:
enableAlternativeBillingOnly।
নিচের উদাহরণে এইসব পরিবর্তন সহ BillingClient শুরু করার
পদ্ধতি দেখানো হয়েছে:
Kotlin
var billingClient = BillingClient.newBuilder(context) .enableAlternativeBillingOnly() .build()
জাভা
private BillingClient billingClient = BillingClient.newBuilder(context)
.enableAlternativeBillingOnly()
.build();
BillingClient চালু করার পরে, ইন্টিগ্রেশন গাইডে যেভাবে বর্ণনা করা হয়েছে সেই অনুযায়ী আপনাকে Google Play-এর সাথে কানেকশন
স্থাপন করতে হবে।
উপলভ্যতা চেক করা
আপনার অ্যাপকে কল করে নিশ্চিত করতে হবে যে শুধু বিকল্প বিলিং উপলভ্য আছে:
isAlternativeBillingOnlyAvailableAsync.
শুধুমাত্র বিকল্প বিলিং উপলভ্য থাকলে, এই API BillingResponseCode.OK রিটার্ন করবে। আপনার অ্যাপ কীভাবে অন্যান্য রেসপন্স কোডের উত্তর দেবে সেই সম্পর্কে বিস্তারিত জানতে উত্তর ম্যানেজ করা দেখুন।
Kotlin
billingClient.isAlternativeBillingOnlyAvailableAsync(object : AlternativeBillingOnlyAvailabilityListener { override fun onAlternativeBillingOnlyAvailabilityResponse( billingResult: BillingResult ) { if (billingResult.responseCode != BillingResponseCode.OK) { // Handle failures such as retrying due to network errors, // handling alternative billing only being unavailable, etc. return } // Alternative billing only is available. Continue with steps in // the guide. } })
জাভা
billingClient.isAlternativeBillingOnlyAvailable(
new AlternativeBillingOnlyAvailabilityListener() {
@Override
public void onAlternativeBillingOnlyAvailabilityResponse(
BillingResult billingResult) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors,
// handling alternative billing only being unavailable,
// etc.
return;
}
// Alternative billing only is available. Continue with steps in
// the guide.
}
});
ব্যবহারকারীদের জন্য তথ্য সংক্রান্ত ডায়ালগ
শুধু বিকল্প বিলিংয়ের সাথে ইন্টিগ্রেট করতে, আপনার উপযুক্ত অ্যাপে অবশ্যই একটি
তথ্য স্ক্রিন দেখাতে হবে যা ব্যবহারকারীদের বুঝতে সাহায্য করে যে বিলিং Google Play
ম্যানেজ করবে না। প্রতিবার
বিকল্প বিলিং ফ্লো শুরু করার আগে
showAlternativeBillingOnlyInformationDialog API কল করে ব্যবহারকারীদের তথ্য স্ক্রিন দেখাতে হবে। ব্যবহারকারী যদি ইতিমধ্যেই
ডায়ালগটি স্বীকার করে থাকেন, তাহলে এই API ব্যবহার করলে সাধারণত ডায়ালগটি
আবার দেখানো হবে না। এমন কিছু পরিস্থিতি হতে পারে যেখানে কোনও ব্যবহারকারীকে আবার ডায়ালগ দেখানো হয়, যেমন
ব্যবহারকারী তার ডিভাইসে ক্যাশে মুছে দিলে।
Kotlin
// An activity reference from which the alternative billing only information // dialog will be launched. val activity: Activity = this.activity val listener: AlternativeBillingOnlyInformationDialogListener = AlternativeBillingOnlyInformationDialogListener { billingResult -> // check billingResult } val billingResult = billingClient.showAlternativeBillingOnlyInformationDialog( activity, listener )
জাভা
// An activity reference from which the alternative billing only information
// dialog will be launched.
Activity activity = ...;
AlternativeBillingOnlyInformationDialogListener listener =
new AlternativeBillingOnlyInformationDialogListener() {
@Override
public void onAlternativeBillingOnlyInformationDialogResponse(
BillingResult billingResult) {
// check billingResult
}
};
BillingResult billingResult =
billingClient.showAlternativeBillingOnlyInformationDialog(activity,
listener);
এই পদ্ধতি BillingResponseCode.OK রিটার্ন করলে, আপনার অ্যাপ ট্রানজ্যাকশন প্রসেস করতে পারবে। BillingResponseCode.USER_CANCELED হলে, আপনার অ্যাপকে showAlternativeBillingOnlyInformationDialog কল করে ব্যবহারকারীকে আবার ডায়ালগ দেখাতে হবে। অন্যান্য রেসপন্স কোডের জন্য রেসপন্স হ্যান্ডেলিং বিভাগ দেখুন।
Google Play-তে ট্রানজ্যাকশন সম্পর্কে অভিযোগ জানানো
বিকল্প বিলিং সিস্টেমের মাধ্যমে করা সমস্ত ট্রানজ্যাকশনের অবশ্যই রিপোর্ট করতে হবে
Google Play-তে, আপনার ব্যাকএন্ড থেকে Google Play Developer API-কে কল করে
২৪ ঘণ্টার মধ্যে, একটি externalTransactionToken প্রদান করে যা নিচে বর্ণিত
API ব্যবহার করে পাওয়া যায়। প্রতিটি এককালীন কেনাকাটা, প্রতিটি নতুন সাবস্ক্রিপশন এবং
বর্তমান সাবস্ক্রিপশনে কোনও আপগ্রেড/ডাউনগ্রেডের জন্য একটি নতুন
externalTransactionToken তৈরি করতে হবে।
externalTransactionToken পাওয়ার পরে কীভাবে ট্রানজ্যাকশনের ব্যাপারে অভিযোগ জানাতে হয় তা জানতে ব্যাকএন্ড ইন্টিগ্রেশন গাইড দেখুন।
Kotlin
billingClient.createAlternativeBillingOnlyReportingDetailsAsync(object : AlternativeBillingOnlyReportingDetailsListener { override fun onAlternativeBillingOnlyTokenResponse( billingResult: BillingResult, alternativeBillingOnlyReportingDetails: AlternativeBillingOnlyReportingDetails? ) { if (billingResult.responseCode != BillingResponseCode.OK) { // Handle failures such as retrying due to network errors. return } val externalTransactionToken = alternativeBillingOnlyReportingDetails?.externalTransactionToken // Send transaction token to backend and report to Google Play. } })
জাভা
billingClient.createAlternativeBillingOnlyReportingDetailsAsync(
new AlternativeBillingOnlyReportingDetailsListener() {
@Override
public void onAlternativeBillingOnlyTokenResponse(
BillingResult billingResult,
@Nullable AlternativeBillingOnlyReportingDetails
alternativeBillingOnlyReportingDetails) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
return;
}
String transactionToken =
alternativeBillingOnlyReportingDetails
.getExternalTransactionToken();
// Send transaction token to backend and report to Google Play.
}
});
উত্তরের ম্যানেজমেন্ট
উপরে উল্লেখ করা পদ্ধতি isAlternativeBillingOnlyAvailableAsync(),
showAlternativeBillingOnlyInformationDialog() এবং
createAlternativeBillingOnlyReportingDetailsAsync(), ত্রুটি হলে
BillingResponseCode.OK নয় এমন উত্তর দিতে পারে। সমস্যার সমাধান করার জন্য সাজেস্ট করা
পদ্ধতি নিচে বর্ণনা করা হল:
ERROR: এটি ইন্টার্নাল সমস্যা। ট্রানজ্যাকশনটি সম্পূর্ণ করবেন না। ব্যবহারকারী পরবর্তীকালে কেনাকাটা করার চেষ্টা করলে, তাকে তথ্য ডায়ালগ দেখানোর জন্যshowAlternativeBillingOnlyInformationDialog()কল করে আবার চেষ্টা করুন।FEATURE_NOT_SUPPORTED: বিকল্প বিলিং API বর্তমান ডিভাইসের Play Store-এ কাজ করে না। ট্রানজ্যাকশনটি সম্পূর্ণ করবেন না।USER_CANCELED: ট্রানজ্যাকশনটি সম্পূর্ণ করবেন না। ব্যবহারকারী পরবর্তীকালে কোনও কেনাকাটা করার চেষ্টা করলে, ব্যবহারকারীকে তথ্যের ডায়ালগ দেখানোর জন্যshowAlternativeBillingOnlyInformationDialog()আবার কল করুন।BILLING_UNAVAILABLE: এই ট্রানজ্যাকশন শুধুমাত্র বিকল্প বিলিংয়ের জন্য উপযুক্ত নয়, তাই এই প্রোগ্রামের অধীনে এটি প্রসেস করা যাবে না। এর কারণ হল ব্যবহারকারী এই প্রোগ্রামের জন্য উপযুক্ত দেশে থাকেন না অথবা আপনার অ্যাকাউন্ট প্রোগ্রামে সফলভাবে এনরোল করা হয়নি। সেটি যদি পরেরটি হয়, তাহলে Play Developer Console-এ আপনার এনরোলমেন্ট স্ট্যাটাস চেক করুন।DEVELOPER_ERROR: অনুরোধে সমস্যা আছে। এগিয়ে যাওয়ার আগে সমস্যা শনাক্ত ও সমাধান করতে ডিবাগ মেসেজ ব্যবহার করুন।NETWORK_ERROR, SERVICE_DISCONNECTED, SERVICE_UNAVAILABLE: এগুলি হল ক্ষণস্থায়ী সমস্যা যা আবার চেষ্টা করা উচিত। এর ক্ষেত্রেSERVICE_DISCONNECTEDআবার চেষ্টা করার আগে Google Play-এর সাথে কানেকশন আবার স্থাপন করুন।
বিকল্প বিলিং পরীক্ষা করা
আপনার বিকল্প বিলিং ইন্টিগ্রেশন পরীক্ষা করার জন্য লাইসেন্স টেস্টার ব্যবহার করা উচিত। লাইসেন্স টেস্টার অ্যাকাউন্ট থেকে শুরু করা ট্রানজ্যাকশনের জন্য আপনাকে ইনভয়েস করা হবে না। লাইসেন্স টেস্টার কনফিগার করা সম্পর্কে আরও তথ্য পেতে, অ্যাপ্লিকেশন লাইসেন্সিং সহ অ্যাপ-মধ্যস্থ বিলিং টেস্ট করা দেখুন।
পরবর্তী ধাপ
ইন-অ্যাপ ইন্টিগ্রেশন সম্পূর্ণ হয়ে গেলে, আপনি ব্যাকএন্ড ইন্টিগ্রেট করার জন্য প্রস্তুত।