Tworzenie transakcji subskrypcji cyfrowych

Z tego przewodnika dowiesz się, jak dodać transakcje subskrypcji cyfrowych do akcji konwersacyjnej, aby użytkownicy mogli kupować Twoje subskrypcje.

Kluczowe terminy: towar cyfrowy subskrypcja to jednostka magazynowa (SKU), która wymaga cyklicznej opłaty od użytkownika, podobnie jak w przypadku czasopisma online. Różni się to od towaru cyfrowego konsumpcyjnego, który użytkownik musi ponownie kupić ręcznie, i niezużywalnego towaru cyfrowego, który jest kupowany automatycznie tylko raz.

Więcej informacji o subskrypcjach cyfrowych znajdziesz w dokumentacji Androida na temat funkcji dostępnych tylko na ich podstawie.

Przepływ transakcji

W tym przewodniku opisujemy wszystkie etapy procesu tworzenia produktów cyfrowych. Akcja obsługuje transakcje dotyczące produktów cyfrowych w następujący sposób:

  1. Skonfiguruj klienta interfejsu API zakupów cyfrowych: akcja używa interfejsu API zakupów cyfrowych do komunikacji z zasobami reklamowymi Google Play i transakcjami. Zanim akcja podejmie jakiekolwiek inne działania, tworzy klienta JWT z kluczem usługi do komunikacji z interfejsem API zakupów cyfrowych.
  2. Zbieranie informacji: akcja zbiera podstawowe informacje o użytkowniku i Twoich zasobach reklamowych Google Play, aby przygotować się do transakcji.
    1. Weryfikowanie wymagań dotyczących transakcji: akcja korzysta z Asystenta wymagań dotyczących transakcji cyfrowych na początku procesu zakupu, aby upewnić się, że użytkownik może dokonać transakcji.
    2. Zbieranie dostępnych zasobów reklamowych: akcja sprawdza zasoby reklamowe Google Play i identyfikuje produkty, które są obecnie dostępne do zakupu.
  3. Utwórz zamówienie: akcja prezentuje użytkownikowi dostępne produkty cyfrowe, aby mógł je wybrać.
  4. Sfinalizuj zakup: akcja używa interfejsu API zakupów cyfrowych do zainicjowania zakupu wybranego przez użytkownika w Sklepie Google Play.
  5. Przetwórz wynik: akcja otrzymuje kod stanu transakcji i powiadamia użytkownika, że zakup się udał (lub wykonuje dodatkowe czynności).

Ograniczenia i wytyczne dotyczące sprawdzania

W przypadku akcji z transakcjami obowiązują dodatkowe zasady. Sprawdzenie działań, które obejmują transakcje, może nam zająć kilka tygodni, więc uwzględnij ten czas przy planowaniu harmonogramu publikacji. Aby ułatwić proces sprawdzania, przed przesłaniem akcji do sprawdzenia upewnij się, że przestrzegasz zasad i wytycznych dotyczących transakcji.

Akcje, które służą do sprzedaży produktów cyfrowych, można wdrażać tylko w tych krajach:

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

Wymagania wstępne

Zanim włączysz transakcje cyfrowe do akcji, musisz spełnić te wymagania wstępne:

Powiąż aplikację na Androida

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

  1. Utwórz nowy projekt w Android Studio lub w wybranym IDE Androida. Wybierz opcje w promptach konfiguracji projektu, aby utworzyć bardzo podstawową aplikację.
  2. Nadaj projektowi nazwę pakietu, np. com.mycompany.myapp. Nie pozostawiaj tej nazwy domyślnej, ponieważ w Konsoli Play nie będzie można przesyłać pakietów zawierających com.example.
  3. Otwórz plik AndroidManifest.xml aplikacji.
  4. Dodaj ten wiersz kodu w elemencie manifest:

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

    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 plik APK. W Android Studio wykonaj te czynności:

    1. Kliknij Build (Utwórz), Wygeneruj podpisany pakiet / plik APK.
    2. Kliknij Dalej.
    3. W sekcji Ścieżka magazynu kluczy kliknij Utwórz nowy.
    4. Wypełnij każde pole, a potem kliknij OK. Zapisz sobie hasło do magazynu kluczy i hasło klucza i zapisz je w bezpiecznym miejscu, bo będziesz ich później potrzebować.
    5. Kliknij Dalej.
    6. Wybierz release.
    7. Wybierz V1 (podpis JAR).
    8. Kliknij Zakończ.
    9. Po kilku sekundach Android Studio wygeneruje plik app-release.apk. Znajdź ten plik do późniejszego użycia.
  6. Utwórz nową aplikację w Konsoli Google Play.

  7. Przejdź do sekcji Wersje aplikacji.

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

  9. Kliknij przycisk Utwórz wersję.

  10. W sekcji Pozwól Google zarządzać Twoim kluczem podpisywania i go chronić wpisz informacje o swoim kluczu podpisywania.

  11. Prześlij plik APK.

  12. Kliknij Zapisz.

