Xây dựng giao dịch kỹ thuật số không phải hàng tiêu dùng (Dialogflow)

Hướng dẫn này giải thích cách thêm các giao dịch kỹ thuật số vào Hành động trò chuyện để người dùng có thể mua hàng hoá kỹ thuật số không phải hàng tiêu dùng.

Thuật ngữ chính: Hàng hoá kỹ thuật số không phải hàng tiêu dùng là đơn vị lưu kho (SKU) chỉ có thể mua được một lần, chẳng hạn như quyền truy cập có tính phí vào nội dung bổ sung trong ứng dụng Hành động hoặc ứng dụng Android. Loại sản phẩm này khác với hàng hoá kỹ thuật số tiêu hao có thể mua, sử dụng và mua lại.

Để biết thêm thông tin về sản phẩm không phải hàng tiêu dùng một lần, hãy tham khảo tài liệu của Android về các tính năng dành riêng cho sản phẩm tính phí một lần.

Các quy định hạn chế và nguyên tắc về bài đánh giá

Các chính sách bổ sung áp dụng cho Hành động có giao dịch. Chúng tôi có thể mất vài tuần để xem xét Hành động có bao gồm giao dịch, vì vậy, hãy tính thời gian đó khi lên kế hoạch cho lịch phát hành. Để quá trình xem xét diễn ra dễ dàng, hãy đảm bảo bạn tuân thủ các chính sách và nguyên tắc về giao dịch trước khi gửi Hành động đi xem xét.

Bạn chỉ có thể triển khai các hành động bán hàng hoá kỹ thuật số ở những quốc gia sau:

  • Úc
  • Brazil
  • Canada
  • Indonesia
  • Nhật Bản
  • Mexico
  • Nga
  • Singapore
  • Thái Lan
  • Thổ Nhĩ Kỳ
  • Vương quốc Anh
  • Hoa Kỳ

Luồng giao dịch

Hướng dẫn này trình bày từng bước phát triển khi chúng diễn ra trong quy trình giao dịch hàng hoá kỹ thuật số. Khi xử lý các giao dịch về hàng hoá kỹ thuật số, Hành động của bạn sẽ sử dụng quy trình sau:

  1. Thiết lập ứng dụng API cho giao dịch mua hàng kỹ thuật số: Hành động của bạn dùng API giao dịch mua hàng kỹ thuật số để giao tiếp với khoảng không quảng cáo trên Google Play và giao dịch. Trước khi Hành động của bạn làm bất cứ việc gì khác, Hành động đó sẽ tạo một ứng dụng khách JWT có khoá dịch vụ để giao tiếp với API giao dịch mua hàng kỹ thuật số.
  2. Thu thập thông tin: Hành động của bạn thu thập thông tin cơ bản về người dùng và khoảng không quảng cáo trên Google Play để chuẩn bị cho một giao dịch.
    1. Xác thực các yêu cầu về giao dịch: Hành động của bạn sử dụng trình trợ giúp đáp ứng các yêu cầu đối với giao dịch kỹ thuật số ở đầu quy trình mua để đảm bảo người dùng có thể giao dịch.
    2. Thu thập khoảng không quảng cáo hiện có: Hành động của bạn kiểm tra khoảng không quảng cáo trên Google Play và xác định những mặt hàng hiện có thể mua.
  3. Tạo đơn đặt hàng: Hành động của bạn trình bày hàng hoá kỹ thuật số hiện có cho người dùng để họ có thể chọn một mặt hàng để mua.
  4. Hoàn tất giao dịch mua: Hành động của bạn sử dụng API giao dịch mua hàng kỹ thuật số để bắt đầu giao dịch mua mà người dùng chọn đến Cửa hàng Google Play.
  5. Xử lý kết quả: Hành động của bạn sẽ nhận được mã trạng thái cho giao dịch và thông báo cho người dùng rằng giao dịch mua đã thành công (hoặc yêu cầu thêm bước).

Điều kiện tiên quyết

