Nutzbare digitale Transaktionen erstellen (Dialogflow)

In diesem Leitfaden wird erläutert, wie Sie digitale Transaktionen in Ihre Konversationsansicht Aktion, damit Nutzer Ihre digitalen Verbrauchsgüter kaufen können

Schlüsselbegriffe: Eine konsumierbare digitale Ware ist eine Artikelnummer, die Ein Nutzer kann mehr als einmal verwenden und kaufen, z. B. eine bestimmte Menge an In-Game-Währung für ein Android-Spiel. Diese digitale Ware unterscheidet sich von einer nicht konsumierbaren Ware. digitale Ware, die ein Nutzer nur einmal kaufen kann.

Weitere Informationen zu Einmalkaufprodukten finden Sie in der Android- Dokumentation zu einmaligen produktspezifischen Funktionen.

Einschränkungen und Richtlinien für Überprüfungen

Für Aktionen mit Transaktionen gelten zusätzliche Richtlinien. Es kann einige Zeit dauern, Wochen, um Aktionen zu überprüfen, die Transaktionen beinhalten. Berücksichtigen Sie also diese Zeit, Planung Ihres Veröffentlichungszeitplans. Um den Überprüfungsprozess zu erleichtern, mit dem Richtlinien für Transaktionen bevor du deine Aktion zur Überprüfung einreichst.

Aktionen, mit denen digitale Waren verkauft werden, können nur in den folgenden Ländern durchgeführt werden:

  • Australien
  • Brasilien
  • Kanada
  • Indonesien
  • Japan
  • Mexiko
  • Russland
  • Singapur
  • Thailand
  • Türkei
  • Vereinigtes Königreich
  • USA

Transaktionsablauf

In diesem Leitfaden wird jeder Entwicklungsschritt bei digitalen Waren beschrieben. Transaktionsablauf. Wenn deine Aktion Transaktionen für digitale Waren abwickelt, verwendet den folgenden Ablauf:

  1. Richte einen API-Client für digitale Käufe ein: Deine Aktion verwendet den digitalen Purchases API, um mit Ihrem Google Play-Inventar zu kommunizieren und Transaktionen durchzuführen. Bevor deine Aktion etwas anderes tut, erstellt sie einen JWT-Client mit einem -Serviceschlüssel zur Kommunikation mit der Digital Purchases API.
  2. Informationen sammeln: Deine Aktion sammelt grundlegende Informationen über die und Ihr Google Play-Inventar, um sich auf eine Transaktion vorzubereiten.
    1. Transaktionsanforderungen validieren: Deine Aktion verwendet die digitale die Anforderungen für Transaktionen zu Beginn des Kaufvorgangs, um sicherzustellen, dass der Nutzer Transaktionen durchführen kann.
    2. Verfügbares Inventar zusammenstellen: Deine Aktion prüft deinen Google Play-Kanal und ermitteln, welche Artikel derzeit zum Kauf zur Verfügung stehen.
  3. Bestellung zusammenstellen: Deine Aktion präsentiert dem Kind die verfügbaren digitalen Waren. damit die Nutzenden ein Produkt zum Kauf auswählen können.
  4. Kauf abschließen: Deine Aktion verwendet die Digital Purchases API, um einen Kauf mit der Auswahl des Nutzers im Google Play Store initiieren.
  5. Ergebnis verarbeiten: Deine Aktion erhält einen Statuscode für die Transaktion und informiert den Nutzer darüber, dass der Kauf erfolgreich war weitere Schritte).
  6. Kauf wiederholbar machen: Deine Aktion verwendet digitale Käufe. API zum „Anwenden“ um den gekauften Artikel erneut von diesem Nutzer.

Vorbereitung

Bevor du digitale Transaktionen in deine Aktion einbindest, benötigst du das folgende Voraussetzungen erfüllen:

Android-App verknüpfen