Utwórz swoje produkty cyfrowe

Jeśli nie masz obecnie żadnych produktów cyfrowych w Konsoli Play, wykonaj te czynności:

  1. W Konsoli Google Play wybierz Produkty w aplikacji, a następnie Subskrypcje. Jeśli zobaczysz ostrzeżenie, wykonaj wcześniejsze instrukcje, aby utworzyć aplikację na Androida, lub kliknij link, aby utworzyć profil sprzedawcy.
  2. Kliknij Utwórz subskrypcję.
  3. Wypełnij pola produktu cyfrowego. Zanotuj identyfikator produktu – dzięki temu będziesz się odwoływać do tego produktu w akcji.
  4. Kliknij Zapisz.
  5. Powtórz kroki 2–4 dla każdego produktu, który chcesz sprzedawać.

Przykładowe subskrypcje w Konsoli Google Play

Przygotuj projekt w Actions

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

Konfiguracja

Aby włączyć transakcje produktów cyfrowych w projekcie Actions, wykonaj te czynności:

  1. W Konsoli Actions otwórz swój projekt lub utwórz nowy.
  2. Kliknij Wdróż i wybierz Informacje z katalogu.
  3. W sekcjach Dodatkowe informacje i Transakcje zaznacz pole Tak w sekcji Czy Twoje działania używają interfejsu Digital Buy API do wykonywania transakcji na produktach cyfrowych.
  4. Kliknij Zapisz.

Tworzenie klucza interfejsu API produktów cyfrowych

Aby wysyłać żądania do interfejsu Digital products API, musisz pobrać klucz konta usługi JSON powiązany z projektem w Actions Console.

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

  1. W prawym górnym rogu Konsoli Actions kliknij ikonę z 3 kropkami, a potem 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 otwórz Dane logowania.
  5. Na wyświetlonej stronie kliknij Utwórz dane logowania i wybierz Klucz konta usługi.
  6. Otwórz Service Account (Konto usługi) i kliknij New Service Account (Nowe konto usługi).
  7. Nadaj kontu usługi nazwę, na przykład „digitaltransactions”.
  8. Kliknij Utwórz.
  9. W polu Rola wybierz 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. Tego klucza użyjesz podczas realizacji transakcji, aby utworzyć klienta interfejsu API zakupów cyfrowych.

Łączenie z zasobami reklamowymi Google Play

Aby mieć dostęp do produktów cyfrowych z projektu w Actions, powiąż domenę i aplikację z projektem jako połączone usługi.

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

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

    1. Kliknij przycisk usługi internetowej (</>).
    2. Wpisz adres URL domeny internetowej i kliknij Połącz.

    Google wyśle e-maila z dalszymi instrukcjami do osoby, która została zweryfikowana w przypadku danej domeny internetowej w Google Search Console. Gdy odbiorca tego e-maila wykona te czynności, witryna powinna pojawić się w sekcji Weryfikacja marki.

  3. Gdy masz już co najmniej jedną połączoną witrynę, wykonaj te czynności, aby połączyć aplikację na Androida:

    1. W konsoli Actions 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ą domenę w Konsoli Play. Wybierz aplikację Google Play, która zawiera Twoje produkty cyfrowe, i wpisz adres URL domeny internetowej dokładnie w takiej postaci, w jakiej jest on widoczny na stronie Weryfikacja marki.

      Ponownie Google wysyła e-maila weryfikacyjnego do zweryfikowanego właściciela domeny. Gdy zespół zatwierdzi weryfikację, Twoja aplikacja w 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.