Trước khi kết hợp các giao dịch kỹ thuật số vào Hành động, bạn cần đáp ứng các điều kiện tiên quyết sau:

  • Tài khoản nhà phát triểntài khoản người bán trên Google Play để quản lý hàng hoá kỹ thuật số của bạn trong Google Play Console.

  • Một miền web đã được xác minh trong Google Search Console. Miền này không cần liên kết với một trang web đã phát hành công khai mà chỉ cần tham chiếu đến miền web của bạn.

  • Một ứng dụng Android có quyền com.android.vending.BILLING trong Google Play Console. Hàng hoá kỹ thuật số của bạn sẽ là "giao dịch mua hàng trong ứng dụng" được liên kết với ứng dụng này trong Google Play Console.

    Bạn cũng cần tạo một bản phát hành trong Play Console bằng ứng dụng này. Tuy nhiên, nếu không muốn bản phát hành công khai, bạn có thể tạo một bản phát hành alpha đóng.

    Nếu bạn chưa có ứng dụng Android, hãy làm theo Hướng dẫn liên kết ứng dụng Android.

  • Một hoặc nhiều sản phẩm được quản lý trong Google Play Console, là hàng hoá kỹ thuật số mà bạn bán bằng Hành động của mình. Xin lưu ý rằng bạn không thể tạo sản phẩm được quản lý trong Play Console cho đến khi thiết lập điều kiện tiên quyết về ứng dụng Android.

    Nếu bạn chưa có sản phẩm được quản lý, hãy làm theo hướng dẫn Tạo hàng hoá kỹ thuật số.

Liên kết ứng dụng Android

Nếu bạn hiện không có ứng dụng Android nào có quyền thanh toán trong Google Play Console, hãy làm theo các bước sau:

  1. Trong Android Studio hoặc IDE Android mà bạn chọn, hãy tạo một dự án mới. Chọn các tuỳ chọn trong lời nhắc thiết lập dự án để tạo một ứng dụng rất cơ bản.
  2. Đặt tên gói cho dự án, chẳng hạn như com.mycompany.myapp. Không để tên mặc định này vì bạn không thể tải các gói chứa com.example lên Play Console.
  3. Mở tệp AndroidManifest.xml của ứng dụng.
  4. Thêm dòng mã sau vào bên trong phần tử manifest:

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

    Tệp AndroidManifest.xml của bạn sẽ trông giống như khối mã sau:

    <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. Xây dựng ứng dụng dưới dạng tệp APK đã ký. Trong Android Studio, hãy làm theo các bước sau:

    1. Chuyển đến phần Build (Tạo), Generate Signed Bundle/APK (Tạo gói/APK có chữ ký).
    2. Nhấp vào Tiếp theo.
    3. Trong Đường dẫn cửa hàng chính, hãy nhấp vào Tạo mới.
    4. Điền vào từng trường rồi nhấp vào OK. Hãy ghi lại Mật khẩu kho khoáMật khẩu khoá của bạn và lưu trữ những thông tin này ở nơi an toàn vì bạn sẽ sử dụng chúng sau này.
    5. Nhấp vào Tiếp theo.
    6. Chọn phát hành.
    7. Chọn Phiên bản 1 (Chữ ký JAR).
    8. Nhấp vào Finish (Hoàn tất).
    9. Sau vài giây, Android Studio sẽ tạo tệp app-release.apk. Xác định tệp này để sử dụng sau.
  6. Trong Google Play Console, hãy tạo một ứng dụng mới.

  7. Chuyển tới phần Bản phát hành ứng dụng.

  8. Trong phần Kênh thử nghiệm khép kín, hãy chuyển đến mục Quản lý rồi chọn Alpha.

  9. Nhấp vào nút Create Release (Tạo bản phát hành).

  10. Trong phần Cho phép Google quản lý và bảo vệ khoá ký, hãy nhập thông tin về khoá ký.

  11. Tải tệp APK của bạn lên.

  12. Nhấp vào Lưu.

Tạo hàng hoá kỹ thuật số

Nếu bạn hiện không có hàng hoá kỹ thuật số nào trong Play Console, hãy làm theo các bước sau:

  1. Trong Google Play Console, hãy chuyển đến phần Sản phẩm trong ứng dụng rồi chọn Sản phẩm được quản lý. Nếu bạn thấy cảnh báo, hãy làm theo hướng dẫn trước để tạo ứng dụng Android hoặc nhấp vào đường liên kết để tạo hồ sơ người bán.
  2. Nhấp vào Tạo sản phẩm được quản lý.
  3. Điền vào các trường cho sản phẩm kỹ thuật số của bạn. Hãy ghi lại Mã sản phẩm, đây là cách bạn sẽ tham chiếu sản phẩm này từ Hành động của mình.
  4. Nhấp vào Lưu.
  5. Lặp lại các bước từ 2 đến 4 cho từng sản phẩm bạn muốn bán.

