Tworzenie transakcji cyfrowych zużywanych

Z tego przewodnika dowiesz się, jak dodać transakcje cyfrowe do rozmów Działanie, dzięki któremu użytkownicy mogą kupić Twoje zużywalne produkty cyfrowe.

Kluczowe terminy: produkt cyfrowy to jednostka magazynowa (SKU), użytkownik może dokonać zakupu więcej niż raz, np. określoną ilość waluty w grze w przypadku gry na Androida. Ten towar cyfrowy różni się od nieużywanego. towaru cyfrowego, który użytkownik może kupić tylko raz.

Więcej informacji o produktach jednorazowych znajdziesz w sekcji dotyczącej urządzeń z Androidem dokumentacja dotycząca jednorazowe funkcje, które są dostępne w ramach danej usługi.

Przepływ transakcji

W tym przewodniku opisujemy każdy etap tworzenia produktu cyfrowego, który występuje w przypadku produktów cyfrowych. procesu transakcji. Gdy akcja obsługuje transakcje dotyczące towarów cyfrowych, korzysta z takiego procesu:

  1. Skonfiguruj klienta interfejsu API zakupów cyfrowych: akcja używa kodu cyfrowego na potrzeby komunikacji z zasobami reklamowymi w Google Play i transakcji. Zanim akcja wykona cokolwiek, tworzy klienta JWT z klucz usługi do komunikowania się z cyfrowym interfejsem API zakupów.
  2. Gromadzenie informacji: akcja zbiera podstawowe informacje o jak i zasobami reklamowymi w Google Play, aby przygotować się do transakcji.
    1. Weryfikacja wymagań dotyczących transakcji: akcja korzysta z kodu cyfrowego wymagań dotyczących transakcji na początku procesu zakupowego aby umożliwić użytkownikowi przeprowadzenie transakcji.
    2. Zbierz dostępne zasoby reklamowe: akcja sprawdza Google Play. zasobów reklamowych i określa, które produkty są obecnie dostępne do zakupu.
  3. Uporządkuj kolejność: akcja prezentuje dostępne produkty cyfrowe użytkownika, aby mógł wybrać reklamę, którą chce kupić.
  4. Sfinalizuj zakup: akcja używa interfejsu API zakupów cyfrowych do: rozpocząć zakup produktów wybraną przez użytkownika w Sklepie Google Play.
  5. Obsługa wyniku: akcja otrzymuje kod stanu dla atrybutu transakcji i powiadamia użytkownika, że zakup został zrealizowany (lub czynności dodatkowych).
  6. Spraw, aby zakup powtarzał się: akcja używa zakupów cyfrowych. Interfejs API do wykorzystania kupionego produktu i udostępnia go do zakupu; przez tego użytkownika.

Ograniczenia i wytyczne dotyczące sprawdzania

W przypadku akcji z transakcjami obowiązują dodatkowe zasady. Może nam to zająć tygodni, aby sprawdzić Działania, które obejmują transakcje. Uwzględniaj czas w planowaniu harmonogramu publikacji. Aby uprościć proces weryfikacji, przestrzegaj z zasadami i wytycznymi dotyczącymi transakcji przed przesłaniem Akcji do sprawdzenia.

Działania związane ze sprzedażą produktów cyfrowych mogą być wdrażane tylko w tych krajach:

  • Australia
  • Brazylia
  • Kanada
  • Indonezja
  • Japonia
  • Meksyk
  • Rosja
  • Singapur
  • Tajlandia
  • Turcja
  • Wielka Brytania
  • Stany Zjednoczone
.

Wymagania wstępne

