Yalnızca alternatif faturalandırma için uygulama içi entegrasyon kılavuzu

Bu kılavuzda, yalnızca alternatif faturalandırma sunmak için API'lerin nasıl entegre edileceği açıklanmaktadır (ör. kullanıcıya tercih seçeneği sunulmayan uygulamalar) Bu programlarla ilgili daha fazla bilgi edinmek için (uygunluk koşulları ve coğrafi kapsam dahil) Alternatif hakkında Faturalandırma.

Play Faturalandırma Kitaplığı kurulumu

Android uygulamanıza Play Faturalandırma Kitaplığı bağımlılığını ekleyin. To 6.1 veya üzeri sürümleri kullanmanız gereken alternatif faturalandırma API'leri.

Google Play'e bağlanın

Entegrasyon sürecindeki ilk adımlar aşağıda açıklananlarla aynıdır: Google Play Faturalandırma entegrasyon kılavuzunu takip edin. BillingClient'ı başlatma:

Aşağıdaki örnekte, bu yapılandırmalarla bir BillingClient'nin ilk kullanıma hazırlanması gösterilmektedir değişiklikler:

Kotlin


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

Java

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

BillingClient uygulamasını başlattıktan sonra, şurayla bağlantı kurmanız gerekir: Google Play'i etkinleştirin.

Müsaitlik Durumu Kontrol Ediliyor

Uygulamanız, alternatif faturalandırmanın yalnızca şu numarayı arayarak kullanılabildiğini onaylamalıdır: isAlternativeBillingOnlyAvailableAsync.

Yalnızca alternatif faturalandırma şöyle ise bu API, BillingResponseCode.OK döndürür. kullanılabilir. Uygulamanızın nasıl olması gerektiğiyle ilgili ayrıntılar için yanıt işleme bölümüne bakın diğer yanıt kodlarına yanıt verebilirsiniz.

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.
        }
    });

Java


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.
        }
    });

Kullanıcılar için bilgi iletişim kutusu

Yalnızca alternatif faturalandırma ile entegrasyon sağlamak için uygun uygulamanızda Kullanıcıların faturalandırmanın yönetilmeyeceğini anlamalarına yardımcı olan bilgi ekranı Google Play'den. Bilgi ekranı, Başlamadan önce showAlternativeBillingOnlyInformationDialog API her seferinde alternatif faturalandırma akışı ekleyin. Kullanıcı iletişim kutusu görüntülenirse bu API'nin kullanılması genellikle iletişim kutusunun tekrar. İletişim kutusunun bir kullanıcıya tekrar gösterildiği durumlar olabilir. örneğin, kullanıcının cihazındaki önbellekleri temizlemesi gibi.

Kotlin


// 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)

Java


// 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);

Bu yöntem BillingResponseCode.OK döndürürse uygulamanız devam edebilir önemli bir rol oynar. BillingResponseCode.USER_CANCELED durumunda uygulamanızın, kullanıcıya tekrar gönderebilirsiniz. Diğer yanıt kodları için yanıt işleme bölümünü inceleyin.

İşlemleri Google Play'e bildirme

Alternatif faturalandırma sistemi üzerinden gerçekleştirilen tüm işlemler bildirilmelidir Google Play Geliştirici API'sini çağırarak Google Play'e 24 saat içinde geçerli olacak şekilde, externalTransactionToken API aşağıda açıklanmıştır. Her biri için yeni bir externalTransactionToken oluşturulmalıdır tek seferlik satın alımlarda, her yeni abonelikte ve abonelikten yeni bir mevcut bir abonelikten yararlanın. Şu anda bir işlemi nasıl bildireceğinizi öğrenmek için externalTransactionToken alındıysa arka uç entegrasyon kılavuzuna bakın.

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.
        }
    });

Java


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.
        }
    });

Yanıt işleme

Yukarıdaki yöntemler isAlternativeBillingOnlyAvailableAsync(), showAlternativeBillingOnlyInformationDialog() ve createAlternativeBillingOnlyReportingDetailsAsync() dönebilir hata olması durumunda non-BillingResponseCode.OK yanıtları. Önerilen nasıl ele alındığı aşağıda açıklanmıştır:

  • ERROR: Bu dahili bir hatadır. İşleme devam etmeyin. Şu numarayı arayarak tekrar deneyin: Bilgileri görüntülemek için showAlternativeBillingOnlyInformationDialog() kullanıcıya bir sonraki seferde deneme yapmayı deneyin.
  • FEATURE_NOT_SUPPORTED: Alternatif faturalandırma API'leri Play Store'a gidin. İşleme devam etmeyin.
  • USER_CANCELED: İşleme devam etmeyin. Telefonla arama görüntülemek için tekrar showAlternativeBillingOnlyInformationDialog() tekrar düzenleme girişiminde bulunacağı zaman kullanıcıya değeri için teklif verirsiniz.
  • BILLING_UNAVAILABLE: İşlem, Bu program kapsamında devam edilmemelidir. Bu Bunun nedeni, kullanıcının bu programa uygun bir ülkede olmaması veya hesabınız programa başarıyla kaydedilmedi. Ülke son olarak, Play Console'da kayıt durumunuzu kontrol edin.
  • DEVELOPER_ERROR: İstekle ilgili bir hata var. Hata ayıklama mesajını kullanma inceleyin.
  • NETWORK_ERROR, SERVICE_DISCONNECTED, SERVICE_UNAVAILABLE: Bunlar geçici hatalar olup olmadığını kontrol edin. Projede SERVICE_DISCONNECTED, şu tarihten önce Google Play ile yeniden bağlantı kurdu: yeniden deneniyor.

Alternatif faturalandırmayı test etme

Alternatif faturalandırma entegrasyonunuzu test etmek için lisans test kullanıcıları kullanılmalıdır. Siz Lisans test kullanıcısı tarafından başlatılan işlemler için faturalandırılmayacaktır. hesaplar. Daha fazla bilgi için Uygulama içi faturalandırmayı uygulama lisanslama ile test etme başlıklı makaleye bakın. lisans test kullanıcılarını yapılandırma hakkında bilgi edinin.

Sonraki adımlar

Uygulama içi entegrasyonu tamamladıktan sonra, uygulamanızı arka uç.