Hướng dẫn này giải thích cách thêm các giao dịch thuê bao kỹ thuật số vào cuộc trò chuyện Hành động để người dùng có thể mua gói thuê bao của bạn.
Từ khoá: Hàng hoá kỹ thuật số gói thuê bao là một đơn vị lưu kho (SKU) yêu cầu người dùng phải trả phí định kỳ, chẳng hạn như tạp chí trực tuyến. Đây là khác với hàng hoá kỹ thuật số tiêu dùng mà người dùng phải tự mua lại hoặc hàng hoá kỹ thuật số không phải hàng tiêu dùng được tự động chỉ mua một lần.
Để biết thêm thông tin về gói thuê bao kỹ thuật số, hãy tham khảo tài liệu về các tính năng dành riêng cho gói thuê bao.
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. Quá trình này sẽ mất vài phút tuần để xem xét Hành động có bao gồm giao dịch, vì vậy, hãy tính đến thời điểm lập kế hoạch lịch phát hành. Để quá trình xem xét diễn ra dễ dàng hơn, hãy đảm bảo bạn tuân thủ với chính sách và nguyên tắc đối với 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 các bước đó diễn ra trong hàng hoá kỹ thuật số luồng giao dịch. Khi xử lý các giao dịch hàng hoá kỹ thuật số, Hành động của bạn sử dụng quy trình sau:
- Thiết lập ứng dụng API mua hàng kỹ thuật số: Hành động của bạn sử dụng Purchases API để giao tiếp với khoảng không quảng cáo của bạn 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 này sẽ tạo một ứng dụng JWT có để giao tiếp với API mua hàng kỹ thuật số.
- Thu thập thông tin: Hành động của bạn thu thập thông tin cơ bản về
và khoảng không quảng cáo của bạn trên Google Play để chuẩn bị cho giao dịch.
- Xác thực các yêu cầu về giao dịch: Hành động của bạn sử dụng khi bắt đầu quy trình mua để đảm bảo người dùng có thể giao dịch.
- Thu thập khoảng không quảng cáo có sẵn: Hành động của bạn sẽ kiểm tra Google Play kho hàng và xác định mặt hàng nào hiện có sẵn để mua.
- Tạo đơn đặt hàng: Hành động của bạn giới thiệu hàng hoá kỹ thuật số hiện có để người dùng có thể chọn một sản phẩm để mua.
- Hoàn tất giao dịch mua: Hành động của bạn sử dụng API mua hàng kỹ thuật số để bắt đầu mua hàng với lựa chọn của người dùng đến Cửa hàng Google Play.
- Xử lý kết quả: Hành động của bạn 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 đã hoàn tất) các bước bổ sung).
Điều kiện tiên quyết
Trước khi đưa các giao dịch kỹ thuật số vào Hành động của mình, bạn cần có những điều kiện tiên quyết sau:
Đáp tài khoản nhà phát triển và một tà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 trong Google Search Console. Miền này không cần phải liên kết với trang web được phát hành công khai, chúng tôi chỉ cần tham khảo miền web của bạn.
Ứng dụng Android có
com.android.vending.BILLING
quyền trong Google Play Console. Hàng hoá kỹ thuật số của bạn sẽ là “mua hàng trong ứng dụng” 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, nhưng nếu bạn không muốn công khai bản phát hành, bạn có thể tạo alpha đóng bản phát hành.
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 gói thuê bao trong Google Play Console, vốn là hàng hoá kỹ thuật số mà bạn bán kèm theo Hành động của mình. Xin lưu ý rằng bạn thì không thể tạo gói thuê bao trong Play Console cho đến khi bạn thiết lập Điều kiện tiên quyết đối với ứng dụng Android.
Nếu bạn chưa có gói thuê bao, hãy làm theo Tạo hướng dẫn về 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 có quyền thanh toán trong Google Play Console, hãy làm theo các bước sau:
- 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 lựa 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.
- Đặt tên gói cho dự án, chẳng hạn như
com.mycompany.myapp
. Đừng để tên này theo mặc định vì bạn không thể tải các gói thêmcom.example
vào Play Console. - Mở tệp
AndroidManifest.xml
của ứng dụng. Thêm dòng mã sau đây vào phần tử
manifest
:<uses-permission android:name="com.android.vending.BILLING" />
Tệp
AndroidManifest.xml
sẽ có dạng như khối mã dưới đây:<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>
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:
- Chuyển đến phần Build (Tạo), Generate Signed Bundle/APK (Tạo gói/APK có chữ ký).
- Nhấp vào Tiếp theo.
- Trong mục Đường dẫn cửa hàng chính, hãy nhấp vào Tạo mới.
- Điền vào từng trường rồi nhấp vào OK. Ghi lại Kho chính của bạn và Mật khẩu khoá, đồng thời lưu trữ các thông tin này ở một nơi an toàn, vì bạn sẽ sử dụng chúng sau này.
- Nhấp vào Tiếp theo.
- Chọn bản phát hành.
- Chọn V1 (JAR Signature).
- Nhấp vào Hoàn tất.
- Sau vài giây, Android Studio sẽ tạo một tệp
app-release.apk
. Định vị tệp này để sử dụng sau này.
Trong Google Play Console, hãy tạo một ứng dụng mới.
Chuyển đến phần Bản phát hành ứng dụng.
Trong phần Kênh kiểm thử khép kín, hãy chuyển đến phần Quản lý, rồi chọn Alpha.
Nhấp vào nút Tạo bản phát hành.
Trong phần Cho phép Google quản lý và bảo vệ khoá ký của bạn, hãy nhập chữ ký của bạn thông tin quan trọng.
Tải tệp APK của bạn lên.
Nhấp vào Lưu.
Tạo hàng hoá kỹ thuật số
Nếu bạn hiện chưa có hàng hoá kỹ thuật số nào trong Play Console, hãy làm theo các bước sau các bước:
- Trong Google Play Console, chuyển đến phần Sản phẩm trong ứng dụng, rồi chuyển đến phần Gói thuê bao. Nếu bạn thấy một cảnh báo, làm theo hướng dẫn trước đó để tạo một ứng dụng Android hoặc nhấp vào đường liên kết để tạo hồ sơ người bán.
- Nhấp vào Tạo gói thuê bao.
- Điền vào các trường cho sản phẩm kỹ thuật số của bạn. 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 bạn.
- Nhấp vào Lưu.
- Lặp lại các bước từ 2 đến 4 cho từng sản phẩm mà bạn muốn bán.
Chuẩn bị dự án Actions
Với hàng hoá kỹ thuật số của bạn được thiết lập trong Google Play Console, bạn phải bật giao dịch kỹ thuật số và liên kết dự án Actions của bạn với ứng dụng Play.
Để bật tính năng giao dịch hàng hoá kỹ thuật số trong dự án Actions, hãy làm theo các bước sau các bước:
- Trong Bảng điều khiển Actions, hãy mở dự án của bạn hoặc tạo một dự án mới.
- Chuyển đến phần Deploy (Triển khai) rồi chọn Directory information (Thông tin thư mục).
- Trong phần Thông tin bổ sung và Giao dịch, hãy đánh dấu vào hộp Có trong phần Do your Actions sử dụng Digital Purchase API để thực hiện giao dịch hàng hoá kỹ thuật số.
- Nhấp vào Lưu.
Tạo khoá API cho hàng hoá kỹ thuật số
Để gửi yêu cầu đến API hàng hoá kỹ thuật số, bạn cần tải dịch vụ JSON xuống khoá tài khoản liên kết với dự án Actions Console của bạn.
Để truy xuất khoá tài khoản dịch vụ, hãy làm theo các bước sau:
- 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 đến phần Cài đặt dự án.
- Tìm Mã dự án cho Hành động của bạn.
- Truy cập vào đường liên kết này, thay thế cho "
<project_id>
" có mã dự án của bạn:https://console.developers.google.com/apis/credentials?project=project_id
- Trong thanh điều hướng chính, hãy chuyển đến phần Thông tin xác thực.
- 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 Dịch vụ khoá tài khoản.
- 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.
- Đặt tên cho tài khoản dịch vụ, chẳng hạn như giao dịch kỹ thuật số.
- Nhấp vào Tạo.
- Đặt Vai trò thành Dự án > Chủ sở hữu.
- Nhấp vào Tiếp tục.
- Nhấp vào Tạo khoá.
- Chọn loại khoá JSON.
- 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 vào 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 ứng dụng khách cho API 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 thông qua một dự án Actions, hãy liên kết với dự án của bạn dưới dạng tài sản đã kết nối.
Lưu ý: Các bước kết nối có thể mất tối đa một tuần mới hoàn tất trong khi chúng tôi xác minh các tài sản của bạn. Nếu trang web hoặc ứng dụng của bạn chưa được liên kết sau khoảng thời gian đó, liên hệ với bộ phận 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:
- Trong Bảng điều khiển Actions, hãy chuyển đến phần Triển khai, rồi chuyển đến Xác minh thương hiệu.
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:
- Nhấp vào nút thuộc tính web (</>).
- 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 theo hướng dẫn bổ sung đến cá nhân đang cho miền web đó trong Google Search Console. 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.
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 của bạn:
- Trong Bảng điều khiển Actions, hãy chuyển đến phần Triển khai, rồi chuyển đến Xác minh thương hiệu.
- Nhấp vào Kết nối ứng dụng.
Trên trang xuất hiện, hãy làm theo hướng dẫn để xác minh trang web của bạn trên Play Console. Chọn ứng dụng Play chứa hàng hoá kỹ thuật số và nhập URL miền web chính xác như được 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 đã được xác minh của miền. Sau khi họ phê duyệt yêu cầu 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.
Bật tính năng Truy cập giao dịch mua trên Play.
Xây dựng quy trình mua
Với dự án Actions và kho hàng hoá kỹ thuật số đã được chuẩn bị, hãy tạo dựng quy trình mua hàng hoá 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 cho phương thức thực hiện cuộc trò chuyện, hãy tạo một ứng dụng JWT bằng dịch vụ của bạn
khoá JSON của tài khoản và
Phạm vi https://www.googleapis.com/auth/actions.purchases.digital
.
Mã Node.js sau đây tạo ứ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 thu thập thông tin về khả năng mua hàng của người dùng và hàng hoá nào có sẵn từ khoảng không quảng cáo.
2. a. Xác thực các yêu cầu giao dịch
Bạn nên đảm bảo rằng tài khoản của người dùng được thiết lập để hoạt động
giao dịch, trước khi cung cấp cho họ lựa chọn mua hàng. Bước này
bao gồm việc 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 ở
nơi hỗ trợ giao dịch kỹ thuật số. Khi bắt đầu giao dịch
quy trình này, hãy sử dụng trình trợ giúp DIGITAL_PURCHASE_CHECK
để xác thực 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 quá trình kiểm tra này trong các đối số của cuộc hội thoại dưới dạng
DIGITAL_PURCHASE_CHECK_RESULT
. Dựa trên kết quả này, hãy tiếp tục
hoặc ngừng giao dịch và nhắc họ kiểm tra tài khoản Google Pay
.
Mã Node.js sau đây xử lý kết quả kiểm tra các 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
Sử dụng API mua hàng kỹ thuật số để yêu cầu Cửa hàng Play mà bạn hiện có kho hàng, sau đó tạo mảng đó thành một mảng các đối tượng JSON cho mỗi sản phẩm. Bạn tham chiếu mảng này sau để cho người dùng biết những tuỳ chọn nào có sẵn để mua hàng.
Mỗi hàng hoá kỹ thuật số của bạn được biểu thị dưới dạng một SKU ở định dạng JSON. Chiến lược phát hành đĩa đơn đoạn mã Node.js sau đây trình bày định dạng dự kiến của mỗi 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
https://actions.googleapis.com/v3/packages/{packageName}/skus:batchGet
điểm cuối, trong đó {packageName}
là tên gói ứng dụng của bạn trên Google Play
Console (ví dụ: com.myapp.digitalgoods
) rồi định dạng kết quả thành một
mảng đố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ê sản phẩm
Mã nhận dạng của hàng hoá kỹ thuật số (như bên dưới từng sản phẩm trong ứng dụng trên Google Play
Google Play Console) mà bạn muốn người dùng mua được ở body.ids
.
Mã Node.js sau đây yêu cầu danh sách các hàng hoá có sẵn từ nền tảng kỹ thuật số mua hàng API 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': ['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. Tạo đơn đặt hàng
Để bắt đầu giao dịch mua kỹ thuật số cho người dùng, hãy trình bày danh sách hàng hoá kỹ thuật số của bạn có thể mua được. Bạn có thể sử dụng nhiều loại phản hồi chi tiết để thể hiện kho hàng và nhắc người dùng lựa chọn.
Mã Node.js sau đây đọc một mảng khoảng không quảng cáo gồm các đối tượng SKU và tạo một list response (lập danh sách phản hồi) với một mục trong danh sách cho mỗi:
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 trong một phản hồi danh sách
và yêu cầu ý định COMPLETE_PURCHASE
kèm 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, thao tác này sẽ kích hoạt actions_intent_COMPLETE_PURCHASE
Sự kiện Dialogflow (hoặc ý định SDK Hành động actions.intent.COMPLETE_PURCHASE
) với
một đối số COMPLETE_PURCHASE_VALUE
mô tả kết quả. Tạo ý định
do sự kiện này kích hoạt để 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 luồng 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 đó. Tránh lỗi này bằng cách kiểm tra các giao dịch mua hàng và điều chỉnh các mục hiển thị để họ không thể 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ì mục được yêu cầu không có sẵn. Tránh lỗi này bằng cách kiểm tra SKU gần với 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 sản phẩm khác. Nhắc lại bằng cách tạo đơn đặt hàng để người dùng có thể đưa ra một 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 sớm khỏi luồng, hãy đặt câu hỏi người dùng nếu họ muốn thử lại giao dịch hoặc thoát khỏi giao dịch hoàn toàn.PURCHASE_STATUS_ERROR
: Giao dịch không thành công vì lý do không xác định. Cho phép 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ì 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 phép 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 sẽ đọ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);
}
});
Thể hiện các 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 yêu cầu JSON sẽ bao gồm một danh sách
trong số các giao dịch mua. Hãy kiểm tra thông tin này và thay đổi phản hồi cho Hành động của bạn
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
lần mua hàng trong ứng dụng trước đây 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"
}
]
}
],
...
}