คู่มือนี้จะอธิบายวิธีเพิ่มธุรกรรมดิจิทัลลงในการดําเนินการด้านการสนทนา เพื่อให้ผู้ใช้ซื้อสินค้าดิจิทัลแบบไม่บริโภคได้
คําสําคัญ: สินค้าดิจิทัลที่ไม่สามารถบริโภคได้ คือหน่วยราคาสินค้าพร้อมจําหน่าย (SKU) ที่ซื้อได้เพียงครั้งเดียว เช่น การเข้าถึงเนื้อหาเพิ่มเติมในแอปการดําเนินการหรือแอป Android แบบชําระเงิน ผลิตภัณฑ์ประเภทนี้แตกต่างจากสินค้าดิจิทัลที่บริโภคไม่ได้ซึ่งซื้อ ใช้งาน และซื้อซ้ําได้
ดูข้อมูลเพิ่มเติมเกี่ยวกับผลิตภัณฑ์แบบใช้งานครั้งเดียวไม่ได้ในเอกสารประกอบของ Google เกี่ยวกับฟีเจอร์เฉพาะผลิตภัณฑ์แบบครั้งเดียว
ขั้นตอนการทําธุรกรรม
คู่มือนี้จะสรุปแต่ละขั้นตอนการพัฒนาตามที่ปรากฏในขั้นตอนธุรกรรมของสินค้าดิจิทัล เมื่อการดําเนินการของคุณจัดการธุรกรรมสําหรับสินค้าดิจิทัล การดําเนินการจะใช้ขั้นตอนต่อไปนี้
- ตั้งค่าไคลเอ็นต์ API การซื้อแบบดิจิทัล: การดําเนินการของคุณใช้ API การซื้อแบบดิจิทัลเพื่อสื่อสารกับพื้นที่โฆษณาและธุรกรรมใน Google Play ก่อนที่การดําเนินการของคุณจะดําเนินการอื่นใด ไคลเอ็นต์จะสร้างไคลเอ็นต์ JWT ที่มีคีย์บริการเพื่อสื่อสารกับ API การซื้อแบบดิจิทัล
- รวบรวมข้อมูล: การดําเนินการของคุณจะรวบรวมข้อมูลพื้นฐานเกี่ยวกับผู้ใช้และพื้นที่โฆษณา Google Play เพื่อเตรียมพร้อมสําหรับธุรกรรม
- ตรวจสอบข้อกําหนดของธุรกรรม: การดําเนินการของคุณจะใช้ตัวช่วยข้อกําหนดธุรกรรมดิจิทัลเมื่อเริ่มขั้นตอนการซื้อเพื่อให้แน่ใจว่าผู้ใช้ทําธุรกรรมได้
- รวบรวมพื้นที่โฆษณาที่พร้อมใช้งาน: การดําเนินการของคุณตรวจสอบสินค้าคงคลังใน Google Play และระบุสินค้าที่มีอยู่ให้ซื้อในขณะนี้
- สร้างคําสั่งซื้อ: การดําเนินการของคุณจะนําเสนอสินค้าดิจิทัลที่พร้อมให้บริการแก่ผู้ใช้เพื่อให้ผู้ใช้เลือกซื้อสินค้าได้
- ดําเนินการซื้อให้เสร็จสมบูรณ์: การดําเนินการของคุณใช้ API การซื้อแบบดิจิทัลเพื่อเริ่มการซื้อพร้อมกับตัวเลือกของผู้ใช้ไปยัง Google Play Store
- จัดการผลลัพธ์: การดําเนินการจะได้รับรหัสสถานะสําหรับธุรกรรมและแจ้งผู้ใช้ว่าการซื้อเสร็จสมบูรณ์ (หรือต้องมีขั้นตอนเพิ่มเติม)
ข้อจํากัดและหลักเกณฑ์การตรวจสอบ
นโยบายเพิ่มเติมมีผลกับการดําเนินการที่มีธุรกรรม เราอาจใช้เวลา 2-3 สัปดาห์ในการตรวจสอบการดําเนินการที่รวมธุรกรรมต่างๆ คุณจึงควรคํานึงถึงเวลาในการวางแผนกําหนดการเผยแพร่ด้วย เพื่อทําให้ขั้นตอนการตรวจสอบง่ายขึ้น คุณต้องปฏิบัติตาม นโยบายและหลักเกณฑ์สําหรับการทําธุรกรรม ก่อนส่งการทํางานของคุณเพื่อรับการตรวจสอบ
การดําเนินการที่จําหน่ายสินค้าดิจิทัลใช้งานได้ในประเทศต่อไปนี้เท่านั้น
- ออสเตรเลีย
- บราซิล
- แคนาดา
- อินโดนีเซีย
- ญี่ปุ่น
- เม็กซิโก
- รัสเซีย
- สิงคโปร์
- ไทย
- ตุรกี
- สหราชอาณาจักร
- United States
สิ่งที่ต้องดำเนินการก่อน
ก่อนที่จะรวมธุรกรรมดิจิทัลเข้ากับการดําเนินการของคุณ คุณต้องมีข้อกําหนดเบื้องต้นต่อไปนี้
บัญชีนักพัฒนาซอฟต์แวร์และบัญชีผู้ขายใน Google Play เพื่อจัดการสินค้าดิจิทัลใน Google Play Console
โดเมนเว็บที่ได้รับการยืนยันใน Google Search Console โดเมนนี้ไม่จําเป็นต้องเชื่อมโยงกับเว็บไซต์สาธารณะ เราจะอ้างอิงโดเมนเว็บของคุณเท่านั้น
แอป Android ที่มี
com.android.vending.BILLING
สิทธิ์ ใน Google Play Console สินค้าดิจิทัลของคุณจะเป็น “การซื้อในแอป” ที่เชื่อมโยงกับแอปนี้ใน Google Play Consoleนอกจากนี้ คุณต้องสร้างรุ่นใน Play Console ด้วยแอปนี้ แต่หากไม่ต้องการให้แอปเผยแพร่สู่สาธารณะ ให้สร้างรุ่นอัลฟ่าแบบปิด
หากยังไม่มีแอป Android ให้ทําตามเชื่อมโยงวิธีการของแอป Android
ผลิตภัณฑ์ที่มีการจัดการอย่างน้อย 1 รายการใน Google Play Console ซึ่งเป็นสินค้าดิจิทัลที่คุณขายพร้อมกับการดําเนินการ โปรดทราบว่าคุณจะสร้างผลิตภัณฑ์ที่มีการจัดการใน Play Console ไม่ได้จนกว่าจะตั้งค่าข้อกําหนดเบื้องต้นของแอป Android
หากยังไม่มีผลิตภัณฑ์ที่มีการจัดการ ให้ทําตามวิธีการสร้างสินค้าดิจิทัล
เชื่อมโยงแอป Android
หากคุณยังไม่มีแอป Android ที่มีสิทธิ์การเรียกเก็บเงินใน Google Play Console ให้ทําตามขั้นตอนต่อไปนี้
- ใน Android Studio หรือ Android IDE ที่ต้องการ ให้สร้างโปรเจ็กต์ใหม่ เลือกตัวเลือกในข้อความแจ้งให้ตั้งค่าโครงการเพื่อสร้างแอปพื้นฐาน
- ตั้งชื่อแพ็กเกจให้กับโครงการ เช่น
com.mycompany.myapp
ไม่ควรตั้งชื่อนี้เป็นค่าเริ่มต้น เนื่องจากคุณอัปโหลดแพ็กเกจที่มีcom.example
ไปยัง Play Console ไม่ได้ - เปิดไฟล์
AndroidManifest.xml
ของแอป เพิ่มบรรทัดของโค้ดต่อไปนี้ในองค์ประกอบ
manifest
<uses-permission android:name="com.android.vending.BILLING" />
ไฟล์
AndroidManifest.xml
ของคุณควรมีลักษณะเหมือนโค้ดบล็อกต่อไปนี้<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>
สร้างแอปของคุณเป็น APK ที่มีการลงชื่อ ใน Android Studio ให้ทําตามขั้นตอนต่อไปนี้
- ไปที่ Build, สร้าง Signed Bundle / APK
- คลิกถัดไป
- ในส่วนเส้นทางคีย์สโตร์ ให้คลิกสร้างใหม่
- กรอกข้อมูลในแต่ละช่อง แล้วคลิกตกลง จดบันทึกรหัสผ่านคีย์สโตร์และรหัสผ่านคีย์ แล้วเก็บไว้ในที่ที่ปลอดภัย เนื่องจากคุณจะต้องใช้ข้อมูลเหล่านี้ในภายหลัง
- คลิกถัดไป
- เลือกรุ่น
- เลือก V1 (JAR Signature)
- คลิกเสร็จ
- หลังจากนั้นไม่กี่วินาที Android Studio จะสร้างไฟล์
app-release.apk
ค้นหาไฟล์นี้เพื่อใช้ในภายหลัง
สร้างแอปพลิเคชันใหม่ใน Google Play Console
ไปที่รุ่นต่างๆ ของแอป
ในส่วนแทร็กปิด ให้ไปที่จัดการ แล้วเลือกอัลฟ่า
คลิกปุ่มสร้างรุ่น
ในส่วนให้ Google จัดการและปกป้องคีย์การลงนามของคุณ ให้ป้อนข้อมูลคีย์การลงนาม
อัปโหลดไฟล์ APK ของคุณ
คลิกบันทึก
สร้างสินค้าดิจิทัล
หากขณะนี้คุณไม่มีสินค้าดิจิทัลใดๆ ใน Play Console ให้ทําตามขั้นตอนต่อไปนี้
- ในคอนโซล Google Play ให้ไปที่ผลิตภัณฑ์ที่ซื้อในแอป จากนั้นผลิตภัณฑ์ที่มีการจัดการ หากคุณเห็นคําเตือน ให้ทําตามวิธีการก่อนหน้าเพื่อสร้างแอป Android หรือคลิกลิงก์เพื่อสร้างโปรไฟล์ผู้ขาย
- คลิกสร้างผลิตภัณฑ์ที่มีการจัดการ
- กรอกข้อมูลในช่องสําหรับผลิตภัณฑ์ดิจิทัล จดบันทึกรหัสผลิตภัณฑ์ ซึ่งเป็นวิธีการอ้างอิงผลิตภัณฑ์นี้จากการดําเนินการของคุณ
- คลิกบันทึก
- ทําซ้ําขั้นตอนที่ 2-4 สําหรับแต่ละผลิตภัณฑ์ที่คุณต้องการขาย
เตรียมโปรเจ็กต์การดําเนินการของคุณ
เมื่อตั้งค่าสินค้าดิจิทัลใน Google Play Console คุณจะต้องเปิดใช้ธุรกรรมดิจิทัลและเชื่อมโยงโครงการ Actions กับแอป Play
ตั้งค่า
ทําตามขั้นตอนต่อไปนี้เพื่อเปิดธุรกรรมสินค้าดิจิทัลในโปรเจ็กต์ Actions ของคุณ
- ในคอนโซล Actions ให้เปิดโครงการหรือสร้างโครงการใหม่
- ไปที่ทําให้ใช้งานได้ จากนั้นไปที่ข้อมูลไดเรกทอรี
- ในส่วนข้อมูลเพิ่มเติมและธุรกรรม ให้เลือกช่องใช่ใต้การดําเนินการของคุณใช้ Digital Purchase API เพื่อทําธุรกรรมของสินค้าดิจิทัล
- คลิกบันทึก
สร้างคีย์ API สําหรับสินค้าดิจิทัล
หากต้องการส่งคําขอไปยัง Digital Good API คุณต้องดาวน์โหลดคีย์บัญชีบริการ JSON ที่เชื่อมโยงกับโปรเจ็กต์คอนโซล Actions ของคุณ
ในการเรียกคีย์บัญชีบริการ ให้ทําตามขั้นตอนต่อไปนี้
- ในคอนโซล Actions ให้คลิกไอคอน 3 จุดที่มุมขวาบน แล้วคลิกการตั้งค่าโปรเจ็กต์
- ค้นหารหัสโปรเจ็กต์ของการดําเนินการ
- ไปที่ลิงก์นี้โดยแทนที่ "
<project_id>
" ด้วยรหัสโปรเจ็กต์:https://console.developers.google.com/apis/credentials?project=project_id
- ในการนําทางหลัก ให้ไปที่ข้อมูลรับรอง
- ในหน้าที่ปรากฏขึ้น ให้คลิกสร้างข้อมูลเข้าสู่ระบบ แล้วคลิกคีย์บัญชีบริการ
- ไปที่บัญชีบริการ และคลิกบัญชีบริการใหม่
- ตั้งชื่อบัญชีบริการ เช่น Digitaltransactions
- คลิกสร้าง
- ตั้งค่าบทบาทเป็นโปรเจ็กต์ > เจ้าของ
- คลิกต่อไป
- คลิกสร้างคีย์
- เลือกประเภทคีย์ JSON
- คลิกสร้างคีย์และดาวน์โหลดคีย์บัญชีบริการ JSON
บันทึกคีย์บัญชีบริการนี้ในตําแหน่งที่ปลอดภัย คุณจะใช้คีย์นี้ในการดําเนินการ เพื่อสร้างไคลเอ็นต์สําหรับ API การซื้อแบบดิจิทัล
เชื่อมต่อกับพื้นที่โฆษณา Play ของคุณ
หากต้องการเข้าถึงสินค้าดิจิทัลจากโปรเจ็กต์ Actions ให้เชื่อมโยงโดเมนเว็บและแอปกับโปรเจ็กต์เป็นพร็อพเพอร์ตี้ที่เชื่อมต่อ
หากต้องการเชื่อมต่อโดเมนเว็บ Play Console และแอปเข้ากับโครงการ Actions ให้ทําตามขั้นตอนต่อไปนี้
- ในคอนโซล Actions ให้ไปที่ใช้งาน แล้วไปที่การยืนยันแบรนด์
หากยังไม่ได้เชื่อมต่อพร็อพเพอร์ตี้ใดๆ ให้เชื่อมต่อเว็บไซต์ก่อน โดยทําดังนี้
- คลิกปุ่มเว็บพร็อพเพอร์ตี้ (</>)
- ป้อน URL สําหรับโดเมนเว็บของคุณแล้วคลิกเชื่อมต่อ
Google จะส่งอีเมลพร้อมด้วยคําแนะนําเพิ่มเติมไปให้บุคคลที่ได้รับการยืนยันสําหรับโดเมนเว็บนั้นใน Google Search Console เมื่อผู้รับอีเมลนี้ทําตามขั้นตอนดังกล่าวแล้ว เว็บไซต์ควรจะปรากฏใต้การยืนยันแบรนด์
เมื่อมีเว็บไซต์ที่เชื่อมต่อแล้วอย่างน้อย 1 เว็บไซต์ ให้ทําตามขั้นตอนต่อไปนี้เพื่อเชื่อมต่อแอป Android
- ในคอนโซล Actions ให้ไปที่ใช้งาน แล้วไปที่การยืนยันแบรนด์
- คลิกเชื่อมต่อแอป
ในหน้าที่ปรากฏขึ้น ให้ทําตามวิธีการเพื่อยืนยันโดเมนบนเว็บใน Play Console เลือกแอป Play ที่มีสินค้าดิจิทัลของคุณ และป้อน URL ของโดเมนเว็บตามที่แสดงในหน้าการยืนยันแบรนด์
Google จะส่งอีเมลยืนยันไปยังเจ้าของที่ได้รับการยืนยันของโดเมนอีกครั้ง เมื่อพวกเขาอนุมัติการยืนยันแล้ว แอป Play ของคุณจะปรากฏใต้การยืนยันแบรนด์
เปิดใช้เข้าถึงการซื้อใน Play
สร้างขั้นตอนการซื้อ
เมื่อเตรียมโปรเจ็กต์การดําเนินการและพื้นที่โฆษณาสินค้าดิจิทัลแล้ว ให้สร้างขั้นตอนการซื้อสินค้าดิจิทัลในเว็บฮุคการดําเนินการตามบทสนทนา
1. ตั้งค่าไคลเอ็นต์ API การซื้อแบบดิจิทัล
ในเว็บฮุคการดําเนินการสนทนา ให้สร้างไคลเอ็นต์ JWT ด้วยคีย์ JSON ของบัญชีบริการและขอบเขต https://www.googleapis.com/auth/actions.purchases.digital
โค้ด Node.js ต่อไปนี้จะสร้างไคลเอ็นต์ JWT สําหรับ API การซื้อแบบดิจิทัล
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. รวบรวมข้อมูล
ก่อนที่ผู้ใช้จะทําการซื้อ การดําเนินการของคุณจะรวบรวมข้อมูลเกี่ยวกับความสามารถในการซื้อของผู้ใช้และรายการสินค้าที่มีอยู่จากพื้นที่โฆษณาของคุณ
2. ก. ตรวจสอบข้อกําหนดการซื้อแบบดิจิทัล
ควรตรวจสอบให้แน่ใจว่าบัญชีของผู้ใช้ได้รับการตั้งค่าให้ทําธุรกรรมก่อน จึงจะมีตัวเลือกในการซื้อ คุณควรไปยังฉาก DigitalPurchaseCheck
ซึ่งผู้ใช้จะต้องได้รับการยืนยันว่าตนได้ทําธุรกรรมบน Surface ที่อนุญาต (Smart Display, ลําโพงอัจฉริยะ หรือ Android) และอยู่ในตําแหน่งที่รองรับธุรกรรมดิจิทัล
หากต้องการสร้างช่องทางตรวจสอบการซื้อแบบดิจิทัล ให้ทําตามขั้นตอนต่อไปนี้
- ในแท็บฉาก ให้เพิ่มฉากใหม่ที่มีชื่อว่า
DigitalPurchaseCheck
- ในส่วนการเติมช่อง ให้คลิก + เพื่อเพิ่มช่องใหม่
- ในส่วนเลือกประเภท ให้เลือก
actions.type.DigitalPurchaseCheckResult
เป็นประเภทช่อง - ในช่องชื่อช่องโฆษณา ให้ตั้งชื่อช่องว่า
DigitalPurchaseCheck
- เปิดใช้ช่องทําเครื่องหมายปรับแต่งการเขียนค่าช่องโฆษณา (เปิดใช้โดยค่าเริ่มต้น)
- คลิกบันทึก
การตรวจสอบการซื้อแบบดิจิทัลจะส่งผลให้เกิดผลลัพธ์อย่างใดอย่างหนึ่งต่อไปนี้
- หากเป็นไปตามข้อกําหนด ระบบจะตั้งค่าพารามิเตอร์เซสชันให้มีเงื่อนไขความสําเร็จ และคุณอนุญาตให้ผู้ใช้ซื้อสินค้าดิจิทัลต่อไปได้
- หากไม่เป็นไปตามข้อกําหนดอย่างน้อย 1 รายการ ระบบจะตั้งค่าพารามิเตอร์เซสชันที่มีเงื่อนไขความล้มเหลว ในกรณีนี้ คุณควรเปลี่ยนหัวข้อการสนทนา ออกจากประสบการณ์การทําธุรกรรม หรือยุติการสนทนา
ในการจัดการผลการตรวจสอบการซื้อแบบดิจิทัล ให้ทําตามขั้นตอนต่อไปนี้
- จากแท็บฉาก ให้เลือกฉาก
DigitalPurchaseCheck
ที่สร้างใหม่ - ในส่วนเงื่อนไข ให้คลิก + เพื่อเพิ่มเงื่อนไขใหม่
ป้อนไวยากรณ์เงื่อนไขต่อไปนี้ในช่องข้อความเพื่อดูเงื่อนไขความสําเร็จ
scene.slots.status == "FINAL" && session.params.DigitalPurchaseCheck.resultType == "CAN_PURCHASE"
วางเคอร์เซอร์เหนือเงื่อนไขที่คุณเพิ่งเพิ่ม แล้วคลิกลูกศรขึ้นเพื่อวางไว้ก่อน
if scene.slots.status == "FINAL"
เปิดใช้ส่งข้อความแจ้งและแจ้งให้ผู้ใช้ทราบว่า พร้อมที่จะทําธุรกรรม
candidates: - first_simple: variants: - speech: >- You are ready to purchase digital goods.
ในส่วนการเปลี่ยน ให้เลือกฉากอื่น ซึ่งช่วยให้ผู้ใช้สนทนาต่อและทําธุรกรรมได้
เลือกเงื่อนไข
else if scene.slots.status == "FINAL"
เปิดใช้ส่งข้อความแจ้งและแจ้งให้ผู้ใช้ทราบว่า ทําธุรกรรมไม่ได้
candidates: - first_simple: variants: - speech: Sorry you cannot perform a digital purchase.
ในส่วนการเปลี่ยน ให้เลือกสิ้นสุดการสนทนาเพื่อสิ้นสุดการสนทนา
2. ข. รวบรวมพื้นที่โฆษณาที่พร้อมใช้งาน
ใช้ API การซื้อแบบดิจิทัลเพื่อส่งคําขอพื้นที่โฆษณาใน Play Store ที่มีอยู่ในปัจจุบัน แล้วสร้างข้อมูลดังกล่าวเป็นอาร์เรย์ออบเจ็กต์ JSON สําหรับผลิตภัณฑ์แต่ละรายการ คุณอ้างอิงอาร์เรย์นี้ภายหลังเพื่อแสดงให้ผู้ใช้เห็น ตัวเลือกที่มีให้ซื้อ
สินค้าดิจิทัลแต่ละรายการจะแสดงเป็น SKU ในรูปแบบ JSON โค้ด Node.js ต่อไปนี้จะสรุปการจัดรูปแบบที่คาดไว้ของ 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
]
}
ส่งคําขอ POST ไปยังปลายทาง https://actions.googleapis.com/v3/packages/{packageName}/skus:batchGet
โดยที่ {packageName}
คือชื่อแพ็กเกจของแอปในคอนโซล Google Play (เช่น com.myapp.digitalgoods
) และจัดรูปแบบผลลัพธ์เป็นอาร์เรย์ของออบเจ็กต์ SKU
หากต้องการดึงสินค้าดิจิทัลที่เฉพาะเจาะจงในอาร์เรย์ผลลัพธ์เท่านั้น ให้ระบุรหัสผลิตภัณฑ์สําหรับสินค้าดิจิทัล (ดังที่แสดงใต้ผลิตภัณฑ์ที่ซื้อในแอปแต่ละรายการใน Google Play Console) ที่คุณต้องการให้ซื้อได้ใน body.ids
โค้ด Node.js ต่อไปนี้จะขอรายการที่ใช้ได้จาก API การซื้อแบบดิจิทัล และจัดรูปแบบผลลัพธ์เป็นอาร์เรย์ของ 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. สร้างคําสั่งซื้อ
หากต้องการเริ่มรายการดิจิทัลของผู้ใช้ ให้แสดงรายการสินค้าดิจิทัลที่พร้อมจําหน่าย คุณจะใช้ประเภทการตอบกลับที่หลากหลายเพื่อแสดงถึงสต็อกและแจ้งให้ผู้ใช้เลือกได้
โค้ด Node.js ต่อไปนี้จะอ่านอาร์เรย์พื้นที่โฆษณาของออบเจ็กต์ SKU และสร้างการตอบกลับรายการที่มี 1 รายการสําหรับแต่ละรายการ
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,
}));
สร้างการซื้อจากตัวเลือกของผู้ใช้
เมื่อผู้ใช้เลือกรายการแล้ว คุณสามารถสร้างคําสั่งซื้อได้ หากต้องการดําเนินการดังกล่าว เมื่อช่องโฆษณาที่เชื่อมโยงกับรายการที่เลือกทํางาน คุณจะเรียกใช้เว็บฮุคเพื่อสร้างคําสั่งซื้อได้ จากข้อมูลการดําเนินการ ให้บันทึกข้อมูลคําสั่งซื้อลงในพารามิเตอร์เซสชัน มีการใช้ออบเจ็กต์คําสั่งซื้อในฉากต่างๆ ในเซสชันเดียวกัน
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": ""
};
ใน Action Builder คุณสามารถใช้เครื่องมือแก้ไข JSON เพื่อกําหนดค่าช่องด้วยออบเจ็กต์ตามลําดับด้านบนได้ การใช้งานทั้ง 2 แบบใช้รูปแบบเดียวกันสําหรับ CompletePurchaseValueSpec
ซึ่งอยู่ในข้อมูลอ้างอิงเพย์โหลด JSON ของ JSON
4. ทําการซื้อให้เสร็จสมบูรณ์
เมื่อผู้ใช้เลือกรายการแล้ว คุณสามารถทําการซื้อต่อได้ เมื่อเติมเต็มช่องที่เชื่อมโยงกับรายการที่เลือกแล้ว คุณควรเปลี่ยนไปใช้ฉากที่ซื้อเสร็จแล้ว
สร้างฉากการซื้อที่สมบูรณ์
- จากแท็บฉาก ให้เพิ่มฉากใหม่ที่ชื่อ
CompletePurchase
- ในส่วนการเติมช่อง ให้คลิก + เพื่อเพิ่มช่องใหม่
- ในส่วนเลือกประเภท ให้เลือก
actions.type.CompletePurchaseValue
เป็นประเภทช่อง - ในช่องชื่อช่องโฆษณา ให้ตั้งชื่อช่องว่า
CompletePurchase
- เปิดใช้ช่องทําเครื่องหมายกําหนดค่าการปรับแต่งค่าที่เขียนในช่องเอง (เปิดใช้โดยค่าเริ่มต้น)
- ในส่วนกําหนดค่าช่อง ให้เลือก
Use session parameter
จากเมนูแบบเลื่อนลง - ในส่วนกําหนดค่าช่อง ให้ป้อนชื่อของพารามิเตอร์เซสชันที่ใช้เก็บคําสั่งซื้อลงในช่องข้อความ (เช่น
$session.params.purchase
) - คลิกบันทึก
5. จัดการผลลัพธ์
ช่องที่มีประเภท actions.type.CompletePurchaseValue
อาจมีผลลัพธ์ต่อไปนี้
PURCHASE_STATUS_OK
: การซื้อเสร็จสมบูรณ์ ในขณะนี้ ธุรกรรมเสร็จสมบูรณ์แล้ว โปรดออกจากขั้นตอนการทําธุรกรรมแล้วกลับไปยังการสนทนาของคุณPURCHASE_STATUS_ALREADY_OWNED
: ธุรกรรมล้มเหลวเนื่องจากผู้ใช้เป็นเจ้าของรายการนั้นแล้ว โปรดหลีกเลี่ยงข้อผิดพลาดนี้โดยตรวจสอบการซื้อก่อนหน้านี้ของผู้ใช้และปรับแต่งรายการที่แสดงเพื่อไม่ให้มีตัวเลือกในการซื้อรายการที่ตนเป็นเจ้าของซ้ําPURCHASE_STATUS_ITEM_UNAVAILABLE
: ธุรกรรมล้มเหลวเนื่องจากรายการที่ขอไม่พร้อมใช้งาน หลีกเลี่ยงข้อผิดพลาดนี้โดยตรวจสอบ SKU ที่มีอยู่ใกล้กับเวลาที่ซื้อมากขึ้นPURCHASE_STATUS_ITEM_CHANGE_REQUESTED
: ธุรกรรมล้มเหลวเนื่องจากผู้ใช้ตัดสินใจซื้ออย่างอื่น แสดงข้อความแจ้งเกี่ยวกับการสร้างคําสั่งซื้อของคุณอีกครั้ง เพื่อให้ผู้ใช้ตัดสินใจอีกครั้งได้ทันทีPURCHASE_STATUS_USER_CANCELLED
: ธุรกรรมล้มเหลวเนื่องจากผู้ใช้ยกเลิกขั้นตอนการซื้อ เนื่องจากผู้ใช้ออกจากขั้นตอนดังกล่าวก่อนเวลาอันควร ให้ถามผู้ใช้ว่าต้องการลองทําธุรกรรมอีกครั้งหรือออกจากธุรกรรมไปเลยPURCHASE_STATUS_ERROR
: ธุรกรรมล้มเหลวโดยไม่ทราบสาเหตุ แจ้งให้ผู้ใช้ทราบว่าธุรกรรมนี้ล้มเหลว แล้วถามว่าต้องการลองอีกครั้งไหมPURCHASE_STATUS_UNSPECIFIED
: ธุรกรรมล้มเหลวโดยไม่ทราบสาเหตุ ซึ่งทําให้เกิดสถานะที่ไม่รู้จัก จัดการสถานะข้อผิดพลาดนี้โดยแจ้งให้ผู้ใช้ทราบว่าทําธุรกรรมไม่สําเร็จ แล้วสอบถามว่าต้องการลองอีกครั้งหรือไม่
คุณควรจัดการผลลัพธ์แต่ละรายการจากฉากใน CompletePurchase
- จากแท็บฉาก ให้เลือกฉาก
CompletePurchase
ที่สร้างใหม่ - ในส่วนเงื่อนไข ให้คลิก + เพื่อเพิ่มเงื่อนไขใหม่
ป้อนไวยากรณ์เงื่อนไขต่อไปนี้ในช่องข้อความเพื่อดูเงื่อนไขความสําเร็จ
scene.slots.status == "FINAL" && session.params.CompletePurchase.purchaseStatus == "PURCHASE_STATUS_OK"
วางเคอร์เซอร์เหนือเงื่อนไขที่คุณเพิ่งเพิ่ม แล้วคลิกลูกศรขึ้นเพื่อวางไว้ก่อน
if scene.slots.status == "FINAL"
เปิดใช้ส่งข้อความแจ้งและแจ้งให้ผู้ใช้ทราบว่า พร้อมที่จะทําธุรกรรม
candidates: - first_simple: variants: - speech: >- Your purchase was successful.
ในส่วนการเปลี่ยน ให้เลือกสิ้นสุดการสนทนาเพื่อสิ้นสุดการสนทนา
ทําขั้นตอนข้างต้นซ้ํากับผลลัพธ์ของการซื้อแต่ละประเภทที่คุณต้องการสนับสนุน
แสดงข้อมูลการซื้อของผู้ใช้
เมื่อผู้ใช้ค้นหาจากการดําเนินการของคุณ ออบเจ็กต์ user
ของ JSON ที่มีคําขอจะเป็นรายการการซื้อ ตรวจสอบข้อมูลนี้และเปลี่ยนการตอบกลับของการดําเนินการตามเนื้อหาที่ผู้ใช้จ่ายเงินไป
ตัวอย่างโค้ดต่อไปนี้แสดงออบเจ็กต์ user
ของคําขอที่มี packageEntitlements
ของการซื้อในแอปก่อนหน้านี้ที่ทําสําหรับแพ็กเกจ 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"
]
}
}
ทดสอบโปรเจ็กต์
เมื่อทดสอบโปรเจ็กต์ คุณจะเปิดใช้โหมดแซนด์บ็อกซ์ในคอนโซลการดําเนินการเพื่อทดสอบการดําเนินการโดยไม่เรียกเก็บเงินจากวิธีการชําระเงินได้ ในการเปิดใช้โหมดแซนด์บ็อกซ์ ให้ทําตามขั้นตอนต่อไปนี้
- ในคอนโซลการทํางาน ให้คลิกทดสอบในการนําทาง
- คลิกการตั้งค่า
- เปิดใช้ตัวเลือกแซนด์บ็อกซ์การพัฒนา