Zanim uwzględnisz transakcje cyfrowe w Akcji, potrzebujesz następujące warunki wstępne:

  • O konto dewelopera i konto sprzedawcy w Google Play, aby zarządzać swoimi produktami cyfrowymi Konsola Google Play.

  • Domena internetowa zweryfikowane w Google Search Console. Ta domena nie musi być powiązana z publicznie dostępną witryną internetową, wystarczy odnosić się do domeny internetowej.

  • Aplikacja na Androida z atrybutem com.android.vending.BILLING zezwolenie w Konsoli Google Play. Twoje produkty cyfrowe będą nazywane „zakupami w aplikacji” powiązane z tą aplikacją w Konsoli Google Play.

    Musisz też utworzyć wersję w Konsoli Play za pomocą tej aplikacji, ale jeśli Nie chcesz, żeby wersja była publiczna, możesz utworzyć zamkniętą wersję alfa wersji.

    Jeśli nie masz jeszcze aplikacji na Androida, postępuj zgodnie z Powiązanie instrukcji dotyczących aplikacji na Androida

  • Co najmniej jeden produkt zarządzany w Konsola Google Play, czyli towary cyfrowe, które sprzedajesz w ramach Akcji. Pamiętaj, że nie możesz tworzyć produktów zarządzanych w Konsoli Play, dopóki nie skonfigurujesz Wymagania wstępne aplikacji na Androida.

    Jeśli nie masz jeszcze produktów zarządzanych, postępuj zgodnie z Utwórz towary cyfrowe.

Powiąż aplikację na Androida

Jeśli nie masz obecnie aplikacji na Androida z uprawnieniami do płatności na W Konsoli Google Play, wykonaj te czynności:

  1. W Android Studio lub w środowisku IDE Androida, utwórz nowy projekt. Wybierz opcje w z prośbą o konfigurację projektu i stworzenie bardzo podstawowej aplikacji.
  2. Nadaj projektowi nazwę pakietu, np. com.mycompany.myapp. Nie zostawiaj tej nazwy domyślnej, bo nie można przesyłać pakietów, które dodaj com.example do Konsoli Play.
  3. Otwórz plik AndroidManifest.xml aplikacji.
  4. Dodaj ten wiersz kodu do elementu manifest:

    <uses-permission android:name="com.android.vending.BILLING" />

    Twój plik AndroidManifest.xml powinien wyglądać jak ten blok kodu:

    <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. Utwórz aplikację jako podpisany pakiet APK. W Android Studio wykonaj te czynności:

    1. Otwórz Kompilacja, a następnie Wygeneruj podpisany pakiet / plik APK.
    2. Kliknij Dalej.
    3. W sekcji Ścieżka magazynu kluczy kliknij Utwórz nową.
    4. Wypełnij wszystkie pola i kliknij OK. Zanotuj swój magazyn kluczy hasła i Klucza dostępu. Przechowuj je w bezpiecznym miejscu. użyjesz ich później.
    5. Kliknij Dalej.
    6. Wybierz release (Wersja).
    7. Wybierz V1 (Podpis JAR).
    8. Kliknij Zakończ.
    9. Po kilku sekundach Android Studio generuje plik app-release.apk. Znajdź ten plik do późniejszego użycia.
  6. W Konsola Google Play, utwórz nową aplikację.

  7. Otwórz Wersje aplikacji.

  8. W sekcji Zamknięte ścieżki kliknij Zarządzaj, a następnie Alfa.

  9. Kliknij przycisk Utwórz wersję.

  10. W sekcji Pozwól Google na zarządzanie Twoim kluczem podpisywania i ochronę jego wpisz treść podpisu kluczowych informacji.

  11. Prześlij plik APK.

  12. Kliknij Zapisz.

Tworzenie towarów cyfrowych

Jeśli nie masz obecnie żadnych produktów cyfrowych w Konsoli Play, postępuj zgodnie z tymi instrukcjami: kroki:

  1. W Konsola Google Play, kliknij Produkty w aplikacji, a następnie Produkty zarządzane. Jeśli zobaczysz ostrzeżenie, postępuj zgodnie z poprzednimi instrukcjami, aby utworzyć aplikację na Androida, lub kliknij link aby utworzyć profil sprzedawcy.
  2. Kliknij Utwórz produkt zarządzany.
  3. Wypełnij pola produktu cyfrowego. Zanotuj identyfikator produktu, – w ten sposób odwołujesz się do produktu w akcji.
  4. Kliknij Zapisz.
  5. Powtórz kroki 2–4 w przypadku każdego produktu, który chcesz sprzedawać.

Przykładowe produkty konsumpcyjne w Konsoli Google Play.

Przygotowywanie projektu w Actions

