Tüketilebilir olmayan dijital işlemler oluşturma (Dialogflow)

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

Anahtar terimler: Tüketilebilir olmayan dijital ürünler, kullanıcılara ait olan ve Yalnızca bir kez satın alınabilir (İşlemdeki ek içeriğe ücretli erişim gibi) veya Android uygulaması. Bu ürün türü, tüketilebilir dijital ürünlerden farklıdır satın alınabilen, kullanılabilen ve yeniden satın alınabilen öğelerdir.

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

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.

İş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 tanımlar.
  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'da seçtiği bir satın alma işlemini başlatma.
  5. Sonucu işleme: İşleminiz işlemi gösterir ve kullanıcıya satın alma işleminin başarılı olduğunu (veya ek adımlar gerektirir).

Ö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 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 olmayan ü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.

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.

Not: Doğrulama işlemi sırasında bağlantı adımlarının tamamlanması bir hafta kadar sürebilir. sahip olursunuz. Web siteniz veya uygulamanız bu sürenin sonunda bağlanmazsa destek ekibiyle iletişime geçin.

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. İşlem şartlarını doğrulayın

Kullanıcının hesabının performans gösterecek şekilde ayarlandığından emin olmak işlemleri gerçekleştirmeleri gerekir. Bu adım Kullanıcının yapılandırılmış bir ödeme yönteminin olup olmadığını ve kullanıcının dijital işlemlerin desteklendiği yerel ayardır. İşlemin başında akışında, kullanıcının işlemini doğrulamak için DIGITAL_PURCHASE_CHECK yardımcısını kullanın. yapılandırmaya yardımcı olur.

Aşağıdaki Node.js kodu,DIGITAL_PURCHASE_CHECK sohbet:

app.intent('Default Welcome Intent', async (conv, { SKU }) => {
  // Immediately invoke digital purchase check intent to confirm
  // purchase eligibility.
  conv.ask(new DigitalPurchaseCheck());
});

Bu kontrolün sonucunu, sohbet bağımsız değişkenlerinde DIGITAL_PURCHASE_CHECK_RESULT Bu sonuca göre veya başka bir yöne geçip Google Pay ile ödeme yapma yapılandırma.

Aşağıdaki Node.js kodu gereksinim kontrolü sonucunu işler :

app.intent('Digital Purchase Check', async (conv) => {
  const arg = conv.arguments.get('DIGITAL_PURCHASE_CHECK_RESULT');
  if (!arg || !arg.resultType) {
    conv.close('Digital Purchase check failed. Please check logs.');
    return;
  }
  // User does not meet necessary conditions for completing a digital purchase
  if (arg.resultType === 'CANNOT_PURCHASE' || arg.resultType === 'RESULT_TYPE_UNSPECIFIED') {
    conv.close(`It looks like you aren't able to make digital purchases. Please check your Google Pay configuration and try again.`);
    return;
  }
  conv.ask('Welcome to the Digital Goods Sample. Would you like to see what I have for sale?');
});

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 "APP" or "UNSPECIFIED"
      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': conversationId,
        'skuType': 'APP',
        // This request is filtered to only retrieve SKUs for the following product IDs
        'ids': ['nonconsumable.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:

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

4. Satın alma işlemini tamamla

Satın alma işlemini tamamlamak için COMPLETE_PURCHASE yardımcı amacını kullanıcının seçtiği öğedir.

Aşağıdaki Node.js kodu, kullanıcının liste yanıtından SKU seçimini işler ve COMPLETE_PURCHASE amacını şu bilgilerle istiyor:

app.intent('Send Purchase', (conv, params, option) => {
  let [skuType, id] = option.split(',');

  conv.ask(new CompletePurchase({
    skuId: {
      skuType: skuType,
      id: id,
      packageName: <PACKAGE_NAME>,
    },
  }));
});

5. Sonucu işleme

Satın alma işlemi tamamlandığında actions_intent_COMPLETE_PURCHASE tetiklenir. Şunları içeren Dialogflow etkinliği (veya actions.intent.COMPLETE_PURCHASE İşlemler SDK amacı) sonucu açıklayan bir COMPLETE_PURCHASE_VALUE bağımsız değişkeni yer alır. Amaç oluşturun, bu etkinlik tarafından tetiklenen ve sonucu kullanıcıya ileten.

Aşağıdaki olası satın alma sonuçlarını ele alın:

  • 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 ona İşlemi yeniden denemek veya işlemden çıkmak isterse kullanıcıya Hepsini.
  • PURCHASE_STATUS_ERROR: İşlem bilinmeyen bir nedenden dolayı başarısız oldu. İzin kullanıcıya işlemin başarısız olduğunu anlar ve tekrar denemek isteyip istemediklerini sorun.
  • PURCHASE_STATUS_UNSPECIFIED: İşlem bilinmeyen bir nedenden dolayı başarısız oldu. bilinmeyen bir duruma neden olur. Bu hata durumunu çözmek için kullanıcının işlemin gerçekleştirilemediğini öğrenin ve tekrar denemek isteyip istemediklerini sorun.

Aşağıdaki Node.js kodu, COMPLETE_PURCHASE_VALUE bağımsız değişkenini okur ve her sonucu işler:

app.intent('Purchase Result', (conv) => {
  const arg = conv.arguments.get('COMPLETE_PURCHASE_VALUE');
  console.log('User Decision: ' + JSON.stringify(arg));
  if (!arg || !arg.purchaseStatus) {
    conv.close('Purchase failed. Please check logs.');
    return;
  }
  if (arg.purchaseStatus === 'PURCHASE_STATUS_OK') {
    conv.close(`Purchase completed! You're all set!`);
  } else if (arg.purchaseStatus === 'PURCHASE_STATUS_ALREADY_OWNED') {
    conv.close('Purchase failed. You already own this item.');
  } else if (arg.purchaseStatus === 'PURCHASE_STATUS_ITEM_UNAVAILABLE') {
    conv.close('Purchase failed. Item is not available.');
  } else if (arg.purchaseStatus === 'PURCHASE_STATUS_ITEM_CHANGE_REQUESTED') {
    // Reprompt with your item selection dialog
  }  else {
    conv.close('Purchase Failed:' + arg.purchaseStatus);
  }
});

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

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

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:

  "user": {
    "userId": "xxxx",
    "locale": "en-US",
    "lastSeen": "2018-02-09T01:49:23Z",
    "packageEntitlements": [
      {
        "packageName": "com.digitalgoods.application",
        "entitlements": [
          {
            "sku": "non-consumable.1",
            "skuType": "APP"
          }
          {
            "sku": "consumable.2",
            "skuType": "APP"
          }
        ]
      },
      {
        "packageName": "com.digitalgoods.application",
        "entitlements": [
          {
            "sku": "annual.subscription",
            "skuType": "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=="
            }
          }
        ]
      }
    ]
  },
  "conversation": {
    "conversationId": "1518141160297",
    "type": "NEW"
  },
  "inputs": [
    {
      "intent": "actions.intent.MAIN",
      "rawInputs": [
        {
          "inputType": "VOICE",
          "query": "Talk to My Test App"
        }
      ]
    }
  ],
  ...
}