Tüketilebilir dijital işlemler oluşturma

Bu kılavuzda, görüşmelerinize dijital işlemleri nasıl ekleyeceğiniz açıklanmaktadır. Kullanıcıların tüketilebilir dijital ürünlerinizi satın alabilmesi için işlem.

Anahtar terimler: Tüketilebilir dijital mal, stok tutma birimidir (SKU). Kullanıcı birden fazla kez kullanabilir ve satın alma işlemi yapabilir (örneğin, oyun içi para birimi miktarı). bir uygulamadır. Bu dijital ürün, tüketilebilir olmayan ürünlerden farklıdır Kullanıcının yalnızca bir kez satın alabileceği dijital üründür.

Tek seferlik tüketilebilir ürünler hakkında daha fazla bilgi için Android belgeleri Ürüne özgü tek seferlik özellikler.

İşlem akışı

Bu kılavuzda, dijital bir üründe gerçekleştiği şekliyle her bir geliştirme adımı özetlenmektedir her zaman daha iyidir. İşleminiz dijital ürünlerle ilgili işlemleri gerçekleştirdiğinde, şu akışı kullanır:

  1. Digital purchase API istemcisi oluşturma: İşleminiz dijital satın alma işlemleri için satın alma işlemleri API'sini kullanarak Google Play envanterinizle iletişim kurabilir ve işlem yapabilirsiniz. İşleminiz başka herhangi bir şey yapmadan önce, dijital satın alma API'si ile iletişim kurmak için hizmet anahtarını kullanın.
  2. Bilgi toplama: İşleminiz, bir işleme hazırlanmak için Google Play envanterinizin bir kopyasını sunar.
    1. İşlem şartlarını doğrulama: İşleminiz, satın alma akışının başında işlem gereklilikleri yardımcısına kullanıcının işlem yapabildiğinden emin olun.
    2. Kullanılabilir envanteri toplama: İşleminiz Google Play'i kontrol eder envanter ve şu anda hangi öğelerin satın alınabileceğini belirler.
  3. Düzeni oluşturma: İşleminiz mevcut dijital ürünleri müşterilere sunar Böylece bir satın alma işlemi seçebiliyorlar.
  4. Satın alma işlemini tamamlama: İşleminiz dijital satın alma işlemleri API'sini kullanarak Kullanıcının Google Play Store'dan seçtiği ürünle bir satın alma işlemi başlatma.
  5. Sonucu işleme: İşleminiz işlemi tamamlar ve kullanıcıya satın alma işleminin başarılı olduğunu (veya adımları).
  6. Satın alma işlemini tekrarlanabilir hale getirin: İşleminiz dijital satın alma işlemlerini kullanıyor "Kullanma" API'si satın alınabilir hale getirerek, satın alınan öğenin satın alınabilmesini sağlar. işlemi tekrarlamanız gerekir.

Kısıtlamalar ve inceleme kuralları

İşlem içeren işlemler için ek politikalar geçerlidir. Yapmamız gereken birkaç İşlemleri içeren İşlemler'i incelemek üzere birkaç hafta bekleyin. Bu nedenle, yayın planınızı hazırlarsınız. İnceleme sürecini kolaylaştırmak için şununla: işlemlerle ilgili politikalar ve kurallar incelemenizi öneririz.

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

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

Ön koşullar

Dijital işlemleri İşleminize dahil etmeden önce, şu ön koşulları sağlar:

Android Uygulaması İlişkilendirme

