Dijital abonelik işlemleri oluşturma

Bu kılavuzda, kullanıcıların aboneliklerinizi satın alabilmesi için dijital abonelik işlemlerini Conversational Action'ınıza nasıl ekleyeceğiniz açıklanmaktadır.

Anahtar terimler: Abonelik dijital ürünü, kullanıcının online dergi gibi yinelenen şekilde ödeme yapmasını gerektiren bir stok tutma birimidir (SKU). Bu, kullanıcının manuel olarak satın almak zorunda olduğu tüketilebilir dijital ürün ile otomatik olarak yalnızca bir kez satın alınan tüketilebilir olmayan dijital üründen farklıdır.

Dijital abonelikler hakkında daha fazla bilgi için aboneliğe özgü özellikler hakkındaki Android belgelerine bakın.

İşlem akışı

Bu kılavuzda, bir dijital ürün işlem akışında gerçekleşen her geliştirme adımı özetlenmektedir. İşleminiz dijital ürünlerle ilgili işlemleri gerçekleştirirken aşağıdaki akışı kullanır:

  1. Dijital satın almalar API istemcisi oluşturma: İşleminiz Google Play envanterinizle iletişim kurmak ve işlem yapmak için digital purchases API'yi kullanıyor. İşleminiz başka herhangi bir işlem yapmadan önce dijital satın alma API'si ile iletişim kurmak için hizmet anahtarı içeren bir JWT istemcisi oluşturur.
  2. Bilgi toplama: İşleminiz bir işleme hazırlanmak için kullanıcı ve Google Play envanterinizle ilgili temel bilgileri toplar.
    1. İşlem gereksinimlerini doğrulama: İşleminiz, kullanıcının işlem yapabildiğinden emin olmak için satın alma akışının başında dijital işlem gereksinimleri yardımcısını kullanır.
    2. Kullanılabilir envanteri toplama: İşleminiz Google Play envanterinizi kontrol eder ve şu anda hangi öğelerin satın alınabileceğini belirler.
  3. Siparişi oluşturma: İşleminiz kullanıcıya mevcut dijital ürünleri sunar. Böylece kullanıcı satın almak için bir ürün seçebilir.
  4. Satın alma işlemini tamamlama: İşleminiz, kullanıcının Google Play Store'da seçimini kullanarak bir satın alma işlemi başlatmak için dijital satın alma işlemleri API'sini kullanır.
  5. Sonucu işleme: İşleminiz işlem için bir durum kodu alır ve kullanıcıya satın alma işleminin başarılı olduğunu bildirir (veya ek adımlar uygular).

Kısıtlamalar ve inceleme kuralları

İşlem içeren işlemler için ek politikalar geçerlidir. İşlemleri içeren işlemleri incelememiz birkaç haftayı bulabilir. Bu nedenle, yayın planınızı planlarken bu süreyi de hesaba katın. İnceleme sürecini kolaylaştırmak için İşleminizi incelemeye göndermeden önce işlemlerle ilgili politikalara ve kurallara uyduğunuzdan emin olun.

Dijital ürün satan işlemler yalnızca aşağıdaki ülkelerde uygulanabilir:

  • Avustralya
  • Brezilya
  • Kanada
  • Endonezya
  • Japonya
  • Meksika
  • Rusya
  • Singapur
  • Tayland
  • Türkiye
  • Birleşik Krallık
  • Amerika Birleşik Devletleri

Ön koşullar

Dijital işlemleri İşleminize dahil etmeden önce aşağıdaki ön koşulların karşılanması gerekir:

Android Uygulaması İlişkilendirme

