Xây dựng các giao dịch kỹ thuật số không tiêu hao

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.

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).

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ỳ

Đ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.

Thiết lập

Để 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.

Để 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 đối với giao dịch mua kỹ thuật số

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 mua hàng. Bạn nên chuyển đổi sang cảnh DigitalPurchaseCheck để kiểm tra xem người dùng đã được xác minh chưa, họ đang thực hiện giao dịch trên một nền tảng được phép (màn hình thông minh, loa thông minh hoặc Android) và cảnh đó nằm ở ngôn ngữ hỗ trợ các giao dịch kỹ thuật số.

Để tạo cảnh kiểm tra giao dịch mua kỹ thuật số, hãy làm theo các bước sau:

  1. Trên thẻ Scenes (Cảnh), hãy thêm một Cảnh mới có tên DigitalPurchaseCheck.
  2. Trong mục Lấp đầy khe, hãy nhấp vào dấu + để thêm một vùng mới.
  3. Trong mục Chọn loại, hãy chọn actions.type.DigitalPurchaseCheckResult làm loại vùng.
  4. Trong trường tên khe, hãy đặt tên cho vị trí là DigitalPurchaseCheck.
  5. Bật hộp đánh dấu Tuỳ chỉnh ghi lại giá trị vị trí (bật theo mặc định).
  6. Nhấp vào Lưu.

Quy trình kiểm tra giao dịch mua kỹ thuật số sẽ dẫn đến một trong các kết quả sau:

  • Nếu đáp ứng các yêu cầu, thông số phiên sẽ được đặt với điều kiện thành công và bạn có thể tiếp tục cho phép người dùng mua hàng hoá kỹ thuật số.
  • Nếu không thể đáp ứng một hoặc nhiều yêu cầu, thông số phiên sẽ được đặt bằng một điều kiện lỗi. Trong trường hợp này, bạn nên chuyển cuộc trò chuyện khỏi trải nghiệm giao dịch hoặc kết thúc cuộc trò chuyện.

Để xử lý kết quả kiểm tra giao dịch mua hàng kỹ thuật số, hãy làm theo các bước sau:

  1. Trên thẻ Cảnh, hãy chọn cảnh bạn mới tạo DigitalPurchaseCheck.
  2. Trong mục Điều kiện, hãy nhấp vào dấu + để thêm một điều kiện mới.
  3. Trong trường văn bản, hãy nhập cú pháp điều kiện sau để kiểm tra điều kiện thành công:

    scene.slots.status == "FINAL" && session.params.DigitalPurchaseCheck.resultType == "CAN_PURCHASE"
    
  4. Di chuột qua điều kiện bạn vừa thêm rồi nhấp vào mũi tên lên để đặt điều kiện đó trước if scene.slots.status == "FINAL".

  5. Bật tính năng Gửi lời nhắc và cung cấp một lời nhắc đơn giản cho người dùng biết rằng họ đã sẵn sàng thực hiện giao dịch:

    candidates:
      - first_simple:
          variants:
            - speech: >-
                You are ready to purchase digital goods.
    
  6. Trong phần Chuyển đổi, hãy chọn một cảnh khác, cho phép người dùng tiếp tục cuộc trò chuyện và thực hiện giao dịch.

  7. Chọn điều kiện else if scene.slots.status == "FINAL".

  8. Bật tính năng Gửi lời nhắc và đưa ra một lời nhắc đơn giản cho người dùng biết rằng họ không thể thực hiện giao dịch:

    candidates:
      - first_simple:
          variants:
            - speech: Sorry you cannot perform a digital purchase.
    
  9. Trong phần Chuyển đổi, hãy chọn Kết thúc cuộc trò chuyện để kết thúc cuộc trò chuyện.

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 "SKU_TYPE_IN_APP" or "SKU_TYPE_SUBSCRIPTION"
      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': conv.session.id,
        'skuType': 'SKU_TYPE_IN_APP',
        // This request is filtered to only retrieve SKUs for the following product IDs
        'ids': ['nonconsumable.1']
      },
    }, (err, httpResponse, body) => {
      if (err) {
        throw new Error(`API request error: ${err}`);
      }
      console.log(`${httpResponse.statusCode}: ${httpResponse.statusMessage}`);
      console.log(JSON.stringify(body));
    });
  });
});

3. 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:

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

Tạo giao dịch mua từ lựa chọn của người dùng