Ví dụ về hàng hoá không phải hàng tiêu dùng trong Google Play Console.

Chuẩn bị dự án Actions

Sau khi thiết lập hàng hoá kỹ thuật số trong Google Play Console, bạn phải bật các giao dịch kỹ thuật số và liên kết dự án Hành động với ứng dụng của mình trên Play.

Để bật giao dịch hàng hoá kỹ thuật số trong dự án Actions, hãy làm theo các bước sau:

  1. Trong Bảng điều khiển Actions, hãy mở dự án hoặc tạo dự án mới.
  2. Chuyển đến phần Deploy (Triển khai), rồi chuyển đến Directory information (Thông tin thư mục).
  3. Trong phần Thông tin bổ sungGiao dịch, hãy chọn hộp trong phần Hành động của bạn có sử dụng API mua hàng kỹ thuật số để thực hiện các giao dịch hàng hoá kỹ thuật số không.
  4. Nhấp vào Lưu.

Tạo khoá API cho hàng hoá kỹ thuật số

Để gửi yêu cầu tới API hàng hoá kỹ thuật số, bạn cần tải khoá tài khoản dịch vụ JSON liên kết với dự án trên bảng điều khiển Actions của bạn.

Để truy xuất khoá tài khoản dịch vụ của bạn, hãy làm theo các bước sau:

  1. Trong Bảng điều khiển Actions, hãy nhấp vào biểu tượng ba dấu chấm ở góc trên bên phải, rồi nhấp vào Cài đặt dự án.
  2. Tìm Mã dự án của Hành động.
  3. Truy cập vào đường liên kết này, thay thế "<project_id>" bằng mã dự án: https://console.developers.google.com/apis/credentials?project=project_id
  4. Trong trình đơn điều hướng chính, hãy chuyển đến mục Thông tin xác thực.
  5. Trên trang xuất hiện, hãy nhấp vào Tạo thông tin xác thực, sau đó nhấp vào Khoá tài khoản dịch vụ.
  6. Chuyển đến phần Tài khoản dịch vụ rồi nhấp vào Tài khoản dịch vụ mới.
  7. Đặt tên cho tài khoản dịch vụ, chẳng hạn như giao dịch kỹ thuật số.
  8. Nhấp vào Tạo.
  9. Đặt Vai trò thành Dự án > Chủ sở hữu.
  10. Nhấp vào Tiếp tục.
  11. Nhấp vào Create Key (Tạo khoá).
  12. Chọn loại khoá JSON.
  13. Nhấp vào Tạo khoá rồi tải khoá tài khoản dịch vụ JSON xuống.

Lưu khoá tài khoản dịch vụ này ở một nơi an toàn. Bạn sẽ sử dụng khoá này trong phương thức thực hiện để tạo một ứng dụng cho API giao dịch mua hàng kỹ thuật số.

Kết nối với khoảng không quảng cáo của bạn trên Play

Để truy cập vào hàng hoá kỹ thuật số của bạn từ một dự án Actions, hãy liên kết ứng dụng và miền web với dự án của bạn dưới dạng thuộc tính đã kết nối.

Lưu ý: Các bước kết nối có thể mất đến một tuần để hoàn thành trong khi chúng tôi xác minh tài sản của bạn. Nếu trang web hoặc ứng dụng của bạn chưa liên kết sau khoảng thời gian đó, hãy liên hệ với nhóm hỗ trợ.

Để kết nối ứng dụng và miền web trên Play Console với dự án Actions, hãy làm theo các bước sau:

  1. Trong bảng điều khiển Actions, hãy chuyển đến phần Triển khai, sau đó chọn Xác minh thương hiệu.
  2. Nếu bạn chưa kết nối tài sản nào, trước tiên, hãy kết nối một trang web:

    1. Nhấp vào nút thuộc tính web (</>).
    2. Nhập URL cho miền web của bạn rồi nhấp vào Kết nối.

    Google sẽ gửi email kèm hướng dẫn bổ sung cho cá nhân đã được xác minh cho miền web đó trong Google Search Console. Sau khi người nhận email này làm theo các bước đó, trang web sẽ xuất hiện trong phần Xác minh thương hiệu.

  3. Sau khi bạn có ít nhất một trang web được kết nối, hãy thực hiện các bước sau để kết nối ứng dụng Android:

    1. Trong bảng điều khiển Actions, hãy chuyển đến phần Triển khai, sau đó chọn Xác minh thương hiệu.
    2. Nhấp vào Kết nối ứng dụng.
    3. Trên trang xuất hiện, hãy làm theo hướng dẫn để xác minh miền web của bạn trên Play Console. Chọn ứng dụng Play chứa hàng hoá kỹ thuật số của bạn và nhập URL miền web chính xác như hiển thị trên trang Xác minh thương hiệu.

      Một lần nữa, Google gửi email xác minh đến chủ sở hữu đã xác minh của miền. Sau khi họ phê duyệt quy trình xác minh, ứng dụng Play của bạn sẽ xuất hiện trong phần Xác minh thương hiệu.

    4. Bật chế độ Truy cập vào giao dịch mua trên Play.