Şu anda Google Play Console'da faturalandırma izni olan bir Android uygulamanız yoksa aşağıdaki adımları uygulayın:

  1. Android Studio'da veya istediğiniz Android IDE'de yeni bir proje oluşturun. Çok temel bir uygulama oluşturmak için proje kurulumu sırasındaki seçenekleri belirleyin.
  2. Projeye com.mycompany.myapp gibi bir paket adı verin. com.example içeren paketleri Play Console'a yükleyemeyeceğiniz için bu adı varsayılan olarak bırakmayın.
  3. Uygulamanızın AndroidManifest.xml dosyasını açın.
  4. Aşağıdaki kod satırını manifest öğesinin içine ekleyin:

    <uses-permission android:name="com.android.vending.BILLING" />

    AndroidManifest.xml dosyanız aşağıdaki kod bloğu gibi görünmelidir:

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        package="com.mycompany.myapp">
        <uses-permission android:name="com.android.vending.BILLING" />
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme" />
    </manifest>
    
  5. Uygulamanızı imzalı bir APK olarak oluşturun. Android Studio'da şu adımları uygulayın:

    1. Derleme, İmzalanmış Paket / APK Oluştur'a gidin.
    2. İleri'yi tıklayın.
    3. Anahtar deposu yolu bölümünde Yeni oluştur'u tıklayın.
    4. Her bir alanı doldurup ardından OK (Tamam) seçeneğini tıklayın. Anahtar deposu şifrenizi ve Anahtar şifrenizi not edin ve bunları daha sonra kullanacağınız için güvenli bir yerde saklayın.
    5. İleri'yi tıklayın.
    6. Sürüm'ü seçin.
    7. V1 (JAR Signature) (V1 (JAR İmzası)) seçeneğini belirleyin.
    8. Son'u tıklayın.
    9. Birkaç saniye sonra, Android Studio bir app-release.apk dosyası oluşturur. Daha sonra kullanmak için bu dosyayı bulun.
  6. Google Play Console'da yeni bir uygulama oluşturun.

  7. Uygulama sürümleri'ne gidin.

  8. Kapalı kanallar bölümünde Yönet'e, ardından Alfa'ya gidin.

  9. Sürüm Oluştur düğmesini tıklayın.

  10. Google'ın imzalama anahtarınızı yönetmesine ve korumasına izin ver bölümünde imzalama anahtarı bilgilerinizi girin.

  11. APK dosyanızı yükleyin.

  12. Kaydet'i tıklayın.

Dijital ürünlerinizi oluşturun

Şu anda Play Console'da hiç dijital ürününüz yoksa şu adımları uygulayın:

  1. Google Play Console'da Uygulama içi ürünler'e, ardından Abonelikler'e gidin. Bir uyarı görürseniz Android uygulaması oluşturmak için önceki talimatları uygulayın veya satıcı profili oluşturmak için bağlantıyı tıklayın.
  2. Abonelik oluştur'u tıklayın.
  3. Dijital ürününüzle ilgili alanları doldurun. İşleminizde bu ürüne nasıl referans vereceğinizi gösteren Ürün Kimliği'ni not edin.
  4. Kaydet'i tıklayın.
  5. Satmak istediğiniz her ürün için 2-4 arasındaki adımları tekrarlayın.

Google Play Console&#39;daki örnek abonelikler.

Actions projenizi hazırlama

Dijital ürünleriniz Google Play Console'da oluşturulduktan sonra dijital işlemleri etkinleştirmeniz ve Actions projenizi Play uygulamanızla ilişkilendirmeniz gerekir.

Kurulum

Actions projenizde dijital ürün işlemlerini etkinleştirmek için şu adımları izleyin:

  1. Actions Console'da projenizi açın veya yeni bir proje oluşturun.
  2. Dağıt'a, ardından Dizin bilgileri'ne gidin.
  3. Ek bilgiler ve İşlemler bölümünde, İşlemleriniz dijital ürünlerle ilgili işlemler yapmak için Dijital Satın Alma API'sini kullanıyor mu? seçeneğinin altındaki Evet kutusunu işaretleyin.
  4. Kaydet'i tıklayın.

Dijital ürünler API anahtarı oluşturma

Digital Products API'ye istek göndermek için Actions konsolu projenizle ilişkilendirilmiş bir JSON hizmet hesabı anahtarı indirmeniz gerekir.