Po skonfigurowaniu produktów cyfrowych w Konsoli Google Play musisz włączyć transakcji cyfrowych i powiązać projekt w Actions z aplikacją Google Play.

Konfiguracja

Aby włączyć transakcje dotyczące produktów cyfrowych w projekcie Actions, postępuj zgodnie z tymi instrukcjami: kroki:

  1. W konsoli Actions otwórz projekt lub utwórz nowy.
  2. Kliknij Deploy (Wdrażanie) i wybierz Directory information (Informacje o katalogu).
  3. W sekcji Dodatkowe informacje i Transakcje zaznacz pole Tak w sekcji Czy Twoje akcje używają interfejsu Digital Purchase API do realizowania transakcji? towarów cyfrowych.
  4. Kliknij Zapisz.

Tworzenie klucza interfejsu API produktów cyfrowych

Aby wysyłać żądania do interfejsu API produktów cyfrowych, musisz pobrać usługę JSON klucz konta powiązany z projektem w Konsoli Actions.

Aby pobrać klucz konta usługi, wykonaj te czynności:

  1. W Konsoli Actions kliknij ikonę z 3 kropkami w prawym górnym rogu. i wybierz Ustawienia projektu.
  2. Znajdź identyfikator projektu akcji.
  3. Kliknij ten link, zastępując „<project_id>” identyfikatorem projektu: https://console.developers.google.com/apis/credentials?project=project_id
  4. W głównym menu nawigacyjnym kliknij Dane logowania.
  5. Na stronie, która się wyświetli, kliknij Utwórz dane logowania, a następnie Usługa klucz konta.
  6. Otwórz Konto usługi i kliknij Nowe konto usługi.
  7. Nadaj kontu usługi nazwę, na przykład digitaltransactions.
  8. Kliknij Utwórz.
  9. Ustaw Rola na Projekt > Właściciel.
  10. Kliknij Dalej.
  11. Kliknij Utwórz klucz.
  12. Wybierz typ klucza JSON.
  13. Kliknij Utwórz klucz i pobierz klucz konta usługi JSON.

Zapisz ten klucz konta usługi w bezpiecznym miejscu. Będziesz używać tego kluczyka w w celu utworzenia klienta dla interfejsu API zakupów cyfrowych.

Połącz z zasobami reklamowymi Google Play

Aby uzyskać dostęp do swoich produktów cyfrowych z poziomu projektu w Actions, powiąż przy użyciu domeny internetowej i aplikacji z projektem jako połączonych usług.

Aby połączyć domenę internetową i aplikację z Konsoli Play z projektem w Actions, postępuj zgodnie z instrukcjami wykonaj te czynności:

  1. W konsoli działań kliknij Wdróż, a następnie Weryfikacja marki.
  2. Jeśli nie masz połączonych żadnych usług, najpierw połącz witrynę:

    1. Kliknij przycisk usługi internetowej (&lt;/&gt;).
    2. Wpisz adres URL domeny internetowej i kliknij Połącz.

    Google wyśle e-maila z dalszymi instrukcjami do osoby, która i weryfikacji danej domeny Google Search Console. Gdy odbiorca wykona te czynności, witryna powinna pojawią się w sekcji Weryfikacja marki.

  3. Gdy masz już co najmniej 1 połączoną witrynę, wykonaj te czynności, aby: Połącz swoją aplikację na Androida:

    1. W konsoli działań kliknij Wdróż, a następnie Weryfikacja marki.
    2. Kliknij Połącz aplikację.
    3. Na wyświetlonej stronie postępuj zgodnie z instrukcjami, aby zweryfikować swoją sieć. w Konsoli Play. Wybierz aplikację Google Play, która zawiera produktów cyfrowych i wpisać URL domeny internetowej dokładnie w takiej postaci, w jakiej jest on wyświetlany Weryfikacja marki.

      Google ponownie wysyła e-maila weryfikacyjnego do zweryfikowanego właściciela witryny w całej domenie. Gdy administrator zatwierdzi weryfikację, aplikacja Google Play powinna pojawią się w sekcji Weryfikacja marki.

    4. Włącz Dostęp do zakupów w Google Play.

