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
İş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:
- 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.
- Bilgi toplama: İşleminiz,
bir işleme hazırlanmak için Google Play envanterinizin bir kopyasını sunar.
- İş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.
- Kullanılabilir envanteri toplama: İşleminiz Google Play'i kontrol eder envanter ve şu anda hangi öğelerin satın alınabileceğini tanımlar.
- Düzeni oluşturma: İşleminiz mevcut dijital ürünleri müşterilere sunar Böylece bir satın alma işlemi seçebiliyorlar.
- 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.
- 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:
CEVAP geliştirici hesabı ve satıcı hesabı dijital ürünlerinizi yönetmek için Google Play'de Google Play Console.
Gemini, Google Search Console'da doğrulanmış. Bu alan adının herkese açık bir web sitesiyle ilişkilendirilmiş olması gerekmez. tek yapmamız gereken web alan adınızı referans almak.
com.android.vending.BILLING
yüklü bir Android uygulaması izin Play Console'da bulabilirsiniz. Dijital ürünleriniz "uygulama içi satın almalar" olacak Google Play Console'da bu uygulamayla ilişkilendirilir.Bu uygulama ile Play Console'da da bir sürüm oluşturmanız gerekir, ancak yayının herkese açık olmasını istemiyorsanız kapalı alfa sürümü oluşturabilirsiniz. sürüm ekleyebilirsiniz.
Henüz Android uygulamanız yoksa Bir Android uygulamasıyla ilişkilendirin.
Şuradaki bir veya daha fazla yönetilen ürün: Google Play Console Bunlar İşleminizle sattığınız dijital ürünlerdir. Lütfen Siz Android uygulaması ön koşulu.
Henüz yönetilen ürünleriniz yoksa Dijital Ürünler talimatlarınızı oluşturun.
Android Uygulaması İlişkilendirme
Şu anda Google Play Console'da şu adımları uygulayın:
- Android Studio'da veya yeni bir proje oluşturun. Seçenekleri şurada belirleyin: çok temel bir uygulama oluşturmasını istiyor.
- 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. - Uygulamanızın
AndroidManifest.xml
dosyasını açın. 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>
Uygulamanızı imzalı bir APK olarak oluşturun. Android Studio'da şu adımları uygulayın:
- Derleme, İmzalanmış Paket / APK Oluştur'a gidin.
- İleri'yi tıklayın.
- Anahtar deposu yolu bölümünde Yeni oluştur'u tıklayın.
- 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.
- İleri'yi tıklayın.
- Serbest bırak'ı seçin.
- V1 (JAR İmzası) seçeneğini belirleyin.
- Son'u tıklayın.
- Android Studio birkaç saniye sonra bir
app-release.apk
dosyası oluşturur. Daha sonra kullanmak üzere bu dosyayı bulun.
Google Play Console yeni bir uygulama oluşturabilirsiniz.
Uygulama sürümleri'ne gidin.
Kapalı kanallar bölümünde, Yönet'e ve ardından Alfa'ya gidin.
Sürüm Oluştur düğmesini tıklayın.
Google'ın imzalama anahtarınızı yönetmesine ve korumasına izin verin bölümünde imzalama anahtarınızı girin temel bilgiler.
APK dosyanızı yükleyin.
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:
- 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.
- Yönetilen ürün oluştur'u tıklayın.
- 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?
- Kaydet'i tıklayın.
- Satmak istediğiniz her ürün için 2-4. adımları tekrarlayın.
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:
- Actions Console'da projenizi açın veya yeni bir proje oluşturun.
- Dağıtım'a, ardından Dizin bilgileri'ne gidin.
- 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ış.
- 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:
- Actions Console'da sağ üst köşedeki üç nokta simgesini tıklayın. sonra Proje ayarları'nı tıklayın.
- İşleminizin Proje Kimliğini bulun.
- "
<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
- Ana gezinme menüsünde Credentials'a (Kimlik bilgileri) gidin.
- Görüntülenen sayfada Kimlik bilgileri oluştur'u, ardından Hizmet hesap anahtarı.
- Hizmet Hesabı'na gidip Yeni Hizmet Hesabı'nı tıklayın.
- Hizmet hesabına dijital işlemler gibi bir ad verin.
- Oluştur'u tıklayın.
- Rol'ü Proje > Sahibi.
- Devam'ı tıklayın.
- Anahtar Oluştur'u tıklayın.
- JSON anahtar türünü seçin.
- 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:
- Actions Console'da Dağıt'a, ardından Marka doğrulaması'na gidin.
Herhangi bir mülk bağlamadıysanız önce bir web sitesi bağlayın:
- Web mülkü (</>) düğmesini tıklayın.
- 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.
En az bir bağlı web siteniz olduğunda aşağıdaki adımları uygulayarak Android uygulamanızı bağlayın:
- Actions Console'da Dağıt'a, ardından Marka doğrulaması'na gidin.
- Uygulama Bağlayın'ı tıklayın.
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.
Play satın alma işlemlerine erişim'i etkinleştirin.
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"
}
]
}
],
...
}