Tworzenie procesu zakupu

Po przygotowaniu projektu Actions i asortymentu produktów cyfrowych utwórz proces zakupu produktów cyfrowych na webhooku realizacji rozmowy.

1. Konfigurowanie klienta interfejsu API zakupów cyfrowych

W webhooku realizacji rozmowy utwórz klienta JWT z kluczem JSON konta usługi i zakresem https://www.googleapis.com/auth/actions.purchases.digital.

Ten kod w środowisku 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 dokona zakupu, akcja zbiera informacje o jego możliwościach dokonywania zakupów oraz o tym, które produkty są dostępne w Twoim asortymencie.

2. a. Zweryfikuj wymagania dotyczące transakcji

Zanim umożliwisz użytkownikowi dokonanie zakupu, warto upewnić się, że jego konto jest skonfigurowane do wykonywania transakcji. Przejdź do sceny DigitalPurchaseCheck, która sprawdza, czy użytkownik jest zweryfikowany i czy wykonuje transakcję na dozwolonym urządzeniu (inteligentny ekran, inteligentny głośnik lub urządzenie z Androidem) i czy znajduje się w regionie, w którym obsługiwane są transakcje cyfrowe.

Aby utworzyć scenę sprawdzania zakupów cyfrowych:

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

Kontrola zakupu cyfrowego może mieć jeden z tych wyników:

  • Jeśli zostaną spełnione wymagania, parametr sesji jest ustawiany jako warunek powodzenia i możesz zezwolić użytkownikowi na zakup produktów cyfrowych.
  • Jeśli co najmniej 1 z wymagań nie zostanie spełniony, parametr sesji będzie miał warunek niepowodzenia. W takim przypadku należy odwrócić rozmowę od procesu transakcyjnego lub zakończyć rozmowę.

Aby przetworzyć wynik kontroli zakupu cyfrowego, wykonaj te czynności:

  1. Na karcie Sceny wybierz nowo utworzoną scenę DigitalPurchaseCheck.
  2. W sekcji Warunek kliknij +, by dodać nowy warunek.
  3. W polu tekstowym wpisz tę składnię warunku, aby sprawdzić, czy występuje warunek powodzenia:

    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ć go przed if scene.slots.status == "FINAL".

  5. Włącz Wyślij potwierdzenia i daj użytkownikowi znać, że 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ę, aby użytkownik mógł kontynuować rozmowę i dokonać transakcji.

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

  8. Włącz Wysyłanie potwierdzeń i wyświetlaj proste powiadomienie informujące użytkownika, że nie może 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. b. Zbieranie dostępnych zasobów reklamowych

Za pomocą interfejsu API zakupów cyfrowych poproś o dostęp do Twojego asortymentu w Sklepie Play, a potem wbudowaj go w tablicę obiektów JSON poszczególnych produktów. Odwołujesz się do tej tablicy później, aby pokazać użytkownikowi, jakie opcje są dostępne do zakupu.

Każdy z Twoich produktów cyfrowych jest przedstawiony jako kod SKU w formacie JSON. Ten kod w środowisku Node.js określa oczekiwane formatowanie każdego kodu 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 punktu końcowego https://actions.googleapis.com/v3/packages/{packageName}/skus:batchGet, gdzie {packageName} to nazwa pakietu aplikacji w Konsoli Google Play (np. com.myapp.digitalgoods), i sformatuj wynik w tablicę obiektów SKU.

Aby pobrać tylko określone produkty cyfrowe z utworzonej tablicy, podaj identyfikatory produktów cyfrowych (wyświetlane pod każdym produktem w aplikacji w Konsoli Google Play), które chcesz udostępnić w sprzedaży w body.ids.