Obraz przedstawiający witrynę i aplikacje połączone z projektem Actions.

Opracuj proces zakupu

Po przygotowaniu projektu w Actions i asortymencie produktów cyfrowych utwórz procesu zakupu produktów w webhooku realizacji rozmowy.

1. Konfigurowanie klienta interfejsu API zakupów cyfrowych

Utwórz w webhooku realizacji rozmowy klienta JWT z usługą klucz JSON konta i Zakres: https://www.googleapis.com/auth/actions.purchases.digital.

Ten kod Node.js tworzy klienta JWT dla interfejsu API zakupów cyfrowych:

  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. Zbieranie informacji

Zanim użytkownik będzie mógł coś kupić, akcja zbierze informacje o możliwości dokonywania zakupów oraz jakie towary są dostępne w zasobów reklamowych.

2. a. Weryfikowanie wymagań dotyczących zakupów cyfrowych

Warto upewnić się, że konto użytkownika jest skonfigurowane pod kątem skuteczności przed dokonaniem zakupu. Zalecenia przejście do sceny DigitalPurchaseCheck, która sprawdza, czy użytkownik jest zweryfikowany. że klienci przeprowadzają transakcję na dozwolonej platformie (inteligentnym ekranie, inteligentnego głośnika czy urządzenia z Androidem) oraz że znajdują się w miejscu, gdzie treści cyfrowe Transakcje są obsługiwane.

Aby utworzyć cyfrową scenę kontroli zakupu, wykonaj te czynności:

  1. Na karcie Sceny dodaj nową scenę o nazwie DigitalPurchaseCheck.
  2. W sekcji Wypełnianie boksu kliknij +, aby dodać nowy boks.
  3. W sekcji Wybierz typ wybierz opcję actions.type.DigitalPurchaseCheckResult jako typu boksu.
  4. W polu nazwy boksu wpisz nazwę DigitalPurchaseCheck.
  5. Zaznacz pole wyboru Dostosuj zapis wartości przedziału (domyślnie włączone).
  6. Kliknij Zapisz.

Cyfrowe sprawdzenie zakupu da jeden z tych rezultatów:

  • Jeśli wymagania są spełnione, parametr sesji zostaje ustawiony z powodem i możesz zezwolić użytkownikowi na zakup produktów cyfrowych.
  • Jeśli nie można spełnić co najmniej jednego z wymagań, parametr sesji ma postać z warunkiem błędu. W takim przypadku należy zmienić temat oderwanie się od transakcji lub zakończenie rozmowy.

Aby sprawdzić wyniki kontroli zakupu cyfrowego:

  1. Na karcie Sceny wybierz nowo utworzoną scenę DigitalPurchaseCheck.
  2. W sekcji Warunek kliknij +, by dodać nowy warunek.
  3. W polu tekstowym wpisz poniższą składnię warunku, aby sprawdzić warunek sukcesu:

    scene.slots.status == "FINAL" && session.params.DigitalPurchaseCheck.resultType == "CAN_PURCHASE"
    
  4. Najedź kursorem na dodany warunek i kliknij strzałkę w górę aby umieścić ją przed if scene.slots.status == "FINAL".

  5. Włącz Wysyłaj potwierdzenia i wyświetlaj proste prompty, które dadzą użytkownikowi znać. jest gotowy do dokonania transakcji:

    candidates:
      - first_simple:
          variants:
            - speech: >-
                You are ready to purchase digital goods.
    
  6. W sekcji Przejście wybierz inną scenę, pozwalając użytkownikowi przejść dalej. rozmowę i dokonywać transakcji.

  7. Wybierz warunek else if scene.slots.status == "FINAL".

  8. Włącz Wysyłaj potwierdzenia i wyświetlaj proste prompty, które dadzą użytkownikowi znać. nie mogą dokonać transakcji:

    candidates:
      - first_simple:
          variants:
            - speech: Sorry you cannot perform a digital purchase.
    
  9. W sekcji Przenoszenie wybierz Zakończ rozmowę, aby zakończyć rozmowę.

2. Zbieranie dostępnych zasobów reklamowych

