1. บทนำ
ในโค้ดแล็บนี้ คุณจะมุ่งเน้นที่การสร้างไอเทมแบบเรียกเก็บเงินครั้งเดียว กำหนดตัวเลือกการซื้อ ตั้งราคาเฉพาะภูมิภาค และทดสอบขั้นตอนการซื้อไอเทมแบบเรียกเก็บเงินครั้งเดียว
ผู้ชม
โค้ดแล็บนี้มีไว้สำหรับนักพัฒนาแอป Android ที่ต้องการใช้ Play Console เพื่อจัดการแคตตาล็อกไอเทมแบบเรียกเก็บเงินครั้งเดียว
สิ่งที่คุณจะได้เรียนรู้...
- โมเดลออบเจ็กต์ของผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
- วิธีไปยังส่วนต่างๆ และใช้ Google Play Console เพื่อจัดการแคตตาล็อกผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
- วิธีแปลรายละเอียดไอเทมแบบเรียกเก็บเงินครั้งเดียวเป็นภาษาต่างๆ โดยไม่มีค่าใช้จ่าย
- วิธีกำหนดค่าความพร้อมจำหน่ายสินค้าและการกำหนดราคาระดับภูมิภาคสำหรับผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
- วิธีใช้ API ของ Play Billing Library เพื่อค้นหารายละเอียดไอเทมแบบเรียกเก็บเงินครั้งเดียว
- วิธีทดสอบไอเทมแบบเรียกเก็บเงินครั้งเดียวโดยใช้ Play Billing Lab
สิ่งที่คุณต้องมี...
- สิทธิ์เข้าถึง Google Play Console ด้วยบัญชีนักพัฒนาแอป หากยังไม่มีบัญชีนักพัฒนาแอป คุณจะต้องสร้างบัญชี
- แอปตัวอย่างสำหรับโค้ดแล็บนี้ ซึ่งคุณดาวน์โหลดจาก GitHub ได้
- Android Studio
2. การพรีเมียร์ไอเทมแบบเรียกเก็บเงินครั้งเดียว
โมเดลออบเจ็กต์ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวช่วยให้คุณมีวิธีขายผลิตภัณฑ์ที่ยืดหยุ่นมากขึ้นและลดความซับซ้อนในการจัดการผลิตภัณฑ์ โมเดลออบเจ็กต์จะแยกสิ่งที่ขายออกจากวิธีขาย ทำให้การให้สิทธิ์เดียวกันมีราคาได้หลายระดับ และมีวิธีต่างๆ ในการทำการตลาดต่อผู้ใช้ โมเดลออบเจ็กต์มีลำดับชั้น 3 ระดับ ได้แก่
- ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว - ออบเจ็กต์ผลิตภัณฑ์จะกำหนดสิ่งที่ผู้ใช้ซื้อ
- ตัวเลือกการซื้อ - ตัวเลือกการซื้อจะกำหนดวิธีให้สิทธิ์แก่ผู้ใช้ ราคา และสถานที่ (ภูมิภาค) ที่ผลิตภัณฑ์จะพร้อมให้บริการ ผลิตภัณฑ์เดียวมีตัวเลือกการซื้อได้หลายรายการ ซึ่งอาจแสดงราคาที่แตกต่างกันในภูมิภาคต่างๆ
- ข้อเสนอ - ข้อเสนออาจส่งผลต่อราคาของตัวเลือกการซื้อที่ลิงก์อยู่ และใช้เพื่อจำลองส่วนลดหรือการสั่งจองล่วงหน้าได้ ตัวเลือกการซื้อเดียวสามารถมีได้หลายข้อเสนอ
แผนภาพต่อไปนี้แสดงโมเดลออบเจ็กต์ของไอเทมแบบเรียกเก็บเงินครั้งเดียว
รูปที่ 1: โมเดลออบเจ็กต์แบบครั้งเดียว
ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมของไอเทมแบบเรียกเก็บเงินครั้งเดียว
3. สร้างแอปตัวอย่าง
Codelab นี้ใช้แอป Android ตัวอย่างเพื่อแสดงวิธีจัดการผลิตภัณฑ์แบบซื้อครั้งเดียว แอปตัวอย่างได้รับการออกแบบให้เป็นแอป Android ที่ใช้งานได้อย่างเต็มรูปแบบซึ่งมีซอร์สโค้ดที่สมบูรณ์ซึ่งแสดงลักษณะต่อไปนี้
- การผสานรวมแอปกับ PBL
- การดึงข้อมูลไอเทมแบบเรียกเก็บเงินครั้งเดียวและตัวเลือกการซื้อที่เกี่ยวข้อง
- เรียกใช้ขั้นตอนการซื้อด้วยราคาในภูมิภาค
วิดีโอเดโมต่อไปนี้แสดงลักษณะและการทำงานของแอปตัวอย่างหลังจากที่ติดตั้งใช้งานและเรียกใช้
หากคุ้นเคยกับไอเทมแบบเรียกเก็บเงินครั้งเดียวและ Google Play Billing Library (PBL) อยู่แล้ว คุณสามารถดาวน์โหลดแอปตัวอย่างและทดลองใช้ได้
สิ่งที่ต้องดำเนินการก่อน
ก่อนที่จะสร้างและติดตั้งใช้งานแอปตัวอย่าง ให้ทำดังนี้
- สร้างบัญชีนักพัฒนาแอป Google Play Console หากมีบัญชีนักพัฒนาแอปอยู่แล้ว ให้ข้ามขั้นตอนนี้
- สร้างแอปใหม่ใน Play Console เมื่อสร้างแอป คุณจะระบุชื่อแอปใดก็ได้สำหรับแอปตัวอย่าง
- ติดตั้ง Android Studio
สร้าง
วัตถุประสงค์ของขั้นตอนการสร้างนี้คือการสร้างไฟล์ Android App Bundle ที่ลงนามแล้วของแอปตัวอย่าง
หากต้องการสร้าง Android App Bundle ให้ทำตามขั้นตอนต่อไปนี้
- ดาวน์โหลดแอปตัวอย่างจาก GitHub
- สร้างแอปตัวอย่าง ก่อนสร้าง ให้เปลี่ยนชื่อแพ็กเกจของแอปตัวอย่าง แล้วจึงสร้าง หากคุณมีแพ็กเกจของแอปอื่นๆ ใน Play Console โปรดตรวจสอบว่าชื่อแพ็กเกจที่คุณระบุสำหรับแอปตัวอย่างนั้นไม่ซ้ำกัน
หมายเหตุ: การสร้างแอปตัวอย่างจะสร้างเฉพาะไฟล์ APK ที่คุณใช้สำหรับการทดสอบในเครื่องได้ อย่างไรก็ตาม การเรียกใช้แอปจะไม่ดึงข้อมูลผลิตภัณฑ์และราคาเนื่องจากยังไม่ได้กำหนดค่าผลิตภัณฑ์ใน Play Console - สร้าง Android App Bundle ที่ลงนามแล้ว
ขั้นตอนถัดไปคือการอัปโหลด Android App Bundle ไปยัง Google Play Console
4. สร้างผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวใน Play Console
หากต้องการสร้างผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวใน Google Play Console คุณต้องมีแอปใน Play Console สร้างแอปใน Play Console แล้วอัปโหลด App Bundle ที่ลงนามแล้วซึ่งสร้างไว้ก่อนหน้านี้
สร้างแอป
วิธีสร้างแอป
- เข้าสู่ระบบ Google Play Console โดยใช้บัญชีนักพัฒนาแอป
- คลิกสร้างแอป ซึ่งจะเปิดหน้าสร้างแอป
- ป้อนชื่อแอป เลือกภาษาเริ่มต้น และรายละเอียดอื่นๆ ที่เกี่ยวข้องกับแอป
- คลิกสร้างแอป ซึ่งจะเป็นการสร้างแอปใน Google Play Console
ตอนนี้คุณอัปโหลด App Bundle ที่ลงนามแล้วของแอปตัวอย่างได้แล้ว
อัปโหลด App Bundle ที่ลงนามแล้ว
- อัปโหลด App Bundle ที่ลงนามแล้วไปยังแทร็กทดสอบภายในของ Google Play Console หลังจากอัปโหลดแล้วเท่านั้น คุณจึงจะกำหนดค่าฟีเจอร์ที่เกี่ยวข้องกับการสร้างรายได้ใน Play Console ได้
- คลิกทดสอบและเผยแพร่ > การทดสอบ > รุ่นภายใน > สร้างรุ่นใหม่
- ป้อนชื่อรุ่นและอัปโหลดไฟล์ APK ที่ลงนามแล้ว
- คลิกถัดไป แล้วคลิกบันทึกและเผยแพร่
ตอนนี้คุณสร้างผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวได้แล้ว
สร้างไอเทมแบบเรียกเก็บเงินครั้งเดียว
วิธีสร้างผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
- ใน Google Play Console ให้ไปที่สร้างรายได้ด้วย Play > ผลิตภัณฑ์ > ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว จากเมนูการนำทางด้านซ้าย
- คลิกสร้างผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
- ป้อนรายละเอียดผลิตภัณฑ์ต่อไปนี้
- รหัสสินค้า: ป้อนรหัสที่ไม่ซ้ำกัน เช่น
trending_movie_1 - (ไม่บังคับ) แท็ก: เพิ่มแท็กที่เกี่ยวข้อง
- ชื่อ: ป้อนชื่อผลิตภัณฑ์ เช่น
Product Movie - คำอธิบาย: ป้อนคำอธิบายผลิตภัณฑ์ เช่น
Product Description
โดยค่าเริ่มต้น ชื่อและคำอธิบายผลิตภัณฑ์จะเป็นภาษาอังกฤษ (สหรัฐอเมริกา) - en-US นอกจากนี้ คุณยังป้อนชื่อและคำอธิบายในภาษาอื่นๆ ด้วยตนเองได้ด้วย หากต้องการป้อนรายละเอียด ให้คลิกจัดการคำแปล เลือกภาษาที่ต้องการป้อนข้อความที่แปล แล้วคลิกใช้ รูปภาพต่อไปนี้แสดงตัวเลือกจัดการคำแปล
รูปที่ 2: จัดการคำแปล
ภาษาที่คุณเลือกจะปรากฏในเมนูแบบเลื่อนลงของภาษา เลือกแต่ละภาษา แล้วป้อนชื่อและคำอธิบายที่เกี่ยวข้องในภาษาที่เลือก นอกจากนี้ คุณยังแปลชื่อและคำอธิบายผลิตภัณฑ์โดยอัตโนมัติได้โดยไม่มีค่าใช้จ่าย ดูข้อมูลเพิ่มเติมได้ที่ส่วนแปลไอเทมแบบเรียกเก็บเงินครั้งเดียวใน Codelab นี้
หมายเหตุ: คุณสามารถข้ามการกำหนดค่าช่องไอคอนและส่วนภาษี การปฏิบัติตามข้อกำหนด และโปรแกรมเพื่อวัตถุประสงค์ของ Codelab นี้ - รหัสสินค้า: ป้อนรหัสที่ไม่ซ้ำกัน เช่น
- คลิกถัดไป
- เพิ่มตัวเลือกการซื้อและกำหนดค่าความพร้อมจำหน่ายสินค้าระดับภูมิภาค ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวต้องมีตัวเลือกการซื้ออย่างน้อย 1 รายการ ซึ่งจะกำหนดวิธีการให้สิทธิ์ ราคา และความพร้อมจำหน่ายสินค้าระดับภูมิภาค สำหรับ Codelab นี้ เราจะเพิ่มตัวเลือกซื้อมาตรฐานสำหรับผลิตภัณฑ์
ในส่วนตัวเลือกการซื้อ ให้ป้อนรายละเอียดต่อไปนี้- รหัสตัวเลือกการซื้อ: ป้อนรหัสที่ไม่ซ้ำกัน เช่น
buy-movie - ประเภทการซื้อ: เลือกซื้อ
- (ไม่บังคับ) แท็ก: เพิ่มแท็กที่เฉพาะเจาะจงสำหรับตัวเลือกการซื้อนี้
- (ไม่บังคับ) คลิกตัวเลือกขั้นสูงเพื่อกำหนดค่าตัวเลือกขั้นสูง คุณข้ามการกำหนดค่าตัวเลือกขั้นสูงได้เพื่อวัตถุประสงค์ของโค้ดแล็บนี้
- รหัสตัวเลือกการซื้อ: ป้อนรหัสที่ไม่ซ้ำกัน เช่น
- จากนั้นคุณต้องกำหนดค่าความพร้อมจำหน่ายสินค้าและราคาของตัวเลือกการซื้อในระดับภูมิภาค ในความพร้อมจำหน่ายสินค้าระดับภูมิภาค คุณจะระบุภูมิภาคที่ผลิตภัณฑ์พร้อมจำหน่าย รวมถึงภูมิภาคที่ยังไม่ได้เผยแพร่แอป โดยค่าเริ่มต้น ตัวเลือกการซื้อจะพร้อมใช้งานในทุกภูมิภาค
ในส่วนความพร้อมให้บริการและราคา ให้คลิกแก้ไขความพร้อมให้บริการและการเข้าถึง > ตั้งค่าเป็นไม่พร้อมให้บริการ โปรดทราบว่าโดยค่าเริ่มต้น ระบบจะตั้งค่าภูมิภาคทั้งหมดเป็นพร้อมใช้งาน- เลือกทุกประเทศยกเว้น
France,SpainและUnited Statesแล้วคลิกตั้งค่าเป็นไม่พร้อมให้บริการ - จากเมนูแบบเลื่อนลงทุกภูมิภาค ให้เลือกประเทศและภูมิภาคที่พร้อมให้บริการ ซึ่งจะแสดงเฉพาะประเทศที่คุณเลือกในขั้นตอนก่อนหน้า
- คลิกไอคอนแก้ไขในคอลัมน์ราคาสำหรับแต่ละประเทศที่พร้อมให้บริการ ซึ่งจะแสดงกล่องโต้ตอบเพื่อแก้ไขราคา ป้อนและบันทึกราคาต่อไปนี้
- สำหรับ
Franceให้ป้อน 10 EUR - สำหรับ
Spainให้ป้อน 8 EUR - สำหรับ
United Statesให้ป้อน 130 THB
- สำหรับ
- เลือกทุกประเทศยกเว้น
- คลิกเปิดใช้งาน ซึ่งจะทำให้ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวพร้อมใช้งานด้วยตัวเลือกการซื้อซื้อ
หมายเหตุ: สกุลเงินของราคาในภูมิภาคจะปรากฏตามการตั้งค่าประเทศ Play ของผู้ใช้ ตัวอย่างเช่น หากประเทศ Play ของผู้ใช้ตั้งค่าเป็นฝรั่งเศส ราคาไอเทมแบบเรียกเก็บเงินครั้งเดียวจะแสดงเป็นสกุลเงินยูโร
วิดีโอการสร้างผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
วิดีโอต่อไปนี้แสดงขั้นตอนการสร้างไอเทมแบบเรียกเก็บเงินครั้งเดียวที่อธิบายไว้ก่อนหน้านี้
เพิ่มตัวเลือกการซื้อแบบเช่า
ตอนนี้ให้เพิ่มตัวเลือกการซื้อแบบเช่าลงในผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวที่สร้างไว้ก่อนหน้านี้
- ใน Google Play Console ให้ไปที่สร้างรายได้ด้วย Play > ผลิตภัณฑ์ > ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว จากเมนูการนำทางด้านซ้าย
- คลิกลูกศรขวาสำหรับผลิตภัณฑ์ที่มี
trending_movie_1รหัสผลิตภัณฑ์ที่คุณสร้างไว้ในขั้นตอนก่อนหน้า - คลิกเพิ่มตัวเลือกการซื้อ
- ในส่วนตัวเลือกการซื้อ ให้ป้อนรายละเอียดต่อไปนี้
- รหัสตัวเลือกการซื้อ: ป้อน
rent-movie - ประเภทการซื้อ: เลือกเช่า
- ระยะเวลาการเช่า: เลือก 48 ชั่วโมง
- ระยะเวลาเริ่มต้นการเช่า: เลือก 24 ชั่วโมง
- (ไม่บังคับ) แท็ก: เพิ่มแท็กที่เฉพาะเจาะจงสำหรับตัวเลือกการซื้อนี้
- (ไม่บังคับ) คลิกตัวเลือกขั้นสูงเพื่อกำหนดค่าตัวเลือกขั้นสูง คุณข้ามการกำหนดค่าตัวเลือกขั้นสูงได้เพื่อวัตถุประสงค์ของโค้ดแล็บนี้
- รหัสตัวเลือกการซื้อ: ป้อน
- จากนั้นให้กำหนดค่าความพร้อมใช้งานระดับภูมิภาคสำหรับตัวเลือกการซื้อแบบเช่าเช่นเดียวกับตัวเลือกการซื้อแบบซื้อ ดูขั้นตอนที่ 6 และ 7 ในส่วนก่อนหน้า เมื่อกำหนดราคาระดับภูมิภาค ให้กำหนดราคาที่แตกต่างกันสำหรับการเช่า เช่น
France- 5 EURSpain- 4 EURUnited States- 7 USD
5. แปลรายละเอียดไอเทมแบบเรียกเก็บเงินครั้งเดียว
คุณแปลชื่อและคำอธิบายผลิตภัณฑ์ได้โดยไม่มีค่าใช้จ่ายเพิ่มเติมโดยใช้ฟีเจอร์การแปลด้วยเครื่องที่มีอยู่ใน Google Play Console
หากต้องการแปลชื่อและคำอธิบาย ให้ทำดังนี้
- ใน Google Play Console ให้ไปที่เพิ่มจำนวนผู้ใช้ > การแปล > ผลิตภัณฑ์ใน Store และในแอป จากเมนูการนำทางด้านซ้าย
- คลิกสร้างคำสั่งซื้อ
- เลือกตัวเลือกการแปลด้วยเครื่องแบบไม่มีค่าใช้จ่าย แล้วคลิกถัดไป
- จากภาษาแปลเป็น ให้เลือกฝรั่งเศส - fr-FR และสเปน - es-ES แล้วคลิกถัดไป
- เลือกไอเทมแบบเรียกเก็บเงินครั้งเดียวและการสมัครใช้บริการ แล้วคลิกแปลและดูคำแปล ซึ่งจะแสดงแบนเนอร์ข้อจำกัดความรับผิด ยอมรับข้อจำกัดความรับผิด
- ตอนนี้คุณจะเห็นรายการภาษาที่แปลแล้ว คลิกตรวจสอบและนำไปใช้สำหรับภาษา ตรวจสอบข้อความ แล้วคลิกใช้การแปลทั้งหมด ทำขั้นตอนนี้ซ้ำสำหรับทุกภาษาที่คุณเลือกแปล
หลังจากแปลแล้ว คุณจะแก้ไขข้อความที่แปลแล้วใน Play Console ได้ วิธีแก้ไขข้อความที่แปล
- เปิดหน้าผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว > [ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว] > แก้ไขผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว > แก้ไขรายละเอียดผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
- เลือกภาษาที่ต้องการจากเมนูแบบเลื่อนลงของภาษา ซึ่งจะแสดงข้อความเป็นภาษาที่เลือก รูปภาพต่อไปนี้แสดงการเลือกภาษาเพื่อแก้ไขข้อความที่แปล
รูปที่ 3: แก้ไขข้อความที่แปล - แก้ไขข้อความตามที่ต้องการ แล้วคลิกบันทึกการเปลี่ยนแปลง
ผู้ใช้จะเห็นข้อความที่แปลแล้วตามค่ากำหนดภาษาของโทรศัพท์ เช่น หากตั้งค่าภาษาของโทรศัพท์ผู้ใช้เป็นฝรั่งเศส ระบบจะแสดงชื่อและคำอธิบายผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวเป็นภาษาฝรั่งเศส รูปภาพตัวอย่างต่อไปนี้แสดงวิธีและตำแหน่งที่ข้อความที่แปลจะปรากฏในภาษาต่างๆ
รูปที่ 4: ข้อความที่แปลแล้วในแอป
วิดีโอการกำหนดค่าการแปล
วิดีโอต่อไปนี้แสดงขั้นตอนการกำหนดค่าการแปลที่อธิบายไว้ก่อนหน้านี้
6. ผสานรวมกับ PBL
หากต้องการผสานรวมแอปกับ Play Billing Library (PBL) ให้ทำตามขั้นตอนต่อไปนี้
- เพิ่มทรัพยากร Dependency ของ Play Billing Library ลงในแอปตัวอย่าง
dependencies { val billing_version = "8.0.0" implementation("com.android.billingclient:billing-ktx:$billing_version") } - เริ่มต้น BillingClient BillingClient คือ SDK ของไคลเอ็นต์ที่อยู่ในแอปและสื่อสารกับ Play Billing Library ข้อมูลโค้ดต่อไปนี้แสดงวิธีเริ่มต้นไคลเอ็นต์การเรียกเก็บเงิน
private BillingClient createBillingClient() { return BillingClient.newBuilder(activity) .enablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()) // For one-time products, add a listener to process and acknowledge the purchases. This will notify // Google the purchase was processed. // For client-only apps, use billingClient.acknowledgePurchase(). // If you have a secure backend, you must acknowledge purchases on your server using the // server-side API. // See https://developer.android.com/google/play/billing/security#acknowledge // In this sample snippet purchases aren't processed. You must // implement your business logic to process and acknowledge the purchases. .setListener((billingResult, purchases) -> {}) .enableAutoServiceReconnection() .build(); } - เชื่อมต่อกับ Google Play ข้อมูลโค้ดต่อไปนี้แสดงวิธีเชื่อมต่อกับ Google Play
/** * Starts the billing connection with Google Play. This method should be called exactly once * before any other methods in this class. * * @param productList The list of products to query for after the connection is established. */ public void startBillingConnection(List<Product> productList) { billingClient.startConnection( new BillingClientStateListener() { @Override public void onBillingSetupFinished(BillingResult billingResult) { if (billingResult.getResponseCode() == BillingResponseCode.OK) { Log.d(TAG, "Billing Client Connection Successful"); queryProductDetails(productList); } else { Log.e(TAG, "Billing Client Connection Failed: " + billingResult.getDebugMessage()); listener.onBillingSetupFailed(billingResult); // Propagate the error to the listener to show a message to the user. } } @Override public void onBillingServiceDisconnected() { Log.e(TAG, "Billing Client Connection Lost"); listener.onBillingError("Billing Connection Lost"); } }); } - ดึงข้อมูลรายละเอียดสินค้าแบบเรียกเก็บเงินครั้งเดียว หลังจากผสานรวมแอปกับ PBL แล้ว คุณต้องดึงข้อมูลรายละเอียดสินค้าแบบเรียกเก็บเงินครั้งเดียวลงในแอป ข้อมูลโค้ดต่อไปนี้แสดงวิธีดึงข้อมูลรายละเอียดสินค้าแบบเรียกเก็บเงินครั้งเดียวในแอป
การดึงข้อมูลผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว (private void queryProductDetails(List<Product> productList) { QueryProductDetailsParams queryProductDetailsParams = QueryProductDetailsParams.newBuilder().setProductList(productList).build(); billingClient.queryProductDetailsAsync( queryProductDetailsParams, new ProductDetailsResponseListener() { @Override public void onProductDetailsResponse( BillingResult billingResult, QueryProductDetailsResult productDetailsResponse) { if (billingResult.getResponseCode() == BillingResponseCode.OK) { List<ProductDetails> productDetailsList = productDetailsResponse.getProductDetailsList(); listener.onProductDetailsResponse(productDetailsList); } else { Log.e(TAG, "QueryProductDetailsAsync Failed: " + billingResult.getDebugMessage()); listener.onBillingError("Query Products Failed: " + billingResult.getResponseCode()); } } }); }trending_movie_1ในตัวอย่างนี้) ในProductDetailsจะให้การตอบกลับที่คล้ายกับต่อไปนี้ โปรดทราบว่าตัวเลือกการซื้อแบบซื้อและเช่าพร้อมให้บริการใน{ "productId": "trending_movie_1", "type": "inapp", "title": "Purrfect Mayhem: The Rewind Protocol (Movies All Day | Play Samples)", "name": "Purrfect Mayhem: The Rewind Protocol", "description": "Dr. Arid Thorne and a smart tiger named Yolo find a mysterious tape. It's a \"Rewind Protocol\" to fix time. A shadowy group, the Clockinator, hunts them to seize the tape's power.", "skuDetailsToken": "<---skuDetailsToken--->", "oneTimePurchaseOfferDetails": {}, "oneTimePurchaseOfferDetailsList": [ { "priceAmountMicros": 13000000, "priceCurrencyCode": "USD", "formattedPrice": "$13.00", "offerIdToken": "<---buy offerIdToken --->", "purchaseOptionId": "buy-option", "offerTags": [ "adventure", "mystery" ] }, { "priceAmountMicros": 7000000, "priceCurrencyCode": "USD", "formattedPrice": "$7.00", "offerIdToken": "<---rent offerIdToken--->", "purchaseOptionId": "rent-option", "offerTags": [ "adventure", "mystery" ], "rentalDetails": { "rentalPeriod": "P30D", "rentalExpirationPeriod": "PT24H" } } ] }oneTimePurchaseOfferDetailsListรายการนี้มีตัวเลือกการซื้อ 2 รายการ (buy-option และ rent-option) ที่กำหนดค่าไว้ใน Play Console คุณระบุตัวเลือกการซื้อแต่ละรายการได้โดยไม่ซ้ำกันด้วย offerIdToken - ดึงข้อมูลโทเค็นข้อเสนอสำหรับข้อเสนอเช่าและซื้อ คุณต้องมีโทเค็นข้อเสนอเพื่อเปิดตัวขั้นตอนการเรียกเก็บเงินในขั้นตอนที่ 6
@Override public void onProductDetailsResponse(List<ProductDetails> productDetailsList) { if (productDetailsList != null && !productDetailsList.isEmpty()) { // Iterate over all details of the queried product in step 4. for (ProductDetails productDetails : productDetailsList) { // Get the list of all the offers associated with the product. List<ProductDetails.OneTimePurchaseOfferDetails> offerDetailsList = productDetails.getOneTimePurchaseOfferDetailsList(); // Iterate over the offer details for (ProductDetails.OneTimePurchaseOfferDetails offerDetails : offerDetailsList) { // For a Rent purchase option, the // offerDetails.getRentalDetails() method returns // the rent information. If this information is present, // the offer corresponds to a Rent purchsae option. if (offerDetails.getRentalDetails() != null) { rentFormattedPrice = offerDetails.getFormattedPrice(); // Get the offerIdToken for the Rent purchase option rentOfferToken = offerDetails.getOfferToken(); rentMovieTags = offerDetails.getOfferTags(); } // If the offerDetails.getRentalDetails() returns // null, the offer corresponds to a Buy purchsae option. else { buyFormattedPrice = offerDetails.getFormattedPrice(); // Get the offerIdToken for the Buy purchase option buyOfferToken = offerDetails.getOfferToken(); buyMovieTags = offerDetails.getOfferTags(); } } updateUIButtons(); return; } } else { Log.e(TAG, "No product details found for " + productId); } } - เปิดตัวขั้นตอนการเรียกเก็บเงิน
/** * Launches the billing flow for the product with the given offer token. * * @param activity The activity instance from which the billing flow will be launched. * @param productDetails The product details of the product to purchase. * @param offerToken The offer token of the product to purchase. * @return The result of the billing flow. */ public void launchPurchase(Activity activity, ProductDetails productDetails, String offerToken) { ImmutableList<BillingFlowParams.ProductDetailsParams> productDetailsParamsList = ImmutableList.of( BillingFlowParams.ProductDetailsParams.newBuilder() .setProductDetails(productDetails) .setOfferToken(offerToken) .build()); BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setProductDetailsParamsList(productDetailsParamsList) .build(); billingClient.launchBillingFlow(activity, billingFlowParams); }
เคล็ดลับ: คุณยังตั้งค่าการแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอป (RTDN) เพื่อใช้กลยุทธ์แคมเปญดึงดูดลูกค้าให้กลับมาและกลยุทธ์การจัดการวงจรการซื้ออื่นๆ ได้ด้วย หากต้องการทำความเข้าใจวิธีตั้งค่า RTDN และจัดการการแจ้งเตือนด้วยการติดตามและการให้สิทธิ์ที่ถูกต้อง เราขอแนะนำให้คุณทำตาม Codelab เพิ่มประสิทธิภาพการผสานรวมการเรียกเก็บเงินใน Play
7. ทดสอบตัวเลือกการซื้อ
ก่อนที่จะทำให้ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวพร้อมใช้งานในแอปที่ใช้งานจริง คุณสามารถทดสอบการผสานรวม PBL โดยใช้ผู้ทดสอบที่ได้รับอนุญาตและ Play Billing Lab
คุณจะได้เรียนรู้วิธีทดสอบการแปลราคาและความพร้อมจำหน่ายสินค้าที่แอปพร้อมให้บริการในบางภูมิภาคเท่านั้น โดยมีราคาแตกต่างกันในแต่ละภูมิภาค
สิ่งที่ต้องดำเนินการก่อน
- เพิ่มผู้ทดสอบใบอนุญาตใน Google Play Console แล้วเปิดใช้ผู้ทดสอบใบอนุญาตสำหรับการทดสอบภายใน
- ดาวน์โหลดและติดตั้งแอป Play Billing Lab ในโทรศัพท์หรือโปรแกรมจำลอง
- เรียกใช้แอปตัวอย่างที่คุณสร้างไว้ก่อนหน้านี้ในโทรศัพท์หรือโปรแกรมจำลอง
ทดสอบการกำหนดราคาระดับภูมิภาคสำหรับตัวเลือกการซื้อ
หากต้องการทดสอบการกำหนดราคาระดับภูมิภาคสำหรับตัวเลือกการซื้อ ให้ทำดังนี้
- เปิดแอป Play Billing Lab แล้วเข้าสู่ระบบในฐานะผู้ทดสอบใบอนุญาต
- ในการตั้งค่าการกำหนดค่า ให้คลิกแก้ไข เลือกประเทศ
Franceแล้วคลิกใช้ ในที่นี้เราเลือกประเทศใน Play ซึ่งจะเป็นตัวกำหนดสกุลเงินที่จะแสดงในแอป - ปิดและเปิดแอปตัวอย่างอีกครั้ง ตอนนี้แอปควรแสดงสกุลเงินสำหรับการซื้อและเช่าสำหรับ
Franceเป็นยูโร
หากต้องการทดสอบในประเทศอื่น ให้เลือก Spain ในขั้นตอนที่ 2 แล้วทำขั้นตอนที่ 3
วิดีโอการทดสอบ Play Billing Lab
วิดีโอต่อไปนี้แสดงขั้นตอนการทดสอบราคาระดับภูมิภาคโดยใช้แอปตัวอย่าง
8. ขั้นตอนถัดไป
- ดูวิธีเพิ่มประสิทธิภาพการผสานรวมการเรียกเก็บเงินใน Play
- ดูวิธีวิเคราะห์การเลิกซื้อผลิตภัณฑ์
- อย่าลืมทำตามแนวทางปฏิบัติแนะนำสำหรับการยืนยันและประมวลผลการซื้อในแบ็กเอนด์ที่ปลอดภัยเมื่อผู้ใช้เริ่มซื้อผลิตภัณฑ์เหล่านี้
เอกสารอ้างอิง
9. ยินดีด้วย
ยินดีด้วย คุณได้ไปยังส่วนต่างๆ ของ Google Play Console เพื่อสร้างผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวใหม่ กำหนดค่าตัวเลือกการซื้อ และทดสอบขั้นตอนการซื้อโดยใช้ Play Billing Lab เรียบร้อยแล้ว ตอนนี้คุณเข้าใจแคตตาล็อกผลิตภัณฑ์ที่ยืดหยุ่นของ Google Play สำหรับการซื้อแบบครั้งเดียวมากขึ้นแล้ว
แบบสำรวจ
ความคิดเห็นของคุณเกี่ยวกับ Codelab นี้มีค่าอย่างยิ่ง โปรดสละเวลาสักครู่เพื่อตอบแบบสำรวจของเรา