শুধুমাত্র বিকল্প বিলিং এর জন্য ইন-অ্যাপ ইন্টিগ্রেশন নির্দেশিকা

এই নির্দেশিকাটি বর্ণনা করে যে কীভাবে যোগ্য অ্যাপে শুধুমাত্র বিকল্প বিলিং অফার করতে (অর্থাৎ ব্যবহারকারীর পছন্দ ছাড়া) API গুলিকে সংহত করতে হয়। যোগ্যতার প্রয়োজনীয়তা এবং ভৌগলিক সুযোগ সহ এই প্রোগ্রামগুলি সম্পর্কে আরও জানতে বিকল্প বিলিং সম্পর্কে দেখুন।

বিলিং লাইব্রেরি সেটআপ খেলুন

আপনার Android অ্যাপে প্লে বিলিং লাইব্রেরি নির্ভরতা যোগ করুন । বিকল্প বিলিং API ব্যবহার করার জন্য আপনাকে 6.1 বা উচ্চতর সংস্করণ ব্যবহার করতে হবে।

Google Play এর সাথে সংযোগ করুন

ইন্টিগ্রেশন প্রক্রিয়ার প্রথম ধাপগুলি Google Play বিলিং ইন্টিগ্রেশন গাইডে বর্ণিত ধাপগুলির মতোই, আপনার BillingClient শুরু করার সময় কিছু পরিবর্তন সহ:

  • আপনার অ্যাপটি শুধুমাত্র একটি বিকল্প বিলিং সিস্টেম ব্যবহার করে তা নির্দেশ করার জন্য আপনাকে একটি নতুন পদ্ধতিতে কল করতে হবে: enableAlternativeBillingOnly

নিম্নলিখিত উদাহরণটি এই পরিবর্তনগুলির সাথে একটি BillingClient শুরু করার প্রদর্শন করে:

কোটলিন


var billingClient = BillingClient.newBuilder(context)
    .enableAlternativeBillingOnly()
    .build()

জাভা

private BillingClient billingClient = BillingClient.newBuilder(context)
    .enableAlternativeBillingOnly()
    .build();

আপনি BillingClient শুরু করার পরে, ইন্টিগ্রেশন গাইডে বর্ণিত হিসাবে আপনাকে Google Play-তে একটি সংযোগ স্থাপন করতে হবে।

উপলব্ধতা পরীক্ষা করা হচ্ছে

আপনার অ্যাপ্লিকেশানটি নিশ্চিত করতে হবে যে শুধুমাত্র isAlternativeBillingOnlyAvailableAsync এ কল করে বিকল্প বিলিং উপলব্ধ।

শুধুমাত্র বিকল্প বিলিং উপলব্ধ থাকলে এই API BillingResponseCode.OK ফেরত দেবে। আপনার অ্যাপ কীভাবে অন্যান্য প্রতিক্রিয়া কোডগুলিতে প্রতিক্রিয়া জানাতে পারে তার বিশদ বিবরণের জন্য প্রতিক্রিয়া হ্যান্ডলিং পড়ুন।

কোটলিন


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 ব্যবহার করলে সাধারণত ডায়ালগটি আবার দেখানো হবে না। এমন সময় হতে পারে যখন ব্যবহারকারী তাদের ডিভাইসে ক্যাশে সাফ করে এমন পরিস্থিতিতে ডায়ালগটি আবার ব্যবহারকারীকে দেখানো হয়।

কোটলিন


// An activity reference from which the alternative billing only information
// dialog will be launched.
val activity : Activity = ...;

val listener : AlternativeBillingOnlyInformationDialogListener =
    AlternativeBillingOnlyInformationDialogListener { 
        override fun onAlternativeBillingOnlyInformationDialogResponse(
            billingResult: 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-তে লেনদেনের প্রতিবেদন করা

একটি বিকল্প বিলিং সিস্টেমের মাধ্যমে করা সমস্ত লেনদেন অবশ্যই 24 ঘন্টার মধ্যে আপনার ব্যাকএন্ড থেকে Google Play ডেভেলপার API-কে কল করে Google Play-তে রিপোর্ট করতে হবে , একটি externalTransactionToken প্রদান করে যা নীচে বর্ণিত API ব্যবহার করে প্রাপ্ত করা হয়। প্রতিটি এককালীন কেনাকাটা, প্রতিটি নতুন সাবস্ক্রিপশন এবং বিদ্যমান সাবস্ক্রিপশনে যেকোনো আপগ্রেড/ডাউনগ্রেডের জন্য একটি নতুন বাহ্যিক লেনদেন টোকেন তৈরি করা উচিত। externalTransactionToken পাওয়ার পর কিভাবে লেনদেনের রিপোর্ট করতে হয় তা জানতে ব্যাকএন্ড ইন্টিগ্রেশন গাইড দেখুন।

কোটলিন

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গুলি বর্তমান ডিভাইসে প্লে স্টোর দ্বারা সমর্থিত নয়৷ লেনদেনের সাথে এগিয়ে যাবেন না।
  • USER_CANCELED : লেনদেনের সাথে এগিয়ে যাবেন না৷ পরের বার ব্যবহারকারী যখন ক্রয় করার চেষ্টা করবে তখন ব্যবহারকারীর কাছে তথ্য ডায়ালগ প্রদর্শন করতে showAlternativeBillingOnlyInformationDialog() আবার কল করুন।
  • BILLING_UNAVAILABLE : লেনদেন শুধুমাত্র বিকল্প বিলিং এর জন্য যোগ্য নয় এবং তাই এই প্রোগ্রামের অধীনে এগিয়ে যাওয়া উচিত নয়। এটি হয় কারণ ব্যবহারকারী এই প্রোগ্রামের জন্য একটি যোগ্য দেশে নেই বা আপনার অ্যাকাউন্ট সফলভাবে প্রোগ্রামে নথিভুক্ত করা হয়নি। যদি এটি পরবর্তী হয়, তাহলে Play বিকাশকারী কনসোলে আপনার তালিকাভুক্তির স্থিতি পরীক্ষা করুন৷
  • DEVELOPER_ERROR : অনুরোধের সাথে একটি ত্রুটি আছে৷ এগিয়ে যাওয়ার আগে ত্রুটি সনাক্ত করতে এবং সংশোধন করতে ডিবাগ বার্তাটি ব্যবহার করুন৷
  • NETWORK_ERROR, SERVICE_DISCONNECTED, SERVICE_UNAVAILABLE : এগুলি হল ক্ষণস্থায়ী ত্রুটি যেগুলি আবার চেষ্টা করা উচিত৷ SERVICE_DISCONNECTED এর ক্ষেত্রে পুনরায় চেষ্টা করার আগে Google Play এর সাথে একটি সংযোগ পুনঃস্থাপিত করুন৷

বিকল্প বিলিং পরীক্ষা করুন

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

পরবর্তী পদক্ষেপ

একবার আপনি ইন-অ্যাপ ইন্টিগ্রেশন শেষ করলে, আপনি আপনার ব্যাকএন্ড ইন্টিগ্রেট করতে প্রস্তুত।