Şu anda Google Play Console'da şu adımları uygulayın:

  1. Android Studio'da veya Android IDE'yi seçerseniz yeni bir proje oluşturun. Seçenekleri şurada belirleyin: çok temel bir uygulama oluşturmasını istiyor.
  2. Projeye com.mycompany.myapp gibi bir paket adı verin. Şu özelliklere sahip paketleri yükleyemeyeceğiniz için bu adı varsayılan olarak bırakmayın: com.example öğelerini Play Console'a ekleyin.
  3. Uygulamanızın AndroidManifest.xml dosyasını açın.
  4. manifest öğesinin içine aşağıdaki kod satırını 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 alanı doldurup Tamam'ı tıklayın. Anahtar deponuzu not edin. şifre ve Anahtar şifre gibi. Ayrıca, bunları güvenli bir yerde saklamanız gerekir. bunları daha sonra kullanacaksınız.
    5. İleri'yi tıklayın.
    6. Serbest bırak'ı seçin.
    7. V1 (JAR İmzası) seçeneğini belirleyin.
    8. Son'u tıklayın.
    9. Android Studio birkaç saniye sonra bir app-release.apk dosyası oluşturur. Daha sonra kullanmak üzere bu dosyayı bulun.
  6. Google Play Console yeni bir uygulama oluşturabilirsiniz.

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

  8. Kapalı kanallar bölümünde, Yönet'e ve 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 verin bölümünde imzalama anahtarınızı girin temel bilgiler.

  11. APK dosyanızı yükleyin.

  12. Kaydet'i tıklayın.

Dijital ürünlerinizi oluşturun

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

  1. Google Play Console Uygulama içi ürünler'e, ardından Yönetilen ürünler'e gidin. Bir uyarı görürseniz Android uygulaması oluşturmak için önceki talimatları uygulayın veya bağlantıyı tıklayın satıcı profili oluşturun.
  2. Yönetilen ürün oluştur'u tıklayın.
  3. Dijital ürününüzle ilgili alanları doldurun. Ürün kimliğini not edin, İşleminizde bu ürüne nasıl atıfta bulunacaksınız?
  4. Kaydet'i tıklayın.
  5. Satmak istediğiniz her ürün için 2-4. adımları tekrarlayın.

Google Play Console&#39;daki tüketilebilir ürünlere örnekler.

Actions projenizi hazırlama

Dijital ürünlerinizi Google Play Console'da ayarladıktan sonra, ve Actions projenizi Play uygulamanızla ilişkilendirme.

Kurulum

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

  1. Actions Console'da projenizi açın veya yeni bir proje oluşturun.
  2. Dağıtım'a, ardından Dizin bilgileri'ne gidin.
  3. Ek bilgiler ve İşlemler bölümünde Evet kutusunu işaretleyin. İşlemleriniz, işlemleri gerçekleştirmek için Digital Purchase API'yi kullanıyor mu? sayısındaki artış.
  4. Kaydet'i tıklayın.

Dijital ürünler API anahtarı oluşturma

Dijital ürünler API'sine istek göndermek için bir JSON hizmeti indirmeniz gerekir Actions konsolu projenizle ilişkili hesap anahtarınız.

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

  1. Actions Console'da sağ üst köşedeki üç nokta simgesini tıklayın. sonra Proje ayarları'nı tıklayın.
  2. İşleminizin Proje Kimliğini bulun.
  3. "<project_id>" kısmını değiştirerek bu bağlantıyı takip edin girin: https://console.developers.google.com/apis/credentials?project=project_id
  4. Ana gezinme menüsünde Credentials'a (Kimlik bilgileri) gidin.
  5. Görüntülenen sayfada Kimlik bilgileri oluştur'u, ardından Hizmet hesap anahtarı.
  6. Hizmet Hesabı'na gidip 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 > Sahibi.
  10. Devam'ı tıklayın.
  11. Anahtar Oluştur'u tıklayın.
  12. JSON anahtar türünü seçin.
  13. Anahtar oluştur'u tıklayın ve JSON hizmet hesabı anahtarını indirin.

Bu hizmet hesabı anahtarını güvenli bir yerde kaydedin. Bu anahtarı şurada kullanacaksınız: dijital satın alma işlemleri API'si için bir müşteri oluşturmak üzere istek karşılama.

Play envanterinize bağlanma