Hình ảnh cho thấy trang web và ứng dụng được kết nối với dự án Actions (Hành động).

Xây dựng quy trình mua hàng

Khi đã chuẩn bị xong dự án Actions (Hành động) và kho hàng kỹ thuật số, hãy tạo quy trình mua hàng kỹ thuật số trong webhook thực hiện cuộc trò chuyện.

1. Thiết lập ứng dụng API mua hàng kỹ thuật số

Trong webhook thực hiện cuộc trò chuyện, hãy tạo một ứng dụng JWT có khoá JSON của tài khoản dịch vụ và phạm vi https://www.googleapis.com/auth/actions.purchases.digital.

Mã Node.js sau đây tạo một ứng dụng JWT cho API mua hàng kỹ thuật số:

  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. Thu thập thông tin

Trước khi người dùng có thể mua hàng, Hành động của bạn sẽ thu thập thông tin về khả năng mua hàng của người dùng và những hàng hoá hiện có trong kho hàng của bạn.

2. a. Xác thực các yêu cầu về giao dịch

Bạn nên đảm bảo tài khoản của người dùng đã được thiết lập để thực hiện giao dịch trước khi cung cấp cho họ lựa chọn thực hiện giao dịch mua. Bước này bao gồm kiểm tra để đảm bảo rằng người dùng đã thiết lập một phương thức thanh toán và họ đang ở một ngôn ngữ được hỗ trợ giao dịch kỹ thuật số. Khi bắt đầu quy trình giao dịch, hãy sử dụng trình trợ giúp DIGITAL_PURCHASE_CHECK để xác thực cấu hình giao dịch của người dùng với Trợ lý.

Mã Node.js sau đây sử dụng DIGITAL_PURCHASE_CHECK ở đầu cuộc trò chuyện:

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

Tìm kết quả của bước kiểm tra này trong các đối số cuộc trò chuyện dưới dạng DIGITAL_PURCHASE_CHECK_RESULT. Dựa trên kết quả này, hãy tiếp tục quy trình giao dịch hoặc chuyển hướng người dùng sang một bên và nhắc họ kiểm tra cấu hình Google Pay.

Mã Node.js sau đây xử lý kết quả kiểm tra yêu cầu :

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. Thu thập khoảng không quảng cáo có sẵn

Hãy sử dụng API mua hàng kỹ thuật số để yêu cầu kho hàng hiện có trên Cửa hàng Play, sau đó tích hợp kho hàng đó vào một mảng đối tượng JSON cho từng sản phẩm. Bạn sẽ tham chiếu mảng này sau để cho người dùng thấy các tuỳ chọn có sẵn để mua.

Mỗi hàng hoá kỹ thuật số của bạn được thể hiện dưới dạng SKU ở định dạng JSON. Mã Node.js sau đây trình bày định dạng dự kiến của từng SKU:

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

Gửi yêu cầu POST đến điểm cuối https://actions.googleapis.com/v3/packages/{packageName}/skus:batchGet, trong đó {packageName} là tên gói của ứng dụng trong Google Play Console (ví dụ: com.myapp.digitalgoods) và định dạng kết quả thành một mảng các đối tượng SKU.

Để chỉ truy xuất hàng hoá kỹ thuật số cụ thể trong mảng kết quả, hãy liệt kê mã sản phẩm cho hàng hoá kỹ thuật số (như hiển thị bên dưới từng sản phẩm trong ứng dụng trên Google Play Console) mà bạn muốn cung cấp để mua hàng trong body.ids.