Hizmet hesabı anahtarınızı almak için şu adımları uygulayın:

  1. Actions Console'da sağ üst köşedeki üç nokta simgesini, ardından Proje ayarları'nı tıklayın.
  2. İşleminizin Proje Kimliğini bulun.
  3. "<project_id>" kısmını projenizin kimliğiyle değiştirerek şu bağlantıyı tıklayın: https://console.developers.google.com/apis/credentials?project=project_id
  4. Ana gezinme menüsünde Kimlik bilgileri'ne gidin.
  5. Açılan sayfada Kimlik bilgisi oluştur'u ve ardından Hizmet hesabı anahtarı'nı tıklayın.
  6. Hizmet Hesabı'na gidin ve Yeni Hizmet Hesabı'nı tıklayın.
  7. Hizmet hesabına dijital işlemler gibi bir ad verin.
  8. Oluştur'u tıklayın.
  9. RolProje > Sahip olarak ayarlayın.
  10. Devam'ı tıklayın.
  11. Anahtar Oluştur'u tıklayın.
  12. JSON anahtar türünü seçin.
  13. Create key'i (Anahtar oluştur) tıklayın ve JSON hizmet hesabı anahtarını indirin.

Bu hizmet hesabı anahtarını güvenli bir yere kaydedin. Dijital satın alma işlemleri API'si için bir müşteri oluşturmak amacıyla istek karşılama işleminizde bu anahtarı kullanacaksınız.

Play envanterinize bağlanma

Dijital ürünlerinize Actions projesinden erişmek için web alanınızı ve uygulamanızı projenizle bağlı mülkler olarak ilişkilendirin.

Play Console web alanınızı ve uygulamanızı Actions projenize bağlamak için şu adımları uygulayın:

  1. Actions Console'da Dağıt'a ve ardından Marka doğrulaması'na gidin.
  2. Herhangi bir mülk bağlamadıysanız öncelikle bir web sitesi bağlayın:

    1. Web mülkü (</>) düğmesini tıklayın.
    2. Web alanınızın URL'sini girin ve Bağlan'ı tıklayın.

    Google, söz konusu web alanı için Google Search Console'da doğrulanan kişiye daha fazla talimat içeren bir e-posta gönderir. Bu e-postanın alıcısı bu adımları uyguladıktan sonra web sitesi Marka doğrulaması altında görünecektir.

  3. En az bir bağlı web siteniz olduğunda Android uygulamanızı bağlamak için aşağıdaki adımları uygulayın:

    1. Actions Console'da Dağıt'a ve ardından Marka doğrulaması'na gidin.
    2. Uygulama Bağlayın'ı tıklayın.
    3. Görüntülenen sayfada, Play Console'da web alanınızı doğrulama talimatlarını uygulayın. Dijital ürünlerinizi içeren Play uygulamasını seçin ve web alanı URL'sini tam olarak Marka doğrulama sayfasında gösterildiği şekilde girin.

      Google bir kez daha alanın doğrulanmış sahibine bir doğrulama e-postası gönderir. Ekibimiz doğrulamayı onayladıktan sonra Play uygulamanız Marka doğrulaması altında görünecektir.

    4. Play'deki satın alma işlemlerine erişme seçeneğini etkinleştirin.

Actions projesine bağlı web sitesi ve uygulamaları gösteren resim.

Satın alma sürecinizi oluşturun

Actions projeniz ve dijital ürün envanteriniz hazır olduğunda görüşme istek karşılama webhook'unuzda dijital ürün satın alma akışı oluşturun.

1. Digital Purchase API istemcisi ayarlama

Görüşme istek karşılama webhook'unuzda hizmet hesabınızın JSON anahtarı ve https://www.googleapis.com/auth/actions.purchases.digital kapsamıyla bir JWT istemcisi oluşturun.

Aşağıdaki Node.js kodu, dijital satın alma işlemleri API'si için bir JWT istemcisi oluşturur:

  const serviceAccount = {'my-file.json'};
  const request = require('request');
  const {google} = require('googleapis');

  const jwtClient = new google.auth.JWT(
    serviceAccount.client_email, null, serviceAccount.private_key,
    ['https://www.googleapis.com/auth/actions.purchases.digital'],
    null
  );