Bir Actions projesinden dijital ürünlerinize erişmek için web alanı ve uygulamanız arasında geçiş yapın. bağlı mülklerde görünmesidir.

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

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

    1. Web mülkü (&lt;/&gt;) düğmesini tıklayın.
    2. Web alanınızın URL'sini girip Bağlan'ı tıklayın.

    Google, talebi gönderen kişiye ek talimatların yer aldığı bir e-posta gönderir. o web alanı için doğrulanmış olmalıdır. Google Search Console. Bu e-postanın alıcısı bu adımları uyguladıktan sonra, web sitesi Marka doğrulaması bölümünde görünür.

  3. En az bir bağlı web siteniz olduğunda aşağıdaki adımları uygulayarak Android uygulamanızı bağlayın:

    1. Actions Console'da Dağıt'a, ardından Marka doğrulaması'na gidin.
    2. Uygulama Bağlayın'ı tıklayın.
    3. Görüntülenen sayfada, web alan adına sahip olmanız gerekir. Şunu içeren Play uygulamasını seçin: ve web alan adı URL'sini tam olarak Marka doğrulama sayfası.

      Google bir kez daha, alan adı. Kullanıcı doğrulamayı onayladıktan sonra, Play uygulamanız Marka doğrulaması bölümünde görünür.

    4. Play satın alma işlemlerine erişim'i etkinleştirin.

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

Satın alma akışınızı oluşturun

Actions projeniz ve dijital ürün envanteriniz hazırlandıktan sonra, işletmeniz için daha güçlü ürün satın alma akışınızın takibini yapın.

1. Dijital satın alma işlemleri API istemcisi kurma

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

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

İşleminiz, kullanıcının satın alma işlemi yapabilmesi için öncelikle ve web sitenizde hangi ürünlerin mevcut olduğunu belirlemek için kullanıcının envanter.

2. a. Dijital satın alma şartlarını doğrulayın