Aby przesłać prośbę o dostęp do aktualnie dostępnego Sklepu Play, użyj interfejsu API zakupów cyfrowych w zasobach reklamowych, a potem wbuduj je w tablicę obiektów JSON dla każdego produktu. Odwołujesz się do tej tablicy później, aby pokazać użytkownikowi, jakie opcje są dostępne do zakupu.

Każdy produkt cyfrowy jest przedstawiony jako kod SKU w formacie JSON. ten kod Node.js zawiera omówienie oczekiwanego formatowania poszczególnych kodów 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
  ]
}

Wyślij żądanie POST do https://actions.googleapis.com/v3/packages/{packageName}/skus:batchGet gdzie {packageName} to nazwa pakietu aplikacji w Google Play w konsoli (np. com.myapp.digitalgoods) i sformatuj wynik w formacie tablica obiektów SKU.

Aby pobrać z tablicy wynikowej tylko określone produkty cyfrowe, wymień produkt identyfikatory produktów cyfrowych (widoczne pod każdym produktem w aplikacji w Google Play, konsoli), które chcesz udostępnić do zakupu w aplikacji body.ids.

Ten kod Node.js prosi o listę dostępnych towarów z do zakupów API i formatuje wynik w postaci tablicy kodów 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': ['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. Tworzenie zamówienia

Aby rozpocząć zakup cyfrowy przez użytkownika, przedstaw listę swoich produktów cyfrowych dostępnych do zakupu. Możesz wykorzystać różne multimedialne typy odpowiedzi odzwierciedlające na giełdzie i poprosi użytkownika o dokonanie wyboru.

Poniższy kod Node.js odczytuje tablicę zasobów reklamowych obiektów SKU i tworzy wyświetl odpowiedź z listy z jednym elementem listy dla każdy:

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,
}));

Utwórz zakup na podstawie wyboru użytkownika

Gdy użytkownik wybierze produkt, możesz utworzyć zamówienie. W tym celu na stronie powiązany z wybranym elementem, możesz wywołać webhooka przy tworzeniu zamówienia. Zapisz dane zamówienia ze swojej realizacji w sesji . Obiekt kolejności jest używany w różnych scenach w tej samej sesji.

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": ""
};

W Actions Builder możesz zamiast tego skonfigurować przedział za pomocą edytora JSON powyższego obiektu porządku. Obie implementacje używają tego samego formatu CompletePurchaseValueSpec, który znajdziesz w Odniesienie do ładunku webhooka JSON.

4. Sfinalizuj zakup

Gdy użytkownik wybierze produkt, możesz sfinalizować zakup. Gdy wypełnisz powiązanego z wybranym elementem, przejdź do sceny, która finalizuje zakup.

Utwórz scenę finalizacji zakupu

  1. Na karcie Sceny dodaj nową scenę o nazwie CompletePurchase.
  2. W sekcji Wypełnianie boksu kliknij +, aby dodać nowy boks.
  3. W sekcji Wybierz typ ustaw actions.type.CompletePurchaseValue jako typu boksu.
  4. W polu nazwy boksu wpisz nazwę CompletePurchase.
  5. Zaznacz pole wyboru Dostosuj zapis wartości przedziału (domyślnie włączone).
  6. W sekcji Skonfiguruj przedział wybierz w menu Use session parameter.
  7. W sekcji Skonfiguruj przedział wpisz nazwę parametru sesji używanego do zapisz zamówienie w polu tekstowym (np. $session.params.purchase).
  8. Kliknij Zapisz.

5. Obsługa wyników