Wenn Sie derzeit keine Android-App mit der Berechtigung „Abrechnung“ in der Google Play Console verwenden, gehen Sie so vor:

  1. In Android Studio oder in der Android-IDE Ihrer Wahl ein neues Projekt erstellen. Optionen auswählen in der Projekteinrichtung aufgefordert, eine sehr einfache App zu erstellen.
  2. Geben Sie dem Projekt einen Paketnamen, z. B. com.mycompany.myapp. Lassen Sie diesen Namen nicht als Standardname, da Sie keine Pakete hochladen können, die com.example in die Play Console aufnehmen.
  3. Öffnen Sie die AndroidManifest.xml-Datei Ihrer App.
  4. Fügen Sie die folgende Codezeile in das manifest-Element ein:

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

    Die Datei AndroidManifest.xml sollte wie den folgenden Codeblock aussehen:

    <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. Erstelle deine App als signiertes APK. Führen Sie in Android Studio die folgenden Schritte aus:

    1. Rufe Build und Signiertes Bundle / APK generieren auf.
    2. Klicken Sie auf Weiter.
    3. Klicken Sie unter Schlüsselspeicherpfad auf Neu erstellen.
    4. Füllen Sie die einzelnen Felder aus und klicken Sie dann auf OK. Notieren Sie sich Ihren Schlüsselspeicher Passwort und Schlüsselpasswort und bewahren Sie diese an einem sicheren Ort auf, da die Sie später verwenden werden.
    5. Klicken Sie auf Weiter.
    6. Wählen Sie Release aus.
    7. Wählen Sie V1 (JAR Signature) aus.
    8. Klicken Sie auf Fertig.
    9. Nach einigen Sekunden generiert Android Studio eine app-release.apk-Datei. Suchen Sie diese Datei zur späteren Verwendung.
  6. Im Google Play Console um eine neue Anwendung zu erstellen.

  7. Rufen Sie App-Releases auf.

  8. Klicken Sie unter Geschlossene Tracks auf Verwalten und dann auf Alpha.

  9. Klicken Sie auf die Schaltfläche Release erstellen.

  10. Geben Sie unter Google darf Ihren Signaturschlüssel verwalten und schützen Ihre Signatur ein. wichtige Informationen.

  11. Laden Sie Ihre APK-Datei hoch.

  12. Klicken Sie auf Speichern.

Digitale Waren erstellen

Wenn Sie derzeit keine digitalen Waren in der Play Console haben, folgen Sie diesen Schritte:

  1. Im Google Play Console Rufen Sie In-App-Produkte und dann Verwaltete Produkte auf. Wenn Sie eine Warnung sehen, folgen Sie der vorherigen Anleitung zum Erstellen einer Android-App oder klicken Sie auf den Link um ein Händlerprofil zu erstellen.
  2. Klicken Sie auf Verwaltetes Produkt erstellen.
  3. Füllen Sie die Felder für Ihr digitales Produkt aus. Notieren Sie sich die Produkt-ID, So verweisst du in deiner Aktion auf dieses Produkt.
  4. Klicken Sie auf Speichern.
  5. Wiederholen Sie die Schritte 2 bis 4 für jedes Produkt, das Sie verkaufen möchten.

Beispiel für Verbrauchsgüter in der Google Play Console

Actions-Projekt vorbereiten

Nachdem Sie Ihre digitalen Waren in der Google Play Console eingerichtet haben, müssen Sie digitale Transaktionen durchführen und dein Actions-Projekt mit deiner Play-App verknüpfen.

So aktivieren Sie Transaktionen für digitale Waren in Ihrem Actions-Projekt: Schritte:

  1. Öffnen Sie Ihr Projekt in der Actions Console oder erstellen Sie ein neues.
  2. Klicken Sie auf Bereitstellen und dann auf Verzeichnisinformationen.
  3. Klicken Sie unter Zusätzliche Informationen und Transaktionen das Kästchen Ja an. unter Verwenden Sie für Ihre Aktionen die Digital Purchase API, um Transaktionen durchzuführen? von digitalen Waren.
  4. Klicken Sie auf Speichern.

API-Schlüssel für digitale Produkte erstellen

Wenn Sie Anfragen an die Digital Goods API senden möchten, müssen Sie einen JSON-Dienst herunterladen Kontoschlüssel, der mit Ihrem Actions Console-Projekt verknüpft ist.