Sau khi người dùng chọn một mặt hàng, bạn có thể tạo đơn đặt hàng. Để làm như vậy, tại vùng liên kết với mặt hàng đã chọn, bạn có thể gọi webhook để tạo đơn đặt hàng. Từ phương thức thực hiện của bạn, hãy lưu dữ liệu đơn đặt hàng vào tham số phiên hoạt động. Đối tượng đơn đặt hàng được sử dụng trên các cảnh trong cùng một phiên hoạt động.

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

Thay vào đó, trong Trình tạo hành động, bạn có thể dùng trình chỉnh sửa JSON để định cấu hình vị trí bằng đối tượng thứ tự ở trên. Cả hai phương thức triển khai đều sử dụng cùng một định dạng cho CompletePurchaseValueSpec mà bạn có thể tìm thấy trong tài liệu tham khảo về tải trọng webhook JSON.

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

Sau khi người dùng chọn một mặt hàng, bạn có thể hoàn tất giao dịch mua hàng. Sau khi lấp đầy vùng liên kết với mặt hàng đã chọn, bạn nên chuyển sang một cảnh thực hiện giao dịch mua hoàn chỉnh.

Tạo cảnh mua hàng hoàn tất

  1. Trên thẻ Scenes (Cảnh), hãy thêm một cảnh mới có tên CompletePurchase.
  2. Trong mục Lấp đầy khe, hãy nhấp vào dấu + để thêm một vùng mới.
  3. Trong mục Chọn loại, hãy chọn actions.type.CompletePurchaseValue làm loại vùng.
  4. Trong trường tên khe, hãy đặt tên cho vị trí là CompletePurchase.
  5. Bật hộp kiểm Tùy chỉnh ghi lại giá trị vị trí (được bật theo mặc định).
  6. Trong mục Định cấu hình vị trí, hãy chọn Use session parameter trong trình đơn thả xuống.
  7. Trong mục Định cấu hình khe,hãy nhập tên của tham số phiên được dùng để lưu trữ đơn đặt hàng vào trường văn bản (tức là $session.params.purchase).
  8. Nhấp vào Lưu.

5. Xử lý kết quả

Vị trí có loại actions.type.CompletePurchaseValue có thể có các kết quả sau:

  • 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 những mặt hàng họ đã sở hữu.
  • PURCHASE_STATUS_ITEM_UNAVAILABLE: Giao dịch không thành công vì mục được yêu cầu không có sẵn. Hãy tránh lỗi này bằng cách kiểm tra các SKU hiện có khi gần với thời điểm mua hàng.
  • 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 đặt 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 đã sớm thoát khỏi quy trình, 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 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 hay không.

Bạn nên xử lý từng kết quả trong cảnh CompletePurchase.

  1. Trên thẻ Cảnh, hãy chọn cảnh bạn mới tạo CompletePurchase.
  2. Trong mục Điều kiện, hãy nhấp vào dấu + để thêm một điều kiện mới.
  3. Trong trường văn bản, hãy nhập cú pháp điều kiện sau để kiểm tra điều kiện thành công:

    scene.slots.status == "FINAL" && session.params.CompletePurchase.purchaseStatus == "PURCHASE_STATUS_OK"
    
  4. Di chuột qua điều kiện bạn vừa thêm rồi nhấp vào mũi tên lên để đặt điều kiện đó trước if scene.slots.status == "FINAL".

  5. Bật tính năng Gửi lời nhắc và cung cấp một lời nhắc đơn giản cho người dùng biết rằng họ đã sẵn sàng thực hiện giao dịch:

    candidates:
      - first_simple:
          variants:
            - speech: >-
                Your purchase was successful.
    
  6. Trong phần Chuyển tiếp, hãy chọn Kết thúc cuộc trò chuyện để kết thúc cuộc trò chuyện.

Lặp lại các bước ở trên cho từng loại kết quả mua hàng mà bạn muốn hỗ trợ.

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:

{
  "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"
    ]
  }
}

Kiểm thử dự án

Khi kiểm thử dự án, bạn có thể bật chế độ hộp cát trong bảng điều khiển Actions để kiểm thử Hành động của mình mà không tính phí cho phương thức thanh toán. Để bật chế độ hộp cát, 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 Test (Kiểm thử) trong bảng điều hướng.
  2. Nhấp vào Cài đặt.
  3. Bật tuỳ chọn Phát triển Hộp cát.