Questa guida spiega come aggiungere transazioni digitali al tuo account Azione, in modo che gli utenti possano acquistare i tuoi prodotti digitali non consumabili.
Termini chiave: un prodotto digitale non consumabile è un codice SKU (codice identificativo dell'articolo) che possono essere acquistati solo una volta, ad esempio l'accesso a pagamento a contenuti aggiuntivi in un'azione o l'app per Android. Questo tipo di prodotto è diverso da un prodotto digitale di consumo valido che può essere acquistato, utilizzato e riacquistato.
Per ulteriori informazioni sui prodotti a pagamento singolo non consumabili, consulta l' documentazione su funzionalità uniche per prodotti specifici.
Flusso delle transazioni
Questa guida illustra ogni fase dello sviluppo man mano che si verificano in un prodotto digitale delle transazioni online. Quando l'Azione gestisce le transazioni per prodotti digitali, usa la seguente procedura:
- Configura un client API per gli acquisti digitali: l'azione utilizza le tecnologie digitali API per gli acquisti per comunicare con il tuo inventario di Google Play ed effettuare transazioni. Prima di eseguire qualsiasi altra azione, l'azione crea un client JWT con un chiave di servizio per comunicare con l'API degli acquisti digitali.
- Raccogliere informazioni: l'azione raccoglie informazioni di base sul
e il tuo inventario di Google Play per prepararti a una transazione.
- Convalida i requisiti delle transazioni: l'Azione utilizza le dei requisiti per le transazioni all'inizio del flusso di acquisto per assicurarti che l'utente possa effettuare transazioni.
- Raccogli l'inventario disponibile: l'azione controlla il tuo Google Play inventario e identifica quali articoli sono attualmente disponibili per l'acquisto.
- Crea l'ordine: l'azione presenta i prodotti digitali disponibili a l'utente, in modo che possa selezionarne uno da acquistare.
- Completare l'acquisto: l'azione utilizza l'API per gli acquisti digitali per avvii un acquisto con la selezione dell'utente sul Google Play Store.
- Gestire il risultato: l'azione riceve un codice di stato per il transazione e avvisa l'utente che l'acquisto è andato a buon fine (oppure richiede passaggi aggiuntivi).
Limitazioni e linee guida per la revisione
Alle Azioni con transazioni si applicano norme aggiuntive. Possono essere necessari settimane per esaminare le Azioni che includono transazioni, quindi tieni conto di questo pianificare le pubblicazioni. Per semplificare la procedura di revisione, assicurati di rispettare le con norme e linee guida per le transazioni prima di inviare l'Azione per la revisione.
Le azioni che vendono prodotti digitali possono essere implementate solo nei seguenti paesi:
- Australia
- Brasile
- Canada
- Indonesia
- Giappone
- Messico
- Russia
- Singapore
- Thailandia
- Turchia
- Regno Unito
- Stati Uniti
Prerequisiti
Prima di incorporare le transazioni digitali nell'Azione, devi disporre dei seguenti prerequisiti:
R account sviluppatore e un account commerciante su Google Play, per gestire i tuoi prodotti digitali nel Google Play Console
Un dominio web verificate in Google Search Console. Questo dominio non deve essere associato a un sito web lanciato pubblicamente. dobbiamo solo fare riferimento al tuo dominio web.
Un'app per Android con
com.android.vending.BILLING
autorizzazione nella Google Play Console. I tuoi prodotti digitali saranno "acquisti in-app" associate a questa app in Google Play Console.Con questa app dovrai anche creare una release in Play Console, ma se Se preferisci che la release non sia pubblica, puoi creare una versione alpha chiusa di IA generativa.
Se non hai ancora un'app per Android, segui le Istruzioni per l'associazione di un'app per Android.
Uno o più prodotti gestiti nel Google Play Console ovvero i prodotti digitali che vendi con l'Azione. Tieni presente che non possono creare prodotti gestiti in Play Console finché non configuri Prerequisito dell'app Android.
Se non hai già prodotti gestiti, segui le Istruzioni per Crea i tuoi prodotti digitali.
Associa un'app per Android
Se al momento non disponi di un'app per Android con l'autorizzazione per la fatturazione in Google Play Console:
- In Android Studio oppure l'IDE Android di tua scelta, crea un nuovo progetto. Scegli le opzioni in i prompt di configurazione del progetto per creare un'app di base.
- Assegna al progetto un nome pacchetto, ad esempio
com.mycompany.myapp
. Non lasciare questo nome predefinito, in quanto non puoi caricare pacchetti che includicom.example
in Play Console. - Apri il file
AndroidManifest.xml
dell'app. Aggiungi la seguente riga di codice all'interno dell'elemento
manifest
:<uses-permission android:name="com.android.vending.BILLING" />
Il file
AndroidManifest.xml
dovrebbe avere l'aspetto del seguente blocco di codice:<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>
Crea la tua app come APK firmato. In Android Studio, procedi nel seguente modo:
- Vai a Crea, Genera bundle / APK firmato.
- Fai clic su Avanti.
- In Percorso archivio chiavi, fai clic su Crea nuovo.
- Compila ogni campo e poi fai clic su OK. Prendi nota del tuo negozio chiave e Chiave password e conservarle in un luogo sicuro, poiché le utilizzerai in seguito.
- Fai clic su Avanti.
- Seleziona Rilascia.
- Seleziona V1 (firma JAR).
- Fai clic su Fine.
- Dopo alcuni secondi, Android Studio genera un file
app-release.apk
. Individua questo file per utilizzarlo in seguito.
Nella Google Play Console per creare una nuova applicazione.
Vai a Release dell'app.
In Canali chiusi, vai a Gestisci e poi ad Alpha.
Fai clic sul pulsante Crea release.
In Consenti a Google di gestire e proteggere la tua chiave di firma, inserisci la tua firma le informazioni più importanti.
Carica il file APK.
Fai clic su Salva.
Crea i tuoi prodotti digitali
Se al momento non disponi di prodotti digitali in Play Console, segui questi passaggi: passaggi:
- Nella Google Play Console Vai a Prodotti in-app e poi a Prodotti gestiti. Se vedi un avviso, segui le istruzioni precedenti per creare un'app per Android o fai clic sul link per creare un profilo commerciante.
- Fai clic su Crea prodotto gestito.
- Compila i campi per il tuo prodotto digitale. Prendi nota dell'ID prodotto, che è il modo in cui farai riferimento a questo prodotto dall'azione.
- Fai clic su Salva.
- Ripeti i passaggi 2-4 per ciascun prodotto che vuoi vendere.
Prepara il progetto Actions
Dopo aver configurato i prodotti digitali in Google Play Console, devi attivare transazioni digitali e associare il tuo progetto Actions alla tua app Google Play.
Configurazione
Per attivare le transazioni per i prodotti digitali nel progetto Actions, segui questi passaggi passaggi:
- Nella console Actions, apri il tuo progetto o creane uno nuovo.
- Vai a Esegui il deployment, quindi Informazioni sulla directory.
- In Informazioni aggiuntive e Transazioni, seleziona la casella Sì. in Le tue azioni utilizzano l'API Digital Purchase per eseguire transazioni? dei prodotti digitali.
- Fai clic su Salva.
Creare una chiave API per prodotti digitali
Per inviare richieste all'API dei prodotti digitali, devi scaricare un servizio JSON chiave dell'account associata al progetto della console Actions.
Per recuperare la chiave dell'account di servizio, segui questi passaggi:
- Nella console di Actions, fai clic sull'icona con tre puntini nell'angolo in alto a destra. quindi Impostazioni progetto.
- Trova l'ID progetto dell'Azione.
- Fai clic su questo link, sostituendo "
<project_id>
" con l'ID del tuo progetto:https://console.developers.google.com/apis/credentials?project=project_id
- Nella barra di navigazione principale, vai a Credenziali.
- Nella pagina visualizzata, fai clic su Crea credenziali, quindi su Servizio chiave dell'account di servizio.
- Vai a Account di servizio e fai clic su Nuovo account di servizio.
- Assegna all'account di servizio un nome simile a quello delle transazioni digitali.
- Fai clic su Crea.
- Imposta il Ruolo su Progetto > Proprietario.
- Fai clic su Continua.
- Fai clic su Crea chiave.
- Seleziona il tipo di chiave JSON.
- Fai clic su Crea chiave e scarica la chiave JSON dell'account di servizio.
Salva questa chiave dell'account di servizio in un luogo sicuro. Utilizzerai questa chiave per creare un cliente per l'API degli acquisti digitali.
Connettersi all'inventario di Google Play
Per accedere ai tuoi prodotti digitali da un progetto Actions, associa il tuo dominio web e app con il tuo progetto proprietà collegate.
Per collegare l'app e il dominio web Play Console al progetto Actions, segui questi passaggi:
- Nella console Actions, vai a Esegui il deployment e poi su Verifica del brand.
Se non hai collegato nessuna proprietà, collega prima un sito web:
- Fai clic sul pulsante proprietà web (</>).
- Inserisci l'URL del tuo dominio web e fai clic su Connetti.
Google invia un'email con ulteriori istruzioni al privato verificato per quel dominio web in Google Search Console. Una volta che il destinatario dell'email avrà eseguito questi passaggi, il sito web vengono visualizzati in Verifica del brand.
Quando hai almeno un sito web collegato, procedi nel seguente modo per collega la tua app Android:
- Nella console Actions, vai a Esegui il deployment e poi su Verifica del brand.
- Fai clic su Collega app.
Nella pagina visualizzata, segui le istruzioni per verificare il tuo sito web dominio su Play Console. Seleziona l'app Google Play che contiene i tuoi prodotti digitali e inserisci l'URL del dominio web esattamente come appare nella Pagina Verifica del brand.
Ancora una volta, Google invia un'email di verifica al proprietario verificato di il dominio. Dopo l'approvazione della verifica, la tua app di Google Play dovrebbe vengono visualizzati in Verifica del brand.
Attiva l'opzione Accedi agli acquisti su Google Play.
Crea il tuo flusso di acquisto
Dopo aver preparato il progetto Actions e l'inventario di prodotti digitali, crea un modello flusso di acquisto dei prodotti nel webhook di evasione delle conversazioni.
1. Configurare un client API per gli acquisti digitali
Nel webhook di completamento delle conversazioni, crea un client JWT con il tuo servizio.
chiave JSON dell'account e
https://www.googleapis.com/auth/actions.purchases.digital
ambito.
Il seguente codice Node.js crea un client JWT per l'API degli acquisti digitali:
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. Raccogliere informazioni
Prima che l'utente possa effettuare un acquisto, l'azione raccoglie informazioni sul la capacità dell'utente di effettuare acquisti e quali beni sono disponibili sul tuo inventario.
2. a. Convalida i requisiti per gli acquisti digitali
È buona norma assicurarsi che l'account dell'utente sia configurato per funzionare
transazioni prima di offrire la possibilità di effettuare un acquisto. Dovresti
transizione a una scena DigitalPurchaseCheck
, che controlla che l'utente sia verificato
che stia eseguendo la transazione su una piattaforma consentita (smart display,
smart speaker o Android) e che si trovi in un luogo in cui le
transazioni sono supportate.
Per creare una scena di controllo di acquisto digitale:
- Dalla scheda Scene, aggiungi una nuova scena con il nome
DigitalPurchaseCheck
. - In Riempimento slot, fai clic su + per aggiungere un nuovo spazio.
- In Seleziona tipo, seleziona
actions.type.DigitalPurchaseCheckResult
come il tipo di slot. - Nel campo del nome dell'area, assegna all'area il nome
DigitalPurchaseCheck
. - Attiva la casella di controllo Personalizza il writeback del valore dell'area (attiva per impostazione predefinita).
- Fai clic su Salva.
Una verifica dell'acquisto digitale avrà come risultato uno dei seguenti risultati:
- Se i requisiti sono soddisfatti, il parametro di sessione viene impostato con esito positivo e potrai consentire all'utente di acquistare prodotti digitali.
- Se non è possibile soddisfare uno o più requisiti, il parametro sessione viene impostato con una condizione di errore. In questo caso, devi modificare la conversazione dall'esperienza transazionale o terminare la conversazione.
Per gestire il risultato di un controllo di acquisto digitale:
- Dalla scheda Scene, seleziona la scena
DigitalPurchaseCheck
appena creata. - In Condizione, fai clic su + per aggiungere una nuova condizione.
Nel campo di testo, inserisci la seguente sintassi della condizione per verificare condizione di operazione riuscita:
scene.slots.status == "FINAL" && session.params.DigitalPurchaseCheck.resultType == "CAN_PURCHASE"
Passa il mouse sopra la condizione appena aggiunta e fai clic sulla Freccia su per posizionarlo prima di
if scene.slots.status == "FINAL"
.Attiva l'opzione Invia prompt e fornisci un messaggio semplice per informare l'utente sono pronti a effettuare una transazione:
candidates: - first_simple: variants: - speech: >- You are ready to purchase digital goods.
In Transizione, seleziona un'altra scena per consentire all'utente di continuare. la conversazione e procedere con la transazione.
Seleziona la condizione
else if scene.slots.status == "FINAL"
.Attiva l'opzione Invia prompt e fornisci un messaggio semplice per informare l'utente non sono in grado di effettuare una transazione:
candidates: - first_simple: variants: - speech: Sorry you cannot perform a digital purchase.
In Transizione, seleziona Termina conversazione per terminarla.
2. b. Raccogli l'inventario disponibile
Usa l'API DigitalPurchases per richiedere il tuo Play Store attualmente disponibile e poi integrarlo in un array di oggetti JSON per ogni prodotto. Potrai fare riferimento a questo array in un secondo momento per mostrare all'utente le opzioni disponibili per l'acquisto.
Ciascuno dei tuoi prodotti digitali è rappresentato come uno SKU in formato JSON. La il seguente codice Node.js descrive la formattazione prevista di ogni SKU:
body = {
skus: [
skuId: {
skuType: one of "SKU_TYPE_IN_APP" or "SKU_TYPE_SUBSCRIPTION"
id: string,
packageName: string
}
formattedPrice: string,
title: string,
description: string
]
}
Invia una richiesta POST al
https://actions.googleapis.com/v3/packages/{packageName}/skus:batchGet
endpoint, dove {packageName}
è il nome del pacchetto dell'app in Google Play
console (ad esempio, com.myapp.digitalgoods
) e formatta il risultato in un
di oggetti SKU.
Per recuperare solo prodotti digitali specifici nell'array risultante, indica il prodotto
ID per prodotti digitali (mostrati sotto ogni prodotto in-app in Google Play
Console) che vuoi rendere disponibili per l'acquisto in body.ids
.
Il seguente codice Node.js richiede un elenco dei prodotti disponibili dal acquista l'API e formatta il risultato sotto forma di array di SKU:
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': ['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. Crea l'ordine
Per avviare l'acquisto digitale dell'utente, presenta un elenco dei tuoi prodotti digitali disponibili per l'acquisto. Puoi utilizzare vari tipi di risposte avanzate per rappresentare i tuoi stock e chiedere all'utente di effettuare una selezione.
Il codice Node.js riportato di seguito legge un array di inventario di oggetti SKU e crea un list response con una voce elenco per ognuno:
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,
}));
Crea acquisto dalla selezione dell'utente
Dopo che l'utente seleziona un articolo, puoi creare l'ordine. Per farlo, area associata all'elemento selezionato, puoi richiamare il webhook per per creare l'ordine. Dopo l'evasione dell'ordine, salva i dati dell'ordine in una sessione . L'oggetto Order viene utilizzato in più scene per la stessa sessione.
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": ""
};
In Actions Builder, puoi invece utilizzare l'editor JSON per configurare l'area
con l'oggetto ordine sopra indicato. Entrambe le implementazioni utilizzano lo stesso formato
CompletePurchaseValueSpec
, che puoi trovare nella
Riferimento al payload per il webhook JSON.
4. Completa l'acquisto
Una volta che l'utente seleziona un articolo, puoi completare l'acquisto. Una volta compilata la allo spazio associato all'elemento selezionato, devi passare a una scena che esegue un acquisto completo.
Crea scena di acquisto completo
- Dalla scheda Scene, aggiungi una nuova scena con il nome
CompletePurchase
. - In Riempimento slot, fai clic su + per aggiungere un nuovo spazio.
- In Seleziona tipo, seleziona
actions.type.CompletePurchaseValue
come tipo di slot. - Nel campo del nome dell'area, assegna all'area il nome
CompletePurchase
. - Attiva la casella di controllo Personalizza il writeback del valore dell'area (attiva per impostazione predefinita).
- In Configura slot, seleziona
Use session parameter
dal menu a discesa. - In Configura slot,inserisci il nome del parametro di sessione utilizzato
archiviare l'ordine nel campo di testo (ad es.
$session.params.purchase
). - Fai clic su Salva.
5. Gestire il risultato
Un'area di tipo actions.type.CompletePurchaseValue
può avere quanto segue
risultati:
PURCHASE_STATUS_OK
: l'acquisto è andato a buon fine. La transazione è completato a questo punto, quindi esci dal flusso transazionale e torna a la conversazione.PURCHASE_STATUS_ALREADY_OWNED
: la transazione non è andata a buon fine perché l'utente possiede già l'elemento. Per evitare questo errore, controlla le informazioni precedenti acquista e personalizza gli articoli mostrati in modo che non abbiano la possibilità di acquistare di nuovo gli articoli che già possiedono.PURCHASE_STATUS_ITEM_UNAVAILABLE
: la transazione non è andata a buon fine perché l'elemento richiesto non è disponibile. Per evitare questo errore, controlla le risorse disponibili SKU più vicini al momento dell'acquisto.PURCHASE_STATUS_ITEM_CHANGE_REQUESTED
: la transazione non è andata a buon fine perché l'utente ha deciso di acquistare qualcos'altro. Ripeti con la creazione dell'ordine in modo che l'utente possa prendere subito un'altra decisione.PURCHASE_STATUS_USER_CANCELLED
: la transazione non è andata a buon fine perché l'utente ha annullato il flusso di acquisto. Poiché l'utente ha abbandonato prematuramente il flusso, chiedi all'utente se vuole ritentare la transazione o chiuderla del tutto.PURCHASE_STATUS_ERROR
: la transazione non è andata a buon fine per un motivo sconosciuto. Fai sapere all'utente che la transazione non è andata a buon fine e chiedi all'utente se vuole riprovare.PURCHASE_STATUS_UNSPECIFIED
: la transazione non è andata a buon fine per un motivo sconosciuto. con conseguente stato sconosciuto. Puoi gestire questo stato di errore consentendo al l'utente sa che la transazione non è andata a buon fine e chiedi se vuole riprovare.
Devi gestire ciascuno di questi risultati dalla scena CompletePurchase
.
- Dalla scheda Scene, seleziona la scena
CompletePurchase
appena creata. - In Condizione, fai clic su + per aggiungere una nuova condizione.
Nel campo di testo, inserisci la seguente sintassi della condizione per verificare condizione di operazione riuscita:
scene.slots.status == "FINAL" && session.params.CompletePurchase.purchaseStatus == "PURCHASE_STATUS_OK"
Passa il mouse sopra la condizione appena aggiunta e fai clic sulla Freccia su per posizionarlo prima di
if scene.slots.status == "FINAL"
.Attiva l'opzione Invia prompt e fornisci un messaggio semplice per informare l'utente sono pronti a effettuare una transazione:
candidates: - first_simple: variants: - speech: >- Your purchase was successful.
In Transizione seleziona Termina conversazione per terminarla.
Ripeti i passaggi precedenti per ogni tipo di risultato di acquisto che vuoi supportare.
Rispecchiare gli acquisti dell'utente.
Quando un utente esegue una query sull'azione, l'oggetto user
della richiesta JSON include un oggetto
elenco degli acquisti che ha effettuato. Controlla queste informazioni e modifica il valore
risposta in base ai contenuti pagati dall'utente.
Il seguente codice di esempio mostra l'oggetto user
di una richiesta che include
packageEntitlements
di acquisti in-app precedenti effettuati per la
Pacchetto com.digitalgoods.application
:
{
"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"
]
}
}
Testa il progetto
Durante il test del progetto, puoi abilitare la modalità sandbox nella console di Actions per testare l'Azione senza addebitare l'importo su un metodo di pagamento. Per attivare la modalità sandbox:
- Nella console di Actions, fai clic su Test nel menu di navigazione.
- Fai clic su Impostazioni.
- Attiva l'opzione Sandbox per lo sviluppo.