So rufen Sie Ihren Dienstkontoschlüssel ab:

  1. Klicken Sie in der Actions Console oben rechts auf das Dreipunkt-Menü. und dann auf Projekteinstellungen.
  2. Suche die Projekt-ID deiner Aktion.
  3. Folgen Sie diesem Link und ersetzen Sie dabei „<project_id>“ durch die Projekt-ID: https://console.developers.google.com/apis/credentials?project=project_id
  4. Gehen Sie in der Hauptnavigation zu Anmeldedaten.
  5. Klicken Sie auf der angezeigten Seite auf Anmeldedaten erstellen und dann auf Dienst Kontoschlüssel
  6. Gehen Sie zu Dienstkonto und klicken Sie auf Neues Dienstkonto.
  7. Geben Sie dem Dienstkonto einen Namen wie „digitaltransactions“.
  8. Klicken Sie auf Erstellen.
  9. Legen Sie die Rolle auf Projekt > Inhaber.
  10. Klicken Sie auf Weiter.
  11. Klicken Sie auf Schlüssel erstellen.
  12. Wählen Sie den Schlüsseltyp JSON aus.
  13. Klicken Sie auf Schlüssel erstellen und laden Sie den JSON-Dienstkontoschlüssel herunter.

Bewahren Sie diesen Dienstkontoschlüssel an einem sicheren Ort auf. Sie benötigen diesen Schlüssel in Ihrem Fulfillment, um einen Client für die Digital Purchases API zu erstellen.

Verbindung zu Ihrem Play-Inventar herstellen

Wenn du über ein Actions-Projekt auf deine digitalen Waren zugreifen möchtest, verknüpfe dein Webdomain und App mit Ihrem Projekt als verbundenen Properties haben.

Hinweis:Die Überprüfung kann bis zu einer Woche dauern. Ihre Properties. Wenn Ihre Website oder App nach diesem Zeitraum nicht mehr verknüpft ist, wenden Sie sich bitte an den Support.

Um die Webdomain und App der Play Console mit deinem Actions-Projekt zu verbinden, folge diese Schritte:

  1. Klicken Sie in der Actions Console auf Bereitstellen und dann auf Markenüberprüfung.
  2. Wenn Sie noch keine Properties verknüpft haben, müssen Sie zuerst eine Verknüpfung mit einer Website herstellen:

    1. Klicken Sie auf die Schaltfläche für die Web-Property (&lt;/&gt;).
    2. Geben Sie die URL für Ihre Webdomain ein und klicken Sie auf Verbinden.

    Google sendet eine E-Mail mit weiteren Anweisungen an die Person, die die für diese Webdomain im Google Search Console. Sobald der Empfänger dieser E-Mail diese Schritte ausgeführt hat, sollte die Website werden unter Markenüberprüfung angezeigt.

  3. Sobald mindestens eine Website verknüpft ist, führen Sie die folgenden Schritte aus, Android-App verbinden:

    1. Klicken Sie in der Actions Console auf Bereitstellen und dann auf Markenüberprüfung.
    2. Klicken Sie auf App verknüpfen.
    3. Folgen Sie der Anleitung auf der angezeigten Seite, um Ihre Website zu bestätigen. Domain in der Play Console. Wählen Sie die Play-App aus, die Ihr digitale Waren und geben Sie die Webdomain-URL genau so ein, wie sie auf der Seite Markenüberprüfung

      Google sendet erneut eine Bestätigungs-E-Mail an den bestätigten Inhaber von die Domain. Sobald er die Bestätigung genehmigt hat, sollte deine Play-App werden unter Markenüberprüfung angezeigt.

    4. Aktivieren Sie die Option Auf Käufe bei Google Play zugreifen.

Abbildung der Website und der Apps, die mit dem Actions-Projekt verknüpft sind.

Kaufprozess optimieren

Bereiten Sie Ihr Actions-Projekt und das Inventar für digitale Waren vor und erstellen Sie ein digitales in Ihrem Webhook zur Auftragsausführung für die Kommunikation von Waren.

1. API-Client für digitale Käufe einrichten

Erstellen Sie im Webhook der Unterhaltungsausführung einen JWT-Client mit Ihrem Dienst. JSON-Schlüssel des Kontos und den https://www.googleapis.com/auth/actions.purchases.digital Bereich.

Mit dem folgenden Node.js-Code wird ein JWT-Client für die API für digitale Käufe erstellt:

  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. Informationen einholen

Bevor der Nutzer etwas kaufen kann, erfasst deine Aktion Informationen zum die Möglichkeit des Nutzers, Einkäufe zu tätigen, und welche Waren auf Ihrem des Inventars.

2. a) Transaktionsanforderungen validieren