Ten kod Node.js prosi o udostępnienie listy dostępnych produktów do interfejsu Digital purchases API i formatuje wynik jako tablicę 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': ['annual.subscription']
      },
    }, (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ąć proces zakupu przez użytkownika, przedstaw listę towarów cyfrowych, które można kupić. Możesz używać różnych typów odpowiedzi rozszerzonych, aby zaprezentować swoje produkty i zachęcić użytkowników do dokonania wyboru.

Ten kod Node.js odczytuje tablicę zasobów reklamowych obiektów SKU i tworzy odpowiedź typu „lista” z po jednym elementem dla każdego z nich:

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 wybranych przez użytkownika

Gdy użytkownik wybierze produkt, możesz utworzyć zamówienie. Aby to zrobić, w boksie powiązanym z wybranym elementem możesz wywołać webhooka w celu utworzenia zamówienia. Po realizacji zamówienia zapisz dane zamówienia w parametrze sesji. Obiekt zamówienia 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 użyć edytora JSON, aby skonfigurować przedział z powyższym obiektem kolejności. Obie implementacje korzystają z tego samego formatu dla CompletePurchaseValueSpec, który znajdziesz w dokumentacji ładunku webhooka JSON.

4. Dokończ zakup

Gdy użytkownik wybierze produkt, możesz sfinalizować zakup. Po wypełnieniu boksu powiązanego z wybranym elementem przejdź do sceny, w której następuje sfinalizowanie zakupu.

Utwórz scenę zakupu

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

5. Obsługa wyniku

Boks typu actions.type.CompletePurchaseValue może uzyskiwać takie wyniki:

  • PURCHASE_STATUS_OK: zakup został zrealizowany. Na tym etapie transakcja jest zakończona, więc wyjdź z niej i wróć do rozmowy.
  • PURCHASE_STATUS_ALREADY_OWNED: transakcja nie powiodła się, ponieważ użytkownik jest już właścicielem tego elementu. Aby uniknąć tego błędu, sprawdź wcześniejsze zakupy użytkownika i dostosuj wyświetlane produkty tak, aby nie mógł ponownie kupić produktów, które już należą.
  • 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żej terminu zakupu.
  • PURCHASE_STATUS_ITEM_CHANGE_REQUESTED: transakcja nie powiodła się, ponieważ użytkownik zdecydował się kupić coś innego. Ponownie wyślij prośbę o utworzenie zamówienia, aby użytkownik mógł od razu podjąć inną decyzję.
  • PURCHASE_STATUS_USER_CANCELLED: transakcja nie powiodła się, ponieważ użytkownik anulował proces zakupu. Użytkownik przedwcześnie wyszedł z procesu, więc zapytaj go, czy chce ponowić transakcję, czy też całkowicie ją zakończyć.
  • PURCHASE_STATUS_ERROR: transakcja nie powiodła się z nieznanego powodu. Poinformuj użytkownika, że transakcja się nie powiodła, i zapytaj użytkownika, czy chce spróbować jeszcze raz.
  • PURCHASE_STATUS_UNSPECIFIED: transakcja nie powiodła się z nieznanego powodu, przez co jej stan jest nieznany. Aby poradzić sobie z tym stanem błędu, poinformuj użytkownika, że transakcja się nie powiodła, i zapytaj, czy chce spróbować jeszcze raz.

Dla każdego z tych wyników należy pracować w scenie CompletePurchase.

  1. Na karcie Sceny wybierz nowo utworzoną scenę CompletePurchase.
  2. W sekcji Warunek kliknij +, by dodać nowy warunek.
  3. W polu tekstowym wpisz tę składnię warunku, aby sprawdzić, czy występuje warunek powodzenia:

    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ć go przed if scene.slots.status == "FINAL".

  5. Włącz Wyślij potwierdzenia i daj użytkownikowi znać, że 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ć.

Odzwierciedlać zakupy użytkownika

Gdy użytkownik wysyła zapytanie do akcji, obiekt user żądania JSON zawiera listę jego zakupów. Sprawdź te informacje i zmień odpowiedź w akcji zależnie od tego, za jakie treści użytkownik zapłacił.

Poniższy przykładowy kod przedstawia obiekt user żądania, który zawiera packageEntitlements wcześniejszych zakupów w aplikacji dotyczących pakietu 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 testować akcję bez obciążania formy płatności. Aby włączyć tryb piaskownicy, wykonaj te czynności:

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