2. Bilgi toplama

Kullanıcı satın alma işlemi gerçekleştirmeden önce İşleminiz kullanıcının satın alma özelliği ve envanterinizde hangi ürünlerin mevcut olduğu hakkında bilgi toplar.

2. a. İşlem gereksinimlerini doğrulayın

Kullanıcıya satın alma seçeneği sunmadan önce, hesabının işlem gerçekleştirmek üzere ayarlandığından emin olmak iyi bir uygulamadır. Kullanıcının doğrulandığından, işlemi izin verilen bir yüzeyde (akıllı ekran, akıllı hoparlör veya Android) gerçekleştirdiğinden ve dijital işlemlerin desteklendiği bir yerel ayarda bulunduğundan emin olan bir DigitalPurchaseCheck sahnesine geçiş yapmalısınız.

Dijital satın alma kontrol sahnesi oluşturmak için aşağıdaki adımları izleyin:

  1. Sahneler sekmesinden DigitalPurchaseCheck adlı yeni bir Sahne ekleyin.
  2. Slot doldurma bölümünde, yeni bir alan eklemek için + simgesini tıklayın.
  3. Tür seçin'in altında, alan türü olarak actions.type.DigitalPurchaseCheckResult'yi seçin.
  4. Alan adı alanında, alana DigitalPurchaseCheck adını girin.
  5. Alan değeri yazma işlevini özelleştir onay kutusunu işaretleyin (varsayılan olarak etkindir).
  6. Kaydet'i tıklayın.

Dijital satın alma kontrolü aşağıdaki sonuçlardan biriyle sonuçlanır:

  • Şartlar karşılanırsa oturum parametresi bir başarı koşulu ile ayarlanır ve kullanıcının dijital ürünler satın almasına izin verme işlemine devam edebilirsiniz.
  • Koşullardan biri veya daha fazlası karşılanamazsa oturum parametresi bir hata koşuluyla ayarlanır. Bu durumda konuşmayı işlem deneyiminden uzaklaştırmalı veya sonlandırmalısınız.

Dijital satın alma kontrolü sonucunu ele almak için aşağıdaki adımları uygulayın:

  1. Sahneler sekmesinden, yeni oluşturduğunuz DigitalPurchaseCheck sahnesini seçin.
  2. Koşul bölümünde, yeni bir koşul eklemek için + simgesini tıklayın.
  3. Başarı koşulunu kontrol etmek için metin alanına aşağıdaki koşul söz dizimini girin:

    scene.slots.status == "FINAL" && session.params.DigitalPurchaseCheck.resultType == "CAN_PURCHASE"
    
  4. İmlecinizi yeni eklediğiniz koşulun üzerine getirin ve if scene.slots.status == "FINAL" koşulunun önüne yerleştirmek için yukarı oku tıklayın.

  5. İstemleri gönder'i etkinleştirin ve kullanıcıya bir işlem yapmaya hazır olduğunu bildiren basit bir istem sağlayın:

    candidates:
      - first_simple:
          variants:
            - speech: >-
                You are ready to purchase digital goods.
    
  6. Transition (Geçiş) bölümünde başka bir sahne seçin. Kullanıcının görüşmeye devam etmesine ve işlem gerçekleştirmesine olanak tanıyın.

  7. Koşulu seçin else if scene.slots.status == "FINAL".

  8. İstemleri gönder'i etkinleştirin ve kullanıcıya bir işlem yapamayacağını bildiren basit bir istem sağlayın:

    candidates:
      - first_simple:
          variants:
            - speech: Sorry you cannot perform a digital purchase.
    
  9. Görüşmeyi sonlandırmak için Geçiş bölümünde Görüşmeyi sonlandır'ı seçin.

2. b. Kullanılabilir envanteri toplama