Es empfiehlt sich, das Nutzerkonto so einzurichten, bevor Sie ihnen die Möglichkeit geben, etwas zu kaufen. Dieser Schritt Dazu gehört auch die Überprüfung, ob der Nutzer eine Zahlungsmethode konfiguriert hat und sich in einem in dem digitale Transaktionen unterstützt werden. Zu Beginn der Transaktion Vorgang ausführen, verwenden Sie den DIGITAL_PURCHASE_CHECK-Helper, um die Transaktion des Nutzers zu validieren. mit Assistant konfigurieren.

Im folgenden Node.js-Code wird DIGITAL_PURCHASE_CHECK am Anfang des Gespräch:

app.intent('Default Welcome Intent', async (conv, { SKU }) => {
  // Immediately invoke digital purchase check intent to confirm
  // purchase eligibility.
  conv.ask(new DigitalPurchaseCheck());
});

Das Ergebnis dieser Prüfung finden Sie in den Konversationsargumenten wie folgt: DIGITAL_PURCHASE_CHECK_RESULT Fahren Sie auf der Grundlage dieses Ergebnisses fort: oder wechsle weg und fordere sie auf, Konfiguration.

Der folgende Node.js-Code verarbeitet das Ergebnis der Anforderungsprüfung :

app.intent('Digital Purchase Check', async (conv) => {
  const arg = conv.arguments.get('DIGITAL_PURCHASE_CHECK_RESULT');
  if (!arg || !arg.resultType) {
    conv.close('Digital Purchase check failed. Please check logs.');
    return;
  }
  // User does not meet necessary conditions for completing a digital purchase
  if (arg.resultType === 'CANNOT_PURCHASE' || arg.resultType === 'RESULT_TYPE_UNSPECIFIED') {
    conv.close(`It looks like you aren't able to make digital purchases. Please check your Google Pay configuration and try again.`);
    return;
  }
  conv.ask('Welcome to the Digital Goods Sample. Would you like to see what I have for sale?');
});

2. b. Verfügbares Inventar zusammentragen

Verwende die Digital Purchases API, um deinen aktuell verfügbaren Play Store anzufordern und erstellen Sie daraus ein Array von JSON-Objekten für jedes Produkt. Sie verweisen später auf dieses Array, um dem Nutzer zu zeigen, welche Optionen verfügbar sind. zum Kauf angeboten.

Jede Ihrer digitalen Waren wird als Artikelnummer im JSON-Format dargestellt. Die Im folgenden Node.js-Code wird die erwartete Formatierung der einzelnen Artikelnummern beschrieben:

body = {
  skus: [
    skuId: {
      skuType: one of "APP" or "UNSPECIFIED"
      id: string,
      packageName: string
    }
    formattedPrice: string,
    title: string,
    description: string
  ]
}

Senden Sie eine POST-Anfrage an die https://actions.googleapis.com/v3/packages/{packageName}/skus:batchGet Endpunkt, wobei {packageName} der Paketname deiner App in Google Play ist (z. B. com.myapp.digitalgoods) und formatieren Sie das Ergebnis in Array von SKU-Objekten.

Wenn Sie nur bestimmte digitale Waren im resultierenden Array abrufen möchten, listen Sie das Produkt auf. IDs für digitale Waren (wie bei jedem In-App-Produkt im Google Play Store angezeigt) Console), die du in body.ids zum Kauf anbieten möchtest.

Der folgende Node.js-Code fordert eine Liste der verfügbaren Waren aus dem digitalen Purchases API und formatiert das Ergebnis als Array von SKUs:

return jwtClient.authorize((err, tokens) => {
    if (err) {
      throw new Error(`Auth error: ${err}`);
    }

    const packageName = 'com.example.projectname';

    request.post(`https://actions.googleapis.com/v3/packages/${packageName}/skus:batchGet`, {
      'auth': {
        'bearer': tokens.access_token,
      },
      'json': true,
      'body': {
        'conversationId': conversationId,
        'skuType': 'APP',
        // This request is filtered to only retrieve SKUs for the following product IDs
        'ids': ['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. Auftrag erstellen

Präsentieren Sie eine Liste Ihrer digitalen Waren, um den digitalen Kauf des Nutzers zu starten zum Kauf verfügbar sind. Sie können eine Vielzahl von Rich-Media-Antworttypen, die Ihre und fordern den Nutzer auf, eine Auswahl zu treffen.

Mit dem folgenden Node.js-Code wird ein Inventar-Array von SKU-Objekten gelesen und ein list response mit einem Listeneintrag für jeweils:

skus.forEach((sku) => {
  const key = `${sku.skuId.skuType},${sku.skuId.id}`
  list.items[key] = {
    title: sku.title,
    description: `${sku.description} | ${sku.formattedPrice}`,
  };
});

4. Kauf abschließen

Verwende zum Abschließen des Kaufs den Hilfs-Intent COMPLETE_PURCHASE mit dem Element, das der Nutzer ausgewählt hat.

Der folgende Node.js-Code verarbeitet die SKU-Auswahl des Nutzers aus einer Listenantwort und fordert den Intent COMPLETE_PURCHASE mit diesen Informationen an:

app.intent('Send Purchase', (conv, params, option) => {
  let [skuType, id] = option.split(',');

  conv.ask(new CompletePurchase({
    skuId: {
      skuType: skuType,
      id: id,
      packageName: <PACKAGE_NAME>,
    },
  }));
});

5. Ergebnis verarbeiten

Wenn der Kauf abgeschlossen ist, wird die actions_intent_COMPLETE_PURCHASE ausgelöst. Dialogflow-Ereignis (oder actions.intent.COMPLETE_PURCHASE Actions SDK-Intent) mit Ein COMPLETE_PURCHASE_VALUE-Argument, das das Ergebnis beschreibt. Erstellen Sie einen Intent, ausgelöst werden und dem Nutzer das Ergebnis mitteilen.

Behandeln Sie die folgenden möglichen Kaufergebnisse:

  • PURCHASE_STATUS_OK: Der Kauf war erfolgreich. Die Transaktion an diesem Punkt abgeschlossen ist, verlassen Sie also den Transaktionsfluss und wechseln Sie zurück zum Ihre Unterhaltung.
  • PURCHASE_STATUS_ALREADY_OWNED: Die Transaktion ist fehlgeschlagen, weil der Nutzer besitzt diesen Artikel bereits. Sie können diesen Fehler vermeiden, indem Sie die vorherigen und die angezeigten Artikel so anpassen, dass sie nicht die Möglichkeit haben, Artikel, die er bereits besitzt, noch einmal kaufen.
  • PURCHASE_STATUS_ITEM_UNAVAILABLE: Die Transaktion ist fehlgeschlagen, weil Der angeforderte Artikel ist nicht verfügbar. Sie können diesen Fehler vermeiden, indem Sie die verfügbaren SKUs, die näher am Kaufzeitpunkt liegen.
  • PURCHASE_STATUS_ITEM_CHANGE_REQUESTED: Die Transaktion ist fehlgeschlagen, weil beschlossen, etwas anderes zu kaufen. Aufforderung zur Auftragserstellung damit die Nutzenden sofort eine neue Entscheidung treffen können.
  • PURCHASE_STATUS_USER_CANCELLED: Die Transaktion ist fehlgeschlagen, weil der Nutzer hat den Kaufvorgang abgebrochen. Da der Nutzer den User Flow vorzeitig verlassen hat, fragen Sie ihn, Nutzer, wenn sie die Transaktion wiederholen oder beenden möchten gesprochen.
  • PURCHASE_STATUS_ERROR: Die Transaktion ist aus unbekanntem Grund fehlgeschlagen. Lassen weiß der Nutzer, dass die Transaktion fehlgeschlagen ist, und fragt, ob er es noch einmal versuchen möchte.
  • PURCHASE_STATUS_UNSPECIFIED: Die Transaktion ist aus unbekanntem Grund fehlgeschlagen. was zu einem unbekannten Status führt. Behandeln Sie diesen Fehlerstatus, indem Sie zulassen, wissen, dass die Transaktion fehlgeschlagen ist, und fragen Sie, ob Sie es noch einmal versuchen möchten.

Der folgende Node.js-Code liest das Argument COMPLETE_PURCHASE_VALUE und verarbeitet jedes Ergebnis:

app.intent('Purchase Result', (conv) => {
  const arg = conv.arguments.get('COMPLETE_PURCHASE_VALUE');
  console.log('User Decision: ' + JSON.stringify(arg));
  if (!arg || !arg.purchaseStatus) {
    conv.close('Purchase failed. Please check logs.');
    return;
  }
  if (arg.purchaseStatus === 'PURCHASE_STATUS_OK') {
    conv.close(`Purchase completed! You're all set!`);
  } else if (arg.purchaseStatus === 'PURCHASE_STATUS_ALREADY_OWNED') {
    conv.close('Purchase failed. You already own this item.');
  } else if (arg.purchaseStatus === 'PURCHASE_STATUS_ITEM_UNAVAILABLE') {
    conv.close('Purchase failed. Item is not available.');
  } else if (arg.purchaseStatus === 'PURCHASE_STATUS_ITEM_CHANGE_REQUESTED') {
    // Reprompt with your item selection dialog
  }  else {
    conv.close('Purchase Failed:' + arg.purchaseStatus);
  }
});

6. Den Kauf wiederholbar machen

Verwende die Digital Purchases API, um deinen aktuell verfügbaren Play Store anzufordern und erstellen Sie daraus ein Array von JSON-Objekten für jedes Produkt. Sie verweisen später auf dieses Array, um dem Nutzer zu zeigen, welche Optionen verfügbar sind. zum Kauf angeboten.

Jede Ihrer digitalen Waren wird als Artikelnummer im JSON-Format dargestellt. Die Im folgenden Node.js-Code wird die erwartete Formatierung der einzelnen Artikelnummern beschrieben:

body = {
  skus: [
    skuId: {
      skuType: one of "APP" or "UNSPECIFIED"
      id: string,
      packageName: string
    }
    formattedPrice: string,
    title: string,
    description: string
  ]
}

Senden Sie eine POST-Anfrage an die https://actions.googleapis.com/v3/packages/{packageName}/skus:batchGet Endpunkt, wobei {packageName} der Paketname deiner App in Google Play ist (z. B. com.myapp.digitalgoods) und formatieren Sie das Ergebnis in Array von SKU-Objekten.

Wenn Sie nur bestimmte digitale Waren im resultierenden Array abrufen möchten, listen Sie das Produkt auf. IDs für digitale Waren (wie bei jedem In-App-Produkt im Google Play Store angezeigt) Console), die du in body.ids zum Kauf anbieten möchtest.

Der folgende Node.js-Code fordert eine Liste der verfügbaren Waren aus dem digitalen Purchases API und formatiert das Ergebnis als Array von SKUs:

return jwtClient.authorize((err, tokens) => {
    if (err) {
      throw new Error(`Auth error: ${err}`);
    }

    const packageName = 'com.example.projectname';

    request.post(`https://actions.googleapis.com/v3/packages/${packageName}/skus:batchGet`, {
      'auth': {
        'bearer': tokens.access_token,
      },
      'json': true,
      'body': {
        'conversationId': conversationId,
        'skuType': 'APP',
        // This request is filtered to only retrieve SKUs for the following product IDs
        'ids': ['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));
    });
  });
});

Einkäufe der Nutzenden reflektieren

Wenn ein Nutzer deine Aktion abfragt, enthält das user-Objekt der Anfrage eine Liste ihrer Einkäufe. Prüfe diese Informationen und ändere die Antwort deiner Aktion je nachdem, für welchen Content der Nutzer bezahlt hat.

Der folgende Beispielcode zeigt das user-Objekt einer Anfrage, das Folgendes enthält: packageEntitlements der vorherigen In-App-Käufe für das com.digitalgoods.application-Paket:

  "user": {
    "userId": "xxxx",
    "locale": "en-US",
    "lastSeen": "2018-02-09T01:49:23Z",
    "packageEntitlements": [
      {
        "packageName": "com.digitalgoods.application",
        "entitlements": [
          {
            "sku": "non-consumable.1",
            "skuType": "APP"
          }
          {
            "sku": "consumable.2",
            "skuType": "APP"
          }
        ]
      },
      {
        "packageName": "com.digitalgoods.application",
        "entitlements": [
          {
            "sku": "annual.subscription",
            "skuType": "SUBSCRIPTION",
            "inAppDetails": {
              "inAppPurchaseData": {
                "autoRenewing": true,
                "purchaseState": 0,
                "productId": "annual.subscription",
                "purchaseToken": "12345",
                "developerPayload": "HSUSER_IW82",
                "packageName": "com.digitalgoods.application",
                "orderId": "GPA.233.2.32.3300783",
                "purchaseTime": 1517385876421
              },
              "inAppDataSignature": "V+Q=="
            }
          }
        ]
      }
    ]
  },
  "conversation": {
    "conversationId": "1518141160297",
    "type": "NEW"
  },
  "inputs": [
    {
      "intent": "actions.intent.MAIN",
      "rawInputs": [
        {
          "inputType": "VOICE",
          "query": "Talk to My Test App"
        }
      ]
    }
  ],
  ...
}