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:
- 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 belirler.
- 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'dan seçtiği ürünle bir satın alma işlemi başlatma.
- Sonucu işleme: İşleminiz işlemi tamamlar ve kullanıcıya satın alma işleminin başarılı olduğunu (veya adımları).
- 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
Ö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 Android IDE'yi seçerseniz 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.
Kurulum
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.
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. 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:
- Sahneler sekmesinden
DigitalPurchaseCheck
adlı yeni bir Sahne ekleyin. - Alan doldurma altında, yeni bir aralık eklemek için + simgesini tıklayın.
- Tür seçin altında, şu şekilde
actions.type.DigitalPurchaseCheckResult
seçin: zaman aralığı türü. - Alan adı alanında, alana
DigitalPurchaseCheck
adını verin. - Alan değeri geri yazmayı özelleştir onay kutusunu etkinleştirin (varsayılan olarak etkindir).
- 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:
- Sahneler sekmesinden, yeni oluşturduğunuz
DigitalPurchaseCheck
sahnesini seçin. - Koşul altında, yeni bir koşul eklemek için + simgesini tıklayın.
Metin alanına, başarı koşulu:
scene.slots.status == "FINAL" && session.params.DigitalPurchaseCheck.resultType == "CAN_PURCHASE"
İmlecinizi yeni eklediğiniz koşulun üzerine getirin ve yukarı oku tıklayın
if scene.slots.status == "FINAL"
öncesine yerleştireceğiz.İ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.
Transition bölümünde, kullanıcının devam etmesine izin veren başka bir sahne seçin ve işleme devam edebilirsiniz.
Koşulu
else if scene.slots.status == "FINAL"
seçin.İ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.
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
- Sahneler sekmesinden
CompletePurchase
adlı yeni bir sahne ekleyin. - Alan doldurma altında, yeni bir aralık eklemek için + simgesini tıklayın.
- Tür seçin altında
actions.type.CompletePurchaseValue
zaman aralığı türü. - Alan adı alanında, alana
CompletePurchase
adını verin. - Alan değeri geri yazmayı özelleştir onay kutusunu etkinleştirin (varsayılan olarak etkindir).
- Alanı yapılandır'ın altındaki açılır listeden
Use session parameter
'yi seçin. - 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. - 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.
- Sahneler sekmesinden, yeni oluşturduğunuz
CompletePurchase
sahnesini seçin. - Koşul altında, yeni bir koşul eklemek için + simgesini tıklayın.
Metin alanına, başarı koşulu:
scene.slots.status == "FINAL" && session.params.CompletePurchase.purchaseStatus == "PURCHASE_STATUS_OK"
İmlecinizi yeni eklediğiniz koşulun üzerine getirin ve yukarı oku tıklayın
if scene.slots.status == "FINAL"
öncesine yerleştireceğiz.İ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.
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:
- Actions konsolundaki gezinme bölümünde Test'i tıklayın.
- Ayarlar'ı tıklayın.
- Geliştirme Korumalı Alanı seçeneğini etkinleştirin.