Przedział typu actions.type.CompletePurchaseValue może zawierać te elementy wyniki:

  • PURCHASE_STATUS_OK: zakup został zrealizowany. Transakcja jest na tym etapie. Opuść proces transakcji i wróć do do rozmowy z klientami.
  • PURCHASE_STATUS_ALREADY_OWNED: transakcja nie powiodła się, ponieważ użytkownik ma już ten element. Aby uniknąć tego błędu, sprawdź poprzednie dane użytkownika do ich kupna i dostosowania wyświetlanych produktów, tak aby użytkownik nie miał możliwości ponownie kupić swoje produkty.
  • PURCHASE_STATUS_ITEM_UNAVAILABLE: transakcja nie powiodła się, ponieważ żądany element jest niedostępny. Aby uniknąć tego błędu, sprawdź dostępne Kody SKU bliższe momentowi zakupu.
  • PURCHASE_STATUS_ITEM_CHANGE_REQUESTED: transakcja nie powiodła się, ponieważ użytkownik zdecydował się kupić coś innego. Ponownie prześlij zapytanie w ramach procesu tworzenia zamówienia. aby użytkownik mógł od razu podjąć inną decyzję.
  • PURCHASE_STATUS_USER_CANCELLED: transakcja nie powiodła się, ponieważ użytkownik Użytkownik anulował proces zakupu. Użytkownik przedwcześnie opuścił proces, zapytać użytkownika, czy chce ponowić transakcję, czy ją opuścić; a nawet ich anulowania.
  • PURCHASE_STATUS_ERROR: transakcja nie powiodła się z nieznanego powodu. Poinformuj użytkownika, że transakcja się nie powiodła, i zapytaj, czy chce spróbować ponownie.
  • PURCHASE_STATUS_UNSPECIFIED: transakcja nie powiodła się z nieznanego powodu, co skutkuje nieznanym stanem. Aby rozwiązać ten problem, zezwól Użytkownik wie, że transakcja się nie powiodła, i zapyta, czy chce spróbować ponownie.

Należy obsługiwać każdy z tych wyników ze sceny CompletePurchase.

  1. Na karcie Sceny wybierz nowo utworzoną scenę CompletePurchase.
  2. W sekcji Warunek kliknij +, by dodać nowy warunek.
  3. W polu tekstowym wpisz poniższą składnię warunku, aby sprawdzić warunek sukcesu:

    scene.slots.status == "FINAL" && session.params.CompletePurchase.purchaseStatus == "PURCHASE_STATUS_OK"
    
  4. Najedź kursorem na dodany warunek i kliknij strzałkę w górę aby umieścić ją przed if scene.slots.status == "FINAL".

  5. Włącz Wysyłaj potwierdzenia i wyświetlaj proste prompty, które dadzą użytkownikowi znać. jest gotowy do dokonania transakcji:

    candidates:
      - first_simple:
          variants:
            - speech: >-
                Your purchase was successful.
    
  6. W sekcji Przenoszenie wybierz Zakończ rozmowę, aby zakończyć rozmowę.

Powtórz powyższe kroki dla każdego typu wyniku zakupu, który chcesz obsługiwać.

6. Spraw, aby zakup był powtarzalny

Po udanej transakcji wyślij żądanie POST do zakupów cyfrowych interfejsu API do konsumpcji produktu, umożliwiając użytkownikowi ponowny zakup. Wyślij swoje wyślij prośbę do https://actions.googleapis.com/v3/conversations/{sessionId}/entitlement:consume punktu końcowego z identyfikatorem sesji znalezionym w session.id.

Żądanie POST musi też zawierać obiekt tokena zakupu powiązany z zakup użytkownika, w kodzie JSON żądania użytkownika packageEntitlements.entitlements.inAppDetails.inAppPurchaseData.purchaseToken

Ten kod wysyła żądanie consume do interfejsu API zakupów cyfrowych. informuje, czy żądanie zostało zrealizowane:

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}`);
  }
});

odzwierciedlać zakupy użytkownika,

Gdy użytkownik wysyła zapytanie do akcji, obiekt user żądania JSON żądania zawiera obiekt listę zakupów. Sprawdź te informacje i zmień akcje: na podstawie treści opłaconych przez użytkownika.

Poniższy przykładowy kod pokazuje obiekt user żądania, który zawiera packageEntitlements wcześniejszych zakupów w aplikacji Pakiet 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"
    ]
  }
}

Testowanie projektu

Podczas testowania projektu możesz włączyć tryb piaskownicy w Konsoli Actions aby przetestować Akcję bez obciążania formy płatności. Aby włączyć tryb piaskownicy, wykonaj te czynności:

  1. W Konsoli Actions kliknij Przetestuj w panelu nawigacyjnym.
  2. Kliknij Ustawienia.
  3. Włącz opcję Piaskownica programowania.