Mã Node.js sau đây yêu cầu một danh sách hàng hoá có sẵn từ API giao dịch mua hàng kỹ thuật số và định dạng kết quả dưới dạng một mảng 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': conversationId,
        'skuType': '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. Tạo đơn đặt hàng

Để bắt đầu giao dịch mua kỹ thuật số của người dùng, hãy hiển thị danh sách hàng hoá kỹ thuật số có sẵn để mua. Bạn có thể sử dụng nhiều loại phản hồi đa dạng thức để đại diện cho cổ phiếu của mình và nhắc người dùng đưa ra lựa chọn.

Mã Node.js sau đây đọc một mảng khoảng không quảng cáo của các đối tượng SKU và tạo phản hồi danh sách với một mục danh sách cho mỗi mục:

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

4. Hoàn tất giao dịch mua

Để hoàn tất giao dịch mua, hãy sử dụng ý định trợ giúp COMPLETE_PURCHASE với mục mà người dùng đã chọn.

Mã Node.js sau đây xử lý lựa chọn SKU của người dùng từ phản hồi danh sách và yêu cầu ý định COMPLETE_PURCHASE cùng với thông tin đó:

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. Xử lý kết quả

Khi giao dịch mua hoàn tất, giao dịch này sẽ kích hoạt sự kiệnDialogflow actions_intent_COMPLETE_PURCHASE (hoặc ý định trong SDK Hành động actions.intent.COMPLETE_PURCHASE) với một đối số COMPLETE_PURCHASE_VALUE mô tả kết quả. Tạo một ý định (được kích hoạt bởi sự kiện này) để thông báo kết quả cho người dùng.

Xử lý các kết quả giao dịch mua có thể xảy ra sau đây:

  • PURCHASE_STATUS_OK: Giao dịch mua đã thành công. Giao dịch đã hoàn tất tại thời điểm này, vì vậy, hãy thoát khỏi quy trình giao dịch và quay lại cuộc trò chuyện của bạn.
  • PURCHASE_STATUS_ALREADY_OWNED: Giao dịch không thành công vì người dùng đã sở hữu mục đó. Hãy tránh lỗi này bằng cách kiểm tra các giao dịch mua trước đây của người dùng và điều chỉnh các mặt hàng hiển thị để họ không có lựa chọn mua lại các mặt hàng họ đã sở hữu.
  • PURCHASE_STATUS_ITEM_UNAVAILABLE: Giao dịch không thành công vì không có mặt hàng được yêu cầu. Để tránh lỗi này, hãy kiểm tra các SKU hiện có khi gần thời điểm mua hàng hơn.
  • PURCHASE_STATUS_ITEM_CHANGE_REQUESTED: Giao dịch không thành công vì người dùng quyết định mua một mặt hàng khác. Nhắc lại khi tạo đơn hàng để người dùng có thể đưa ra quyết định khác ngay lập tức.
  • PURCHASE_STATUS_USER_CANCELLED: Giao dịch không thành công vì người dùng đã huỷ quy trình mua. Vì người dùng đã thoát khỏi luồng sớm, hãy hỏi người dùng xem họ muốn thử lại giao dịch hay thoát hoàn toàn giao dịch.
  • PURCHASE_STATUS_ERROR: Giao dịch không thành công vì lý do không xác định. Thông báo cho người dùng biết giao dịch không thành công và hỏi xem họ có muốn thử lại hay không.
  • PURCHASE_STATUS_UNSPECIFIED: Giao dịch không thành công vì một lý do không xác định, dẫn đến trạng thái không xác định. Hãy xử lý trạng thái lỗi này bằng cách cho người dùng biết giao dịch không thành công và hỏi xem họ có muốn thử lại không.

Mã Node.js sau đây đọc đối số COMPLETE_PURCHASE_VALUE và xử lý từng kết quả:

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

Phản ánh giao dịch mua của người dùng

Khi người dùng truy vấn Hành động của bạn, đối tượng user của JSON yêu cầu sẽ bao gồm một danh sách các giao dịch mua của họ. Hãy kiểm tra thông tin này và thay đổi phản hồi của Hành động dựa trên nội dung mà người dùng đã trả tiền.

Mã mẫu sau đây cho thấy đối tượng user của một yêu cầu bao gồm packageEntitlements của các giao dịch mua hàng trong ứng dụng trước đó mà họ đã thực hiện cho gói com.digitalgoods.application:

  "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"
        }
      ]
    }
  ],
  ...
}