Şu anda kullanılabilir olan Play Store envanterinizi istemek için dijital satın almalar API'sini kullanın, ardından bunu her ürün için bir JSON nesnesi dizisi halinde oluşturun. Kullanıcıya satın alınabilecek seçenekleri göstermek için daha sonra bu diziye başvurursunuz.

Dijital ürünlerinizin her biri, JSON biçiminde bir SKU olarak temsil edilir. Aşağıdaki Node.js kodu her SKU'nun beklenen biçimlendirmesini özetlemektedir:

body = {
  skus: [
    skuId: {
      skuType: one of "SKU_TYPE_IN_APP" or "SKU_TYPE_SUBSCRIPTION"
      id: string,
      packageName: string
    }
    formattedPrice: string,
    title: string,
    description: string
  ]
}

https://actions.googleapis.com/v3/packages/{packageName}/skus:batchGet uç noktasına bir POST isteği gönderin. Burada {packageName}, Google Play Console'da uygulamanızın paket adıdır (ör. com.myapp.digitalgoods) ve sonucu SKU nesnelerinden oluşan bir dizi olarak biçimlendirin.

Ortaya çıkan dizide yalnızca belirli dijital ürünleri almak için body.ids üzerinden satın alınabilir hale getirmek istediğiniz dijital ürünlerin ürün kimliklerini (Google Play Console'da her bir uygulama içi ürünün altında gösterildiği şekilde) listeleyin.

Aşağıdaki Node.js kodu, dijital satın alma işlemleri API'sindeki kullanılabilir ürünlerin listesini ister ve sonucu bir SKU dizisi olarak biçimlendirir:

return jwtClient.authorize((err, tokens) => {
    if (err) {
      throw new Error(`Auth error: ${err}`);
    }

    const packageName = 'com.example.projectname';

    request.post(`https://actions.googleapis.com/v3/packages/${packageName}/skus:batchGet`, {
      'auth': {
        'bearer': tokens.access_token,
      },
      'json': true,
      'body': {
        'conversationId': conv.session.id,
        'skuType': 'SKU_TYPE_IN_APP',
        // This request is filtered to only retrieve SKUs for the following product IDs
        'ids': ['annual.subscription']
      },
    }, (err, httpResponse, body) => {
      if (err) {
        throw new Error(`API request error: ${err}`);
      }
      console.log(`${httpResponse.statusCode}: ${httpResponse.statusMessage}`);
      console.log(JSON.stringify(body));
    });
  });
});

3. Siparişi oluşturmak

Kullanıcının dijital satın alma işlemini başlatmak için, satın alınabilecek dijital ürünlerinizin bir listesini sunun. Envanterinizi temsil etmek ve kullanıcıdan seçim yapmasını istemek için çeşitli zengin yanıt türleri kullanabilirsiniz.

Aşağıdaki Node.js kodu, SKU nesnelerinden oluşan bir envanter dizisini okur ve her biri için bir liste öğesi içeren bir liste yanıtı oluşturur:

const items = [];
const entries = [];
skus.forEach((sku) => {
   const key = `${sku.skuId.skuType},${sku.skuId.id}`
   items.push({
       key: key
   });
   entries.push({
       name: key,
       synonyms: [],
       display: {
           title: sku.title,
           description: `${sku.description} | ${sku.formattedPrice}`,
       }
   });
});

conv.session.typeOverrides = [{
   name: 'type_name',
   mode: 'TYPE_REPLACE',
   synonym: {
       entries: entries
   }
}];

conv.add(new List({
   title: 'List title',
   subtitle: 'List subtitle',
   items: items,
}));

Kullanıcı seçiminden satın alma oluşturun

Kullanıcı bir öğe seçtiğinde siparişi oluşturabilirsiniz. Bunu yapmak için seçili öğeyle ilişkilendirilmiş alanda siparişi oluşturmak için webhook'unuzu çağırabilirsiniz. Sipariş karşılamanızdaki sipariş verilerini bir oturum parametresine kaydedin. Sıra nesnesi aynı oturum için sahnelerde kullanılır.