Kullanıcının hesabının performans gösterecek şekilde ayarlandığından emin olmak işlemleri gerçekleştirmeleridir. Şunları yapmalısınız: kullanıcının doğrulanıp doğrulanmadığını kontrol eden bir DigitalPurchaseCheck sahnesine geçiş işlemi izin verilen bir yüzeyde (akıllı ekran, veya Android'deki gibi) ve dijital dünyanın çok iyi hissettiği bir desteklenir.

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. Alan doldurma altında, yeni bir aralık eklemek için + simgesini tıklayın.
  3. Tür seçin altında, şu şekilde actions.type.DigitalPurchaseCheckResult seçin: zaman aralığı türü.
  4. Alan adı alanında, alana DigitalPurchaseCheck adını verin.
  5. Alan değeri geri yazmayı özelleştir onay kutusunu etkinleştirin (varsayılan olarak etkindir).
  6. Kaydet'i tıklayın.

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

  • Koşullar karşılanırsa oturum parametresi başarıyla ayarlanır ve kullanıcının dijital ürünler satın almasına izin vererek devam edebilirsiniz.
  • Koşullardan biri veya daha fazlası karşılanamazsa oturum parametresi bir hata koşuluyla ayarlanır. Bu durumda konuşmanın yönünü veya görüşmeyi sonlandırmanız gerekebilir.

Dijital Satın Alma kontrolü sonucunu işlemek için aşağıdaki adımları izleyin:

  1. Sahneler sekmesinden, yeni oluşturduğunuz DigitalPurchaseCheck sahnesini seçin.
  2. Koşul altında, yeni bir koşul eklemek için + simgesini tıklayın.
  3. Metin alanına, başarı koşulu:

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

  5. İstemleri gönder'i etkinleştirin ve kullanıcıyı bilgilendiren basit bir istem sağlayın bir işlem yapmaya hazır olduğundan emin olun.

    candidates:
      - first_simple:
          variants:
            - speech: >-
                You are ready to purchase digital goods.
    
  6. Transition bölümünde, kullanıcının devam etmesine izin veren başka bir sahne seçin ve işleme devam edebilirsiniz.

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

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

    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 envanter toplama

Şu anda kullanılabilir olan Play Store'unuzu istemek için dijital satın alma işlemleri API'sini kullanın daha sonra bunu her ürün için bir JSON nesneleri dizisinde derleyebilirsiniz. Daha sonra kullanıcıya hangi seçeneklerin mevcut olduğunu göstermek için bu diziye başvurursunuz satın alabilirsiniz.

Dijital ürünlerinizin her biri JSON biçiminde bir SKU olarak gösterilir. İlgili içeriği oluşturmak için kullanılan Aşağıdaki Node.js kodu, her SKU için beklenen biçimlendirmeyi belirtir:

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

Şuraya bir POST isteği gönderin: https://actions.googleapis.com/v3/packages/{packageName}/skus:batchGet. uç noktadır; burada {packageName}, uygulamanızın Google Play'deki paket adıdır Konsol (örneğin, com.myapp.digitalgoods) girin ve sonucu SKU nesneleri dizisidir.

Yalnızca elde edilen dizide belirli dijital ürünleri almak için ürünü listeleyin Dijital ürünlerin kimlikleri (Google Play'deki her uygulama içi ürünün altında gösterildiği gibi) Console) (body.ids) satın alabilirsiniz.

Aşağıdaki Node.js kodu, satın alma API'sini kullanır 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': ['consumable.1']
      },
    }, (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şturma

Kullanıcının dijital satın alma işlemini başlatmak için dijital ürünlerinizin bir listesini sunun satın alınabilir. Birbirinden farklı türde zengin yanıt türlerini ve kullanıcıdan seçim yapmasını istemesidir.

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

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 işlemi oluşturun

Kullanıcı bir öğe seçtiğinde siparişi oluşturabilirsiniz. Bunu yapmak için alakalı reklam öğesi arıyorsa webhook'unuza çağrı yaparak siparişi oluşturacaktır. Sipariş karşılamadaki sipariş verilerini bir oturuma kaydedin. parametresinden sonra bir değer girin. Sipariş nesnesi, aynı oturumdaki 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, bunun yerine alanı yapılandırmak için JSON düzenleyiciyi kullanabilirsiniz. yukarıdaki sipariş nesnesiyle. Her iki uygulama da CompletePurchaseValueSpec, bu politikayı şurada bulabilirsiniz: JSON webhook yük referansı.

4. Satın alma işlemini tamamla

Kullanıcı bir öğe seçtikten sonra satın alma işlemini tamamlayabilirsiniz. yuvaya yerleştirildikten sonra, bu öğe için uygun bir sahneye tam bir satın alma işlemi gerçekleştirir.

Tam Satın Alma Sahnesi Oluşturma

  1. Sahneler sekmesinden CompletePurchase adlı yeni bir sahne ekleyin.
  2. Alan doldurma altında, yeni bir aralık eklemek için + simgesini tıklayın.
  3. Tür seçin altında actions.type.CompletePurchaseValue zaman aralığı türü.
  4. Alan adı alanında, alana CompletePurchase adını verin.
  5. Alan değeri geri yazmayı özelleştir onay kutusunu etkinleştirin (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 altında,şu işlemle kullanılan oturum parametresinin adını girin: siparişi metin alanına ($session.params.purchase) kaydedin.
  8. Kaydet'i tıklayın.

5. Sonucu işleme

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

  • PURCHASE_STATUS_OK: Satın alma işlemi başarılı oldu. İşlem Bu nedenle, işlem akışından çıkıp tekrar yardımcı olabilir.
  • PURCHASE_STATUS_ALREADY_OWNED: Kullanıcı, bu öğenin zaten sahibi olduğu anlamına gelir. Bu hatadan kaçınmak için, kullanıcının ve gösterilen ürünleri, çok daha fazla müşteriye sahip oldukları ürünleri tekrar satın almalarına yardımcı olur.
  • PURCHASE_STATUS_ITEM_UNAVAILABLE: İşlem şu nedenle başarısız oldu: istenen öğe mevcut değil. Mevcut öğeleri kontrol ederek bu hatadan Satın alma zamanına yakın SKU'lar.
  • PURCHASE_STATUS_ITEM_CHANGE_REQUESTED: İşlem şu nedenle başarısız oldu: karar veren bir kullanıcı olduğunu varsayalım. Sipariş oluşturma sürecinizle ilgili yeniden istem Böylece kullanıcı hemen başka bir karar verebilir.
  • PURCHASE_STATUS_USER_CANCELLED: Kullanıcı, satın alma akışını iptal etti. Kullanıcı akıştan erken çıktığı için kullanıcıya işlemi yeniden denemek mi yoksa işlemden çıkmak mı istediğini sorun. Hepsini.
  • 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. bilinmeyen bir duruma neden olur. Bu hata durumunu, kullanıcıya işlemin başarısız olduğunu anlar ve tekrar denemek isteyip istemediklerini sorun.

CompletePurchase sahnenizden bu sonuçların her birini işlemeniz gerekir.

  1. Sahneler sekmesinden, yeni oluşturduğunuz CompletePurchase sahnesini seçin.
  2. Koşul altında, yeni bir koşul eklemek için + simgesini tıklayın.
  3. Metin alanına, başarı koşulu:

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

  5. İstemleri gönder'i etkinleştirin ve kullanıcıyı bilgilendiren basit bir istem sağlayın bir işlem yapmaya hazır olduğundan emin olun.

    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.

6. Satın alma işlemini tekrarlanabilir hale getirin

Başarılı bir işlemden sonra, dijital satın alma işlemlerine bir POST isteği gönderin API'nin öğeyi kullanma süresi, kullanıcının öğeyi tekrar satın almasına olanak tanır. Gönder https://actions.googleapis.com/v3/conversations/{sessionId}/entitlement:consume için istek uç noktası, session.id içinde bulunan oturumun kimliğine sahiptir.

POST isteğiniz, kullanıcının satın alma işlemi; packageEntitlements.entitlements.inAppDetails.inAppPurchaseData.purchaseToken

Aşağıdaki kod, Digital purchase API'ye bir consume isteği gönderir ve bu isteğin başarılı olup olmadığını bildirir:

request.post(`https://actions.googleapis.com/v3/conversations/${conv.session.id}/entitlement:consume`, {
  'auth': {
    'bearer': tokens.access_token,
  },
  'json': true,
  'body': {
  // This purchase token is in both the purchase event and the user's entitlements
  // in their request JSON
    "purchaseToken": entitlement.purchaseToken
  },
  }, (err, httpResponse, body) => {
    if (err) {
     throw new Error(`API request error: ${err}`);
    }
  console.log(`${httpResponse.statusCode}: ${httpResponse.statusMessage}`);
  console.log(JSON.stringify(httpResponse));
  console.log(JSON.stringify(body));
  resolve(body);
});

// Make sure the consume request was successful. In production, don't notify the user; handle failures on the back end
return consumePromise.then(body => {
  const consumed = Object.keys(body).length === 0;
  if (consumed) {
    conv.add(`You successfully consumed ${id}`);
  } else {
    conv.add(`Failed to consume: ${id}`);
  }
});

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

Bir kullanıcı İşleminizi sorguladığında, isteğin JSON'un user nesnesi bir ve satın alma işlemi listesidir. Bu bilgileri kontrol edin ve kullanıcının ödeme yaptığı içeriğe göre yanıt vermesi gerekir.

Aşağıdaki örnek kod, bir isteğin aşağıdakileri içeren user nesnesini göstermektedir: Daha önce yaptıkları uygulama içi satın almaların packageEntitlements kadarı com.digitalgoods.application paketi:

{
  "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 Actions konsolunda korumalı alan modunu etkinleştirebilirsiniz ödeme yönteminden ödeme almadan İşleminizi test edin. Korumalı alan modunu etkinleştirmek için şu adımları uygulayın:

  1. Actions konsolundaki gezinme bölümünde Test'i tıklayın.
  2. Ayarlar'ı tıklayın.
  3. Geliştirme Korumalı Alanı seçeneğini etkinleştirin.