คำแนะนำนี้จะอธิบายวิธีเพิ่มธุรกรรมดิจิทัลไปยังการสนทนา การดำเนินการเพื่อให้ผู้ใช้ซื้อสินค้าดิจิทัลที่ใช้แล้วหมดไปได้
คำสำคัญ: สินค้าดิจิทัลที่ใช้แล้วหมดไปคือหน่วยเก็บสต็อก (SKU) ที่ ผู้ใช้สามารถใช้และซื้อมากกว่า 1 ครั้ง เช่น จำนวนสกุลเงินในเกม สำหรับเกม Android สินค้าดิจิทัลนี้แตกต่างจากสินค้าบริโภคไม่ได้ สินค้าดิจิทัลที่ผู้ใช้สามารถซื้อได้เพียงครั้งเดียว
ดูข้อมูลเพิ่มเติมเกี่ยวกับผลิตภัณฑ์แบบใช้ครั้งเดียวเพื่อการบริโภคได้ที่ Android เอกสารประกอบใน ฟีเจอร์เฉพาะผลิตภัณฑ์แบบใช้ครั้งเดียว
ขั้นตอนการทำธุรกรรม
คู่มือนี้จะสรุปขั้นตอนการพัฒนาแต่ละขั้นเมื่อเกิดสินค้าดิจิทัล ขั้นตอนการทำธุรกรรม เมื่อการดำเนินการของคุณจัดการธุรกรรมสำหรับสินค้าดิจิทัล ใช้ขั้นตอนต่อไปนี้
- ตั้งค่าไคลเอ็นต์ API การซื้อแบบดิจิทัล: การดำเนินการของคุณใช้ไคลเอ็นต์ดิจิทัล API การซื้อเพื่อสื่อสารกับพื้นที่โฆษณา Google Play และทำธุรกรรม ก่อนที่การดำเนินการของคุณจะทำอย่างอื่น เครื่องมือจะสร้างไคลเอ็นต์ JWT ที่มี คีย์บริการเพื่อสื่อสารกับ API การซื้อแบบดิจิทัล
- รวบรวมข้อมูล: การดำเนินการของคุณจะรวบรวมข้อมูลพื้นฐานเกี่ยวกับ
ผู้ใช้และพื้นที่โฆษณา Google Play ของคุณเพื่อเตรียมทำธุรกรรม
- ตรวจสอบข้อกำหนดธุรกรรม: การดำเนินการของคุณใช้ช่องทางดิจิทัล ตัวช่วยข้อกำหนดธุรกรรมตั้งแต่เริ่มต้นขั้นตอนการซื้อเพื่อ ในการตรวจสอบว่าผู้ใช้ทำธุรกรรมได้
- รวบรวมพื้นที่โฆษณาที่พร้อมใช้งาน: การดำเนินการของคุณจะตรวจสอบ Google Play สินค้าคงคลังและระบุสินค้าที่สามารถซื้อได้ในปัจจุบัน
- สร้างคำสั่งซื้อ: การดำเนินการของคุณนำเสนอสินค้าดิจิทัลที่พร้อมใช้งานแก่ เพื่อที่ผู้ใช้จะเลือกซื้อได้
- ทำการซื้อให้เสร็จสมบูรณ์: การดำเนินการของคุณใช้ API การซื้อแบบดิจิทัลเพื่อ เริ่มการซื้อด้วยสิ่งที่ผู้ใช้เลือกจาก Google Play Store
- จัดการผลลัพธ์: การดำเนินการจะได้รับรหัสสถานะสำหรับ และแจ้งให้ผู้ใช้ทราบว่าการซื้อเสร็จสมบูรณ์ (หรือใช้เวลา ขั้นตอนเพิ่มเติม)
- ทำให้การซื้อซ้ำได้: การดำเนินการของคุณใช้การซื้อแบบดิจิทัล API เพื่อ "ใช้" สินค้าที่ซื้อ ทำให้สินค้านั้นพร้อมจำหน่าย อีกครั้ง
ข้อจำกัดและหลักเกณฑ์การตรวจสอบ
นโยบายเพิ่มเติมจะมีผลกับการดำเนินการที่มีธุรกรรม ซึ่งอาจใช้เวลา 2-3 ปี สัปดาห์ในการตรวจสอบการดำเนินการที่มีธุรกรรม ดังนั้นให้คำนึงถึงช่วงเวลา การวางแผนกำหนดการเผยแพร่ โปรดตรวจสอบว่าคุณได้ปฏิบัติตามข้อกำหนดเพื่อให้ขั้นตอนการตรวจสอบง่ายขึ้น พร้อมด้วย นโยบายและหลักเกณฑ์สำหรับธุรกรรม ก่อนส่งการดำเนินการของคุณเข้ารับการตรวจสอบ
การดำเนินการที่ขายสินค้าดิจิทัลสามารถใช้งานได้ในประเทศต่อไปนี้เท่านั้น
- ออสเตรเลีย
- บราซิล
- แคนาดา
- อินโดนีเซีย
- ญี่ปุ่น
- เม็กซิโก
- รัสเซีย
- สิงคโปร์
- ไทย
- ตุรกี
- สหราชอาณาจักร
- สหรัฐอเมริกา
ข้อกำหนดเบื้องต้น
ก่อนที่จะรวมธุรกรรมดิจิทัลไว้ในการดำเนินการ คุณต้องมี ข้อกำหนดเบื้องต้นดังต่อไปนี้
ต บัญชีนักพัฒนาแอป และ บัญชีผู้ขาย บน 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 ให้ทำตามขั้นตอนต่อไปนี้
- ไปที่สร้าง สร้าง Bundle / APK ที่ลงชื่อ
- คลิกถัดไป
- คลิกสร้างใหม่ในส่วนเส้นทางแหล่งคีย์
- กรอกข้อมูลในแต่ละช่องแล้วคลิกตกลง จดบันทึกแหล่งเก็บคีย์ รหัสผ่านและรหัสผ่านหลัก และเก็บข้อมูลเหล่านี้ไว้ในที่ปลอดภัยเนื่องจาก คุณจะต้องใช้ตัวเลือกเหล่านี้ภายหลัง
- คลิกถัดไป
- เลือกรุ่น
- เลือก V1 (JAR Signature)
- คลิกเสร็จสิ้น
- หลังจากผ่านไป 2-3 วินาที Android Studio จะสร้างไฟล์
app-release.apk
ค้นหาไฟล์นี้เพื่อใช้ในภายหลัง
ใน Google Play Console สร้างแอปพลิเคชันใหม่
ไปที่รุ่นต่างๆ ของแอป
ในส่วนแทร็กปิด ให้ไปที่จัดการ แล้วไปที่อัลฟ่า
คลิกปุ่มสร้างรุ่น
ในส่วนให้ Google จัดการและปกป้องคีย์ Signing ของคุณ ให้ป้อนลายเซ็น ข้อมูลสำคัญ
อัปโหลดไฟล์ APK
คลิกบันทึก
สร้างสินค้าดิจิทัล
หากคุณยังไม่มีสินค้าดิจิทัลใน Play Console โปรดทำตามขั้นตอนต่อไปนี้ ขั้นตอน:
- ใน Google Play Console ไปที่ไอเทมที่ซื้อในแอป แล้วไปที่ผลิตภัณฑ์ที่มีการจัดการ หากเห็นคำเตือน ทำตามวิธีการก่อนหน้าเพื่อสร้างแอป Android หรือคลิกลิงก์ เพื่อสร้างโปรไฟล์ผู้ขาย
- คลิกสร้างผลิตภัณฑ์ที่มีการจัดการ
- กรอกข้อมูลในช่องสำหรับผลิตภัณฑ์ดิจิทัลของคุณ จดรหัสผลิตภัณฑ์ ซึ่งเป็นวิธีอ้างอิงผลิตภัณฑ์นี้จากการดำเนินการของคุณ
- คลิกบันทึก
- ทำขั้นตอนที่ 2-4 ซ้ำสำหรับผลิตภัณฑ์แต่ละรายการที่ต้องการขาย
เตรียมโปรเจ็กต์ Actions
เมื่อมีการตั้งค่าสินค้าดิจิทัลใน Google Play Console คุณต้องเปิดใช้ ธุรกรรมดิจิทัลและเชื่อมโยงโปรเจ็กต์ Actions กับแอป Play
ตั้งค่า
หากต้องการเปิดธุรกรรมสินค้าดิจิทัลในโปรเจ็กต์ Actions ให้ทำดังนี้ ขั้นตอน:
- ในคอนโซล Actions ให้เปิดโปรเจ็กต์หรือสร้างโปรเจ็กต์ใหม่
- ไปที่ทำให้ใช้งานได้ จากนั้นไปที่ข้อมูลไดเรกทอรี
- ในส่วนข้อมูลเพิ่มเติมและธุรกรรม ให้เลือกช่องใช่ ในส่วน การดำเนินการของคุณใช้ Digital Purchase API เพื่อทำธุรกรรมหรือไม่ ของสินค้าดิจิทัล
- คลิกบันทึก
สร้างคีย์ API สินค้าดิจิทัล
หากต้องการส่งคำขอไปยัง API สินค้าดิจิทัล คุณต้องดาวน์โหลดบริการ JSON คีย์บัญชีที่เชื่อมโยงกับโปรเจ็กต์คอนโซล Actions
หากต้องการเรียกข้อมูลคีย์บัญชีบริการ ให้ทำตามขั้นตอนต่อไปนี้
- ในคอนโซลการดำเนินการ ให้คลิกไอคอนจุด 3 จุดที่มุมขวาบน ให้ไปที่การตั้งค่าโปรเจ็กต์
- ค้นหารหัสโปรเจ็กต์ของการดำเนินการ
- ไปที่ลิงก์นี้ แทนที่ "
<project_id>
" ด้วยรหัสโปรเจ็กต์ของคุณ: วันที่https://console.developers.google.com/apis/credentials?project=project_id
- ในการนําทางหลัก ให้ไปที่ข้อมูลเข้าสู่ระบบ
- ในหน้าที่ปรากฏขึ้น ให้คลิกสร้างข้อมูลเข้าสู่ระบบ แล้วคลิกบริการ คีย์บัญชี
- ไปที่บัญชีบริการ แล้วคลิกบัญชีบริการใหม่
- ตั้งชื่อบัญชีบริการให้อย่างเช่น digitaltransactions
- คลิกสร้าง
- กำหนดบทบาทเป็นโปรเจ็กต์ > เจ้าของ
- คลิกต่อไป
- คลิกสร้างคีย์
- เลือกประเภทคีย์ JSON
- คลิกสร้างคีย์และดาวน์โหลดคีย์บัญชีบริการ JSON
บันทึกคีย์บัญชีบริการนี้ไว้ในที่ปลอดภัย คุณจะใช้คีย์นี้ใน การดำเนินการตามคำสั่งซื้อเพื่อสร้างไคลเอ็นต์สำหรับ API การซื้อแบบดิจิทัล
เชื่อมต่อกับพื้นที่โฆษณา Play ของคุณ
ในการเข้าถึงสินค้าดิจิทัลจากโปรเจ็กต์ Actions ให้เชื่อมโยง โดเมนเว็บและแอปที่ใช้โปรเจ็กต์เป็น พร็อพเพอร์ตี้ที่เชื่อมต่อ
หากต้องการเชื่อมต่อโดเมนเว็บและแอป Play Console กับโปรเจ็กต์ Actions ให้ทำดังนี้ ขั้นตอนเหล่านี้:
- ในคอนโซลการดำเนินการ ให้ไปที่ทำให้ใช้งานได้ จากนั้นไปที่การยืนยันแบรนด์
หากยังไม่ได้เชื่อมต่อพร็อพเพอร์ตี้ใดๆ ให้เชื่อมต่อเว็บไซต์ก่อน โดยทำดังนี้
- คลิกปุ่มผลิตภัณฑ์และบริการบนอินเทอร์เน็ต (</>)
- ป้อน URL สำหรับโดเมนเว็บของคุณ แล้วคลิกเชื่อมต่อ
Google จะส่งอีเมลพร้อมด้วยคำแนะนำเพิ่มเติมให้กับบุคคลที่ ได้รับการยืนยันสำหรับโดเมนเว็บนั้นใน Google Search Console เมื่อผู้รับอีเมลนี้ทำตามขั้นตอนเหล่านั้นแล้ว เว็บไซต์ควร จะปรากฏในส่วนการยืนยันแบรนด์
เมื่อคุณมีเว็บไซต์ที่เชื่อมต่อแล้วอย่างน้อย 1 เว็บไซต์ ให้ทำตามขั้นตอนต่อไปนี้เพื่อ เชื่อมต่อแอป Android ของคุณ
- ในคอนโซลการดำเนินการ ให้ไปที่ทำให้ใช้งานได้ จากนั้นไปที่การยืนยันแบรนด์
- คลิกเชื่อมต่อแอป
ในหน้าที่ปรากฏขึ้น ให้ทำตามวิธีการเพื่อยืนยันเว็บ ใน Play Console เลือกแอป Play ที่มี สินค้าดิจิทัล แล้วป้อน URL โดเมนเว็บให้ตรงกับที่แสดงใน การยืนยันแบรนด์
Google จะส่งอีเมลยืนยันไปยังเจ้าของที่ได้รับการยืนยันของ โดเมน เมื่อได้รับการอนุมัติการยืนยันแล้ว แอป Play ของคุณควร จะปรากฏในส่วนการยืนยันแบรนด์
เปิดใช้เข้าถึงการซื้อใน Play
สร้างขั้นตอนการซื้อ
เมื่อคุณเตรียมโปรเจ็กต์ Actions และสินค้าคงคลังสินค้าดิจิทัลแล้ว ให้สร้างดิจิทัล ขั้นตอนการซื้อสินค้าในเว็บฮุคของการดำเนินการตามคำสั่งซื้อการสนทนา
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
ซึ่งตรวจสอบว่าผู้ใช้ได้รับการยืนยันแล้ว
พวกเขากำลังทำธุรกรรมในพื้นที่ที่ได้รับอนุญาต (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
คอนโซล) ที่คุณต้องการพร้อมจำหน่ายใน 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': ['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. สร้างคำสั่งซื้อ
ให้แสดงรายการสินค้าดิจิทัลเพื่อเริ่มการซื้อแบบดิจิทัลของผู้ใช้ ที่มีจำหน่าย คุณสามารถใช้ ประเภทการตอบกลับที่สมบูรณ์เพื่อแสดง สต็อกและแจ้งให้ผู้ใช้เลือก
โค้ด 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": ""
};
ใน Actions Builder คุณใช้ตัวแก้ไข JSON เพื่อกำหนดค่าช่องโฆษณาแทนได้
ด้วยออบเจ็กต์คำสั่งซื้อด้านบน การติดตั้งใช้งานทั้ง 2 แบบใช้รูปแบบเดียวกัน
CompletePurchaseValueSpec
ซึ่งดูได้ใน
ข้อมูลอ้างอิงเพย์โหลดของเว็บฮุค 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.
ในส่วนการเปลี่ยน ให้เลือกสิ้นสุดการสนทนาเพื่อสิ้นสุดการสนทนา
ทำขั้นตอนข้างต้นซ้ำกับผลการค้นหาแต่ละประเภทที่ต้องการรองรับ
6. ทำให้การซื้อซ้ำได้
หลังจากทำธุรกรรมสำเร็จแล้ว ให้ส่งคำขอ POST ไปยังการซื้อแบบดิจิทัล
API สำหรับใช้ไอเทม ซึ่งช่วยให้ผู้ใช้ซื้อได้อีกครั้ง ส่ง
คำขอไปยัง https://actions.googleapis.com/v3/conversations/{sessionId}/entitlement:consume
พบปลายทางที่มีรหัสของเซสชันใน session.id
คำขอ POST ของคุณต้องมีออบเจ็กต์โทเค็นการซื้อที่เชื่อมโยงกับ
การซื้อของผู้ใช้ ซึ่งพบใน JSON คำขอของผู้ใช้ภายใต้
packageEntitlements.entitlements.inAppDetails.inAppPurchaseData.purchaseToken
โค้ดต่อไปนี้จะส่งคำขอ consume
ไปยัง API การซื้อแบบดิจิทัล และ
รายงานว่าคำขอนั้นสำเร็จหรือไม่:
request.post(`https://actions.googleapis.com/v3/conversations/${conv.session.id}/entitlement:consume`, {
'auth': {
'bearer': tokens.access_token,
},
'json': true,
'body': {
// This purchase token is in both the purchase event and the user's entitlements
// in their request JSON
"purchaseToken": entitlement.purchaseToken
},
}, (err, httpResponse, body) => {
if (err) {
throw new Error(`API request error: ${err}`);
}
console.log(`${httpResponse.statusCode}: ${httpResponse.statusMessage}`);
console.log(JSON.stringify(httpResponse));
console.log(JSON.stringify(body));
resolve(body);
});
// Make sure the consume request was successful. In production, don't notify the user; handle failures on the back end
return consumePromise.then(body => {
const consumed = Object.keys(body).length === 0;
if (consumed) {
conv.add(`You successfully consumed ${id}`);
} else {
conv.add(`Failed to consume: ${id}`);
}
});
แสดงการซื้อของผู้ใช้
เมื่อผู้ใช้ค้นหาการดำเนินการของคุณ ออบเจ็กต์ 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"
]
}
}
ทดสอบโปรเจ็กต์ของคุณ
เมื่อทดสอบโปรเจ็กต์ คุณจะเปิดใช้โหมดแซนด์บ็อกซ์ในคอนโซล Actions ได้ เพื่อทดสอบการดำเนินการของคุณโดยไม่เรียกเก็บเงินจากวิธีการชำระเงิน หากต้องการเปิดใช้งานโหมดแซนด์บ็อกซ์ ให้ทำตามขั้นตอนต่อไปนี้
- ในคอนโซล Actions ให้คลิกทดสอบในการนำทาง
- คลิกการตั้งค่า
- เปิดใช้ตัวเลือกแซนด์บ็อกซ์การพัฒนา