conv.session.params.purchase = {
  "@type": "type.googleapis.com/google.actions.transactions.v3.CompletePurchaseValueSpec",
  "skuId": {
    "skuType": "<SKU_TYPE_IN_APP>",
    "id": "<SKU_ID>",
    "packageName": "<PACKAGE_NAME>"
  },
  "developerPayload": ""
};

Actions Builder'da, alanı yukarıdaki sipariş nesnesiyle yapılandırmak için JSON düzenleyicisini kullanabilirsiniz. Her iki uygulama da CompletePurchaseValueSpec için aynı biçimi kullanır. Bunu JSON webhook yük referansında bulabilirsiniz.

4. Satın alma işlemini tamamlayın

Kullanıcı bir öğe seçtiğinde satın alma işlemini tamamlayabilirsiniz. Seçilen öğeyle ilişkili alanı doldurduktan sonra, eksiksiz bir satın alma işlemi gerçekleştiren bir sahneye geçiş yapmanız gerekir.

Eksiksiz bir satın alma sahnesi oluşturun

  1. Sahneler sekmesinden CompletePurchase adlı yeni bir sahne ekleyin.
  2. Slot doldurma bölümünde, yeni bir alan eklemek için + simgesini tıklayın.
  3. Tür seçin'in altında, alan türü olarak actions.type.CompletePurchaseValue'yi seçin.
  4. Alan adı alanında, alana CompletePurchase adını girin.
  5. Alan değeri yazma işlevini özelleştir onay kutusunu işaretleyin (varsayılan olarak etkindir).
  6. Alanı yapılandır'ın altındaki açılır listeden Use session parameter'yi seçin.
  7. Alanı yapılandır bölümünde,siparişi metin alanına depolamak için kullanılan oturum parametresinin adını girin (ör. $session.params.purchase).
  8. Kaydet'i tıklayın.

5. Sonucu yönetin

actions.type.CompletePurchaseValue türündeki bir alan aşağıdaki sonuçlara sahip olabilir:

  • PURCHASE_STATUS_OK: Satın alma işlemi başarılı oldu. Bu noktada işlem tamamlanır. Bu nedenle işlem akışından çıkıp görüşmenize geri dönün.
  • PURCHASE_STATUS_ALREADY_OWNED: Kullanıcı bu öğeye zaten sahip olduğu için işlem başarısız oldu. Kullanıcının önceki satın alma işlemlerini kontrol ederek ve gösterilen öğeleri, zaten sahip olduğu ürünleri yeniden satın alma seçeneğinin olmaması için uyarlayarak bu hatayı önleyin.
  • PURCHASE_STATUS_ITEM_UNAVAILABLE: İstenen öğe mevcut olmadığından işlem başarısız oldu. Satın alma zamanı yaklaştığında mevcut SKU'ları kontrol ederek bu hatayı önleyin.
  • PURCHASE_STATUS_ITEM_CHANGE_REQUESTED: Kullanıcı başka bir ürün satın almaya karar verdiği için işlem başarısız oldu. Kullanıcının hemen başka bir karar verebilmesi için sipariş oluşturma sırasında tekrar istem kullanın.
  • PURCHASE_STATUS_USER_CANCELLED: Kullanıcı, satın alma akışını iptal ettiği için işlem başarısız oldu. Kullanıcı akıştan erken çıktığı için kullanıcıya işlemi yeniden denemek mi yoksa işlemden tamamen çıkmak mı istediğini sorun.
  • PURCHASE_STATUS_ERROR: İşlem bilinmeyen bir nedenden dolayı başarısız oldu. Kullanıcıya işlemin başarısız olduğunu bildirin ve tekrar denemek isteyip istemediğini sorun.
  • PURCHASE_STATUS_UNSPECIFIED: İşlem bilinmeyen bir nedenden dolayı başarısız oldu ve bilinmeyen bir durumla karşılaştı. Kullanıcıya işlemin başarısız olduğunu bildirerek bu hata durumunu ele alın ve tekrar denemek isteyip istemediğini sorun.

CompletePurchase sahnenizdeki bu sonuçların her birini işlemelisiniz.

  1. Sahneler sekmesinden, yeni oluşturduğunuz CompletePurchase sahnesini seçin.
  2. Koşul bölümünde, yeni bir koşul eklemek için + simgesini tıklayın.
  3. Başarı koşulunu kontrol etmek için metin alanına aşağıdaki koşul söz dizimini girin:

    scene.slots.status == "FINAL" && session.params.CompletePurchase.purchaseStatus == "PURCHASE_STATUS_OK"
    
  4. İmlecinizi yeni eklediğiniz koşulun üzerine getirin ve if scene.slots.status == "FINAL" koşulunun önüne yerleştirmek için yukarı oku tıklayın.

  5. İstemleri gönder'i etkinleştirin ve kullanıcıya bir işlem yapmaya hazır olduğunu bildiren basit bir istem sağlayın:

    candidates:
      - first_simple:
          variants:
            - speech: >-
                Your purchase was successful.
    
  6. Görüşmeyi sonlandırmak için Geçiş bölümünde Görüşmeyi sonlandır'ı seçin.

Desteklemek istediğiniz her satın alma sonucu türü için yukarıdaki adımları tekrarlayın.

Kullanıcının satın alma işlemlerini yansıtın

Bir kullanıcı İşleminizi sorguladığında, isteğin JSON user nesnesi, satın alma işlemlerinin bir listesini içerir. Bu bilgileri kontrol edin ve kullanıcının ödeme yaptığı içeriğe göre İşleminizin yanıtını değiştirin.

Aşağıdaki örnek kod, bir isteğin user nesnesini gösterir. Bu nesne, com.digitalgoods.application paketi için önceden yapılan uygulama içi satın alma işlemlerinin packageEntitlements kadarını içerir:

{
  "handler": {
    "name": "handler_name"
  },
  "intent": {
    "name": "actions.intent.MAIN",
    "params": {},
    "query": ""
  },
  "scene": {
    "name": "SceneName",
    "slotFillingStatus": "UNSPECIFIED",
    "slots": {}
  },
  "session": {
    "id": "example_session_id",
    "params": {},
    "typeOverrides": []
  },
  "user": {
    "locale": "en-US",
    "params": {
      "verificationStatus": "VERIFIED"
      "packageEntitlements": [
        {
          "packageName": "com.digitalgoods.application",
          "entitlements": [
            {
              "sku": "non-consumable.1",
              "skuType": "SKU_TYPE_IN_APP"
            }
            {
              "sku": "consumable.2",
              "skuType": "SKU_TYPE_IN_APP"
            }
          ]
        },
        {
          "packageName": "com.digitalgoods.application",
          "entitlements": [
            {
              "sku": "annual.subscription",
              "skuType": "SKU_TYPE_SUBSCRIPTION",
              "inAppDetails": {
                "inAppPurchaseData": {
                  "autoRenewing": true,
                  "purchaseState": 0,
                  "productId": "annual.subscription",
                  "purchaseToken": "12345",
                  "developerPayload": "HSUSER_IW82",
                  "packageName": "com.digitalgoods.application",
                  "orderId": "GPA.233.2.32.3300783",
                  "purchaseTime": 1517385876421
                },
                "inAppDataSignature": "V+Q=="
              }
            }
          ]
        }
      ]
     }
   },
  "homeStructure": {
    "params": {}
  },
  "device": {
    "capabilities": [
      "SPEECH",
      "RICH_RESPONSE",
      "LONG_FORM_AUDIO"
    ]
  }
}

Projenizi test etme

Projenizi test ederken herhangi bir ödeme yöntemi ücreti almadan İşleminizi test etmek için Actions konsolunda korumalı alan modunu etkinleştirebilirsiniz. Korumalı alan modunu etkinleştirmek için aşağıdaki adımları uygulayın:

  1. Actions Console'daki gezinme menüsünde Test et'i tıklayın.
  2. Ayarlar'ı tıklayın.
  3. Geliştirme Korumalı Alanı seçeneğini etkinleştirin.