เข้าถึงตลาดใหม่ๆ ด้วยการกำหนดราคาสินค้าระดับภูมิภาค

1. บทนำ

ในโค้ดแล็บนี้ คุณจะมุ่งเน้นที่การสร้างไอเทมแบบเรียกเก็บเงินครั้งเดียว กำหนดตัวเลือกการซื้อ ตั้งราคาเฉพาะภูมิภาค และทดสอบขั้นตอนการซื้อไอเทมแบบเรียกเก็บเงินครั้งเดียว

ผู้ชม

โค้ดแล็บนี้มีไว้สำหรับนักพัฒนาแอป Android ที่ต้องการใช้ Play Console เพื่อจัดการแคตตาล็อกไอเทมแบบเรียกเก็บเงินครั้งเดียว

สิ่งที่คุณจะได้เรียนรู้...

  • โมเดลออบเจ็กต์ของผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
  • วิธีไปยังส่วนต่างๆ และใช้ Google Play Console เพื่อจัดการแคตตาล็อกผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
  • วิธีแปลรายละเอียดไอเทมแบบเรียกเก็บเงินครั้งเดียวเป็นภาษาต่างๆ โดยไม่มีค่าใช้จ่าย
  • วิธีกำหนดค่าความพร้อมจำหน่ายสินค้าและการกำหนดราคาระดับภูมิภาคสำหรับผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
  • วิธีใช้ API ของ Play Billing Library เพื่อค้นหารายละเอียดไอเทมแบบเรียกเก็บเงินครั้งเดียว
  • วิธีทดสอบไอเทมแบบเรียกเก็บเงินครั้งเดียวโดยใช้ Play Billing Lab

สิ่งที่คุณต้องมี...

2. การพรีเมียร์ไอเทมแบบเรียกเก็บเงินครั้งเดียว

โมเดลออบเจ็กต์ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวช่วยให้คุณมีวิธีขายผลิตภัณฑ์ที่ยืดหยุ่นมากขึ้นและลดความซับซ้อนในการจัดการผลิตภัณฑ์ โมเดลออบเจ็กต์จะแยกสิ่งที่ขายออกจากวิธีขาย ทำให้การให้สิทธิ์เดียวกันมีราคาได้หลายระดับ และมีวิธีต่างๆ ในการทำการตลาดต่อผู้ใช้ โมเดลออบเจ็กต์มีลำดับชั้น 3 ระดับ ได้แก่

  • ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว - ออบเจ็กต์ผลิตภัณฑ์จะกำหนดสิ่งที่ผู้ใช้ซื้อ
  • ตัวเลือกการซื้อ - ตัวเลือกการซื้อจะกำหนดวิธีให้สิทธิ์แก่ผู้ใช้ ราคา และสถานที่ (ภูมิภาค) ที่ผลิตภัณฑ์จะพร้อมให้บริการ ผลิตภัณฑ์เดียวมีตัวเลือกการซื้อได้หลายรายการ ซึ่งอาจแสดงราคาที่แตกต่างกันในภูมิภาคต่างๆ
  • ข้อเสนอ - ข้อเสนออาจส่งผลต่อราคาของตัวเลือกการซื้อที่ลิงก์อยู่ และใช้เพื่อจำลองส่วนลดหรือการสั่งจองล่วงหน้าได้ ตัวเลือกการซื้อเดียวสามารถมีได้หลายข้อเสนอ

แผนภาพต่อไปนี้แสดงโมเดลออบเจ็กต์ของไอเทมแบบเรียกเก็บเงินครั้งเดียว

codelab-otp-model.png รูปที่ 1: โมเดลออบเจ็กต์แบบครั้งเดียว

ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมของไอเทมแบบเรียกเก็บเงินครั้งเดียว

3. สร้างแอปตัวอย่าง

Codelab นี้ใช้แอป Android ตัวอย่างเพื่อแสดงวิธีจัดการผลิตภัณฑ์แบบครั้งเดียว แอปตัวอย่างออกแบบมาให้เป็นแอป Android ที่มีฟังก์ชันการทำงานเต็มรูปแบบซึ่งมีซอร์สโค้ดที่สมบูรณ์ซึ่งแสดงลักษณะต่อไปนี้

  • การผสานรวมแอปกับ PBL
  • การดึงข้อมูลไอเทมแบบเรียกเก็บเงินครั้งเดียวและตัวเลือกการซื้อที่เกี่ยวข้อง
  • เรียกใช้ขั้นตอนการซื้อด้วยราคาในภูมิภาค

วิดีโอเดโมต่อไปนี้แสดงลักษณะและการทำงานของแอปตัวอย่างหลังจากที่ติดตั้งใช้งานและเรียกใช้

หากคุ้นเคยกับไอเทมแบบเรียกเก็บเงินครั้งเดียวและ Play Billing Library (PBL) อยู่แล้ว คุณสามารถดาวน์โหลดแอปตัวอย่างและทดลองใช้ได้

สิ่งที่ต้องดำเนินการก่อน

ก่อนที่จะสร้างและติดตั้งใช้งานแอปตัวอย่าง ให้ทำดังนี้

สร้าง

วัตถุประสงค์ของขั้นตอนการสร้างนี้คือการสร้างไฟล์ Android App Bundle ที่ลงนามแล้วของแอปตัวอย่าง

หากต้องการสร้าง Android App Bundle ให้ทำตามขั้นตอนต่อไปนี้

  1. ดาวน์โหลดแอปตัวอย่างจาก GitHub
  2. สร้างแอปตัวอย่าง ก่อนสร้าง ให้เปลี่ยนชื่อแพ็กเกจของแอปตัวอย่าง แล้วจึงสร้าง หากคุณมีแพ็กเกจของแอปอื่นๆ ใน Play Console โปรดตรวจสอบว่าชื่อแพ็กเกจที่คุณระบุสำหรับแอปตัวอย่างนั้นไม่ซ้ำกัน

    หมายเหตุ: การสร้างแอปตัวอย่างจะสร้างเฉพาะไฟล์ APK ที่คุณใช้สำหรับการทดสอบในเครื่องได้ อย่างไรก็ตาม การเรียกใช้แอปจะไม่ดึงข้อมูลผลิตภัณฑ์และราคาเนื่องจากยังไม่ได้กำหนดค่าผลิตภัณฑ์ใน Play Console
  3. สร้าง Android App Bundle ที่ลงนามแล้ว
    1. สร้างคีย์การอัปโหลดและคีย์สโตร์
    2. รับรองแอปด้วยคีย์การอัปโหลด
    3. กำหนดค่า Play App Signing

ขั้นตอนถัดไปคือการอัปโหลด Android App Bundle ไปยัง Google Play Console

4. สร้างผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวใน Play Console

หากต้องการสร้างผลิตภัณฑ์แบบครั้งเดียวใน Google Play Console คุณต้องมีแอปใน Play Console สร้างแอปใน Play Console แล้วอัปโหลด App Bundle ที่ลงนามแล้วซึ่งสร้างไว้ก่อนหน้านี้

สร้างแอป

วิธีสร้างแอป

  1. เข้าสู่ระบบ Google Play Console โดยใช้บัญชีนักพัฒนาแอป
  2. คลิกสร้างแอป ซึ่งจะเปิดหน้าสร้างแอป
  3. ป้อนชื่อแอป เลือกภาษาเริ่มต้น และรายละเอียดอื่นๆ ที่เกี่ยวข้องกับแอป
  4. คลิกสร้างแอป ซึ่งจะเป็นการสร้างแอปใน Google Play Console

ตอนนี้คุณอัปโหลด App Bundle ที่ลงนามแล้วของแอปตัวอย่างได้แล้ว

อัปโหลด App Bundle ที่ลงนามแล้ว

  1. อัปโหลด App Bundle ที่ลงนามแล้วไปยังแทร็กทดสอบภายในของ Google Play Console หลังจากอัปโหลดแล้วเท่านั้น คุณจึงจะกำหนดค่าฟีเจอร์ที่เกี่ยวข้องกับการสร้างรายได้ใน Play Console ได้
  2. คลิกทดสอบและเผยแพร่ > การทดสอบ > รุ่นภายใน > สร้างรุ่นใหม่
  3. ป้อนชื่อรุ่นและอัปโหลดไฟล์ APK ที่ลงชื่อแล้ว
  4. คลิกถัดไป แล้วคลิกบันทึกและเผยแพร่

ตอนนี้คุณสร้างผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวได้แล้ว

สร้างผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว

วิธีสร้างผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว

  1. ใน Google Play Console ให้ไปที่สร้างรายได้ด้วย Play > ผลิตภัณฑ์ > ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว จากเมนูการนำทางด้านซ้าย
  2. คลิกสร้างผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
  3. ป้อนรายละเอียดผลิตภัณฑ์ต่อไปนี้
    • รหัสผลิตภัณฑ์: ป้อนรหัสที่ไม่ซ้ำกัน เช่น trending_movie_1
    • (ไม่บังคับ) แท็ก: เพิ่มแท็กที่เกี่ยวข้อง
    • ชื่อ: ป้อนชื่อผลิตภัณฑ์ เช่น Product Movie
    • คำอธิบาย: ป้อนคำอธิบายผลิตภัณฑ์ เช่น Product Description
    การแปลชื่อและคำอธิบายผลิตภัณฑ์ด้วยตนเอง
    โดยค่าเริ่มต้น ชื่อและคำอธิบายผลิตภัณฑ์จะเป็นภาษาอังกฤษ (สหรัฐอเมริกา) – en-US นอกจากนี้ คุณยังป้อนชื่อและคำอธิบายในภาษาอื่นๆ ด้วยตนเองได้ด้วย หากต้องการป้อนรายละเอียด ให้คลิกจัดการคำแปล เลือกภาษาที่ต้องการป้อนข้อความที่แปล แล้วคลิกใช้ รูปภาพต่อไปนี้แสดงตัวเลือกจัดการคำแปลmanage-translations.pngรูปที่ 2: จัดการคำแปล

    ภาษาที่คุณเลือกจะปรากฏในเมนูแบบเลื่อนลงของภาษา เลือกแต่ละภาษา แล้วป้อนชื่อและคำอธิบายที่เกี่ยวข้องในภาษาที่เลือก นอกจากนี้ คุณยังแปลชื่อและคำอธิบายผลิตภัณฑ์โดยอัตโนมัติได้โดยไม่มีค่าใช้จ่าย ดูข้อมูลเพิ่มเติมได้ที่ส่วนแปลไอเทมแบบเรียกเก็บเงินครั้งเดียวใน Codelab นี้

    หมายเหตุ: คุณข้ามการกำหนดค่าช่องไอคอนและส่วนภาษี การปฏิบัติตามข้อกำหนด และโปรแกรมได้เพื่อวัตถุประสงค์ของ Codelab นี้
  4. คลิกถัดไป
  5. เพิ่มตัวเลือกการซื้อและกำหนดค่าความพร้อมจำหน่ายสินค้าระดับภูมิภาค ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวต้องมีตัวเลือกการซื้ออย่างน้อย 1 รายการ ซึ่งจะกำหนดวิธีการให้สิทธิ์ ราคา และความพร้อมจำหน่ายสินค้าระดับภูมิภาค สำหรับโค้ดแล็บนี้ เราจะเพิ่มตัวเลือกซื้อมาตรฐานสำหรับผลิตภัณฑ์

    ในส่วนตัวเลือกการซื้อ ให้ป้อนรายละเอียดต่อไปนี้
    • รหัสตัวเลือกการซื้อ: ป้อนรหัสที่ไม่ซ้ำกัน เช่น buy-movie
    • ประเภทการซื้อ: เลือกซื้อ
    • (ไม่บังคับ) แท็ก: เพิ่มแท็กที่เฉพาะเจาะจงสำหรับตัวเลือกการซื้อนี้
    • (ไม่บังคับ) คลิกตัวเลือกขั้นสูงเพื่อกำหนดค่าตัวเลือกขั้นสูง คุณข้ามการกำหนดค่าตัวเลือกขั้นสูงได้เพื่อวัตถุประสงค์ของโค้ดแล็บนี้
  6. จากนั้นคุณต้องกำหนดค่าความพร้อมจำหน่ายสินค้าและราคาของตัวเลือกการซื้อในระดับภูมิภาค ในความพร้อมให้บริการระดับภูมิภาค คุณจะระบุภูมิภาคที่ผลิตภัณฑ์พร้อมให้บริการได้ รวมถึงภูมิภาคที่ยังไม่ได้เผยแพร่แอป โดยค่าเริ่มต้น ตัวเลือกการซื้อจะพร้อมใช้งานในทุกภูมิภาค

    ในส่วนความพร้อมให้บริการและราคา ให้คลิกแก้ไขความพร้อมให้บริการและการเข้าถึง > ตั้งค่าเป็นไม่พร้อมให้บริการ โปรดทราบว่าโดยค่าเริ่มต้น ระบบจะตั้งค่าภูมิภาคทั้งหมดเป็นพร้อมใช้งาน
    1. เลือกทุกประเทศยกเว้น France, Spain และUnited States แล้วคลิกตั้งค่าเป็นไม่พร้อมให้บริการ
    2. จากเมนูแบบเลื่อนลงทุกภูมิภาค ให้เลือกประเทศและภูมิภาคที่พร้อมให้บริการ ซึ่งจะแสดงเฉพาะประเทศที่คุณเลือกในขั้นตอนก่อนหน้า
    3. คลิกไอคอนแก้ไขในคอลัมน์ราคาสำหรับแต่ละประเทศที่พร้อมให้บริการ ซึ่งจะแสดงกล่องโต้ตอบเพื่อแก้ไขราคา ป้อนและบันทึกราคาต่อไปนี้
      • สำหรับ France ให้ป้อน 10 EUR
      • สำหรับ Spain ให้ป้อน 8 EUR
      • สำหรับ United States ให้ป้อน 13 USD
  7. คลิกเปิดใช้งาน ซึ่งจะทำให้ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวพร้อมจำหน่ายโดยมีตัวเลือกการซื้อแบบซื้อ

หมายเหตุ: สกุลเงินของราคาในภูมิภาคจะปรากฏตามการตั้งค่าประเทศ Play ของผู้ใช้ ตัวอย่างเช่น หากประเทศ Play ของผู้ใช้ตั้งค่าเป็นฝรั่งเศส ราคาผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวจะแสดงเป็นสกุลเงินยูโร

วิดีโอการสร้างผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว

วิดีโอต่อไปนี้แสดงขั้นตอนการสร้างไอเทมแบบเรียกเก็บเงินครั้งเดียวที่อธิบายไว้ก่อนหน้านี้

เพิ่มตัวเลือกการซื้อแบบเช่า

ตอนนี้ให้เพิ่มตัวเลือกการซื้อแบบเช่าลงในผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวที่สร้างไว้ก่อนหน้านี้

  1. ใน Google Play Console ให้ไปที่สร้างรายได้ด้วย Play > ผลิตภัณฑ์ > ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว จากเมนูการนำทางด้านซ้าย
  2. คลิกลูกศรขวาสำหรับผลิตภัณฑ์ที่มีtrending_movie_1รหัสผลิตภัณฑ์ที่คุณสร้างในขั้นตอนก่อนหน้า
  3. คลิกเพิ่มตัวเลือกการซื้อ
  4. ในส่วนตัวเลือกการซื้อ ให้ป้อนรายละเอียดต่อไปนี้
    • รหัสตัวเลือกการซื้อ: ป้อน rent-movie
    • ประเภทการซื้อ: เลือกเช่า
    • ระยะเวลาการเช่า: เลือก 48 ชั่วโมง
    • ระยะเวลาเริ่มต้นการเช่า: เลือก 24 ชั่วโมง
    • (ไม่บังคับ) แท็ก: เพิ่มแท็กที่เฉพาะเจาะจงสำหรับตัวเลือกการซื้อนี้
    • (ไม่บังคับ) คลิกตัวเลือกขั้นสูงเพื่อกำหนดค่าตัวเลือกขั้นสูง คุณข้ามการกำหนดค่าตัวเลือกขั้นสูงได้เพื่อวัตถุประสงค์ของโค้ดแล็บนี้
  5. จากนั้นให้กำหนดค่าความพร้อมใช้งานระดับภูมิภาคสำหรับตัวเลือกการซื้อแบบเช่าเช่นเดียวกับตัวเลือกการซื้อแบบซื้อ ดูขั้นตอนที่ 6 และ 7 ในส่วนก่อนหน้า เมื่อกำหนดราคาระดับภูมิภาค ให้กำหนดราคาที่แตกต่างกันสำหรับการเช่า เช่น
    • France - 5 EUR
    • Spain - 4 EUR
    • United States - 7 USD

5. แปลรายละเอียดไอเทมแบบเรียกเก็บเงินครั้งเดียว

คุณแปลชื่อและคำอธิบายผลิตภัณฑ์ได้โดยไม่มีค่าใช้จ่ายเพิ่มเติมโดยใช้ฟีเจอร์การแปลด้วยคอมพิวเตอร์ที่มีใน Google Play Console

หากต้องการแปลชื่อและคำอธิบาย ให้ทำดังนี้

  1. ใน Google Play Console ให้ไปที่เพิ่มจำนวนผู้ใช้ > การแปล > ผลิตภัณฑ์ใน Store และในแอป จากเมนูการนำทางด้านซ้าย
  2. คลิกสร้างคำสั่งซื้อ
  3. เลือกตัวเลือกการแปลด้วยเครื่องแบบไม่มีค่าใช้จ่าย แล้วคลิกถัดไป
  4. จากภาษาแปลเป็น ให้เลือกฝรั่งเศส - fr-FR และสเปน - es-ES แล้วคลิกถัดไป
  5. เลือกไอเทมแบบเรียกเก็บเงินครั้งเดียวและการสมัครใช้บริการ แล้วคลิกแปลและดูคำแปล ซึ่งจะแสดงแบนเนอร์ข้อจำกัดความรับผิด ยอมรับข้อจำกัดความรับผิด
  6. ตอนนี้คุณจะเห็นรายการภาษาที่แปลแล้ว คลิกตรวจสอบและใช้สำหรับภาษา ตรวจสอบข้อความ แล้วคลิกใช้คำแปลทั้งหมด ทำขั้นตอนนี้ซ้ำสำหรับทุกภาษาที่คุณเลือกแปล

หลังจากแปลแล้ว คุณจะแก้ไขข้อความที่แปลแล้วใน Play Console ได้ วิธีแก้ไขข้อความที่แปล

  1. เปิดหน้าผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว > [ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว] > แก้ไขผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว > แก้ไขรายละเอียดผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
  2. เลือกภาษาที่ต้องการจากเมนูแบบเลื่อนลงของภาษา ซึ่งจะแสดงข้อความเป็นภาษาที่เลือก รูปภาพต่อไปนี้แสดงการเลือกภาษาเพื่อแก้ไขข้อความที่แปล

    edit-translations.png รูปที่ 3: แก้ไขข้อความที่แปล
  3. แก้ไขข้อความตามที่ต้องการ แล้วคลิกบันทึกการเปลี่ยนแปลง

ผู้ใช้จะเห็นข้อความที่แปลแล้วตามค่ากำหนดภาษาของโทรศัพท์ เช่น หากตั้งค่าภาษาของโทรศัพท์ผู้ใช้เป็นฝรั่งเศส ระบบจะแสดงชื่อและคำอธิบายผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวเป็นภาษาฝรั่งเศส รูปภาพตัวอย่างต่อไปนี้แสดงวิธีและตำแหน่งที่ข้อความที่แปลจะปรากฏในภาษาต่างๆ

post-translation.pngรูปที่ 4: ข้อความที่แปลแล้วในแอป

วิดีโอการกำหนดค่าการแปล

วิดีโอต่อไปนี้แสดงขั้นตอนการกำหนดค่าการแปลที่อธิบายไว้ก่อนหน้านี้

6. ผสานรวมกับ PBL

หากต้องการผสานรวมแอปกับ Play Billing Library (PBL) ให้ทำตามขั้นตอนต่อไปนี้

  1. เพิ่มทรัพยากร Dependency ของ Play Billing Library ลงในแอปตัวอย่าง
    dependencies {
    val billing_version = "8.0.0"
    
    implementation("com.android.billingclient:billing-ktx:$billing_version")
    }
    
  2. เริ่มต้น 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();
     }
    
  3. เชื่อมต่อกับ 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");
            }
            });
    }
    
  4. ดึงข้อมูลผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว หลังจากผสานรวมแอปกับ 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 ที่ไม่ซ้ำกัน
  5. ดึงข้อมูลโทเค็นข้อเสนอสำหรับข้อเสนอเช่าและซื้อ คุณต้องมีโทเค็นข้อเสนอเพื่อเปิดตัวขั้นตอนการเรียกเก็บเงินในขั้นตอนที่ 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);
        }
    }
    
  6. เปิดตัวขั้นตอนการเรียกเก็บเงิน
    /**
     * 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 Maximize Your Play Billing Integration

7. ทดสอบตัวเลือกการซื้อ

ก่อนที่จะทำให้ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวพร้อมใช้งานในแอปที่ใช้งานจริง คุณสามารถทดสอบการผสานรวม PBL โดยใช้ผู้ทดสอบที่ได้รับอนุญาตและ Play Billing Lab

คุณจะได้เรียนรู้วิธีทดสอบการแปลราคาและความพร้อมจำหน่ายสินค้าที่แอปพร้อมให้บริการในบางภูมิภาคเท่านั้น โดยมีราคาแตกต่างกันในแต่ละภูมิภาค

สิ่งที่ต้องดำเนินการก่อน

ทดสอบการกำหนดราคาระดับภูมิภาคสำหรับตัวเลือกการซื้อ

หากต้องการทดสอบการกำหนดราคาระดับภูมิภาคสำหรับตัวเลือกการซื้อ ให้ทำดังนี้

  1. เปิดแอป Play Billing Lab แล้วเข้าสู่ระบบในฐานะผู้ทดสอบใบอนุญาต
  2. ในการตั้งค่าการกำหนดค่า ให้คลิกแก้ไข เลือกประเทศ France แล้วคลิกใช้ ในที่นี้เราเลือกประเทศใน Play ซึ่งจะเป็นตัวกำหนดสกุลเงินที่จะแสดงในแอป
  3. ปิดและเปิดแอปตัวอย่างอีกครั้ง ตอนนี้แอปควรแสดงสกุลเงินสำหรับการซื้อและเช่าสำหรับ France เป็นยูโร

หากต้องการทดสอบในประเทศอื่น ให้เลือก Spain ในขั้นตอนที่ 2 แล้วทำขั้นตอนที่ 3

วิดีโอการทดสอบ Play Billing Lab

วิดีโอต่อไปนี้แสดงขั้นตอนการทดสอบราคาระดับภูมิภาคโดยใช้แอปตัวอย่าง

8. ขั้นตอนถัดไป

เอกสารอ้างอิง

9. ยินดีด้วย

ยินดีด้วย คุณได้ไปยังส่วนต่างๆ ของ Google Play Console เพื่อสร้างผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวใหม่ กำหนดค่าตัวเลือกการซื้อ และทดสอบขั้นตอนการซื้อโดยใช้ Play Billing Lab เรียบร้อยแล้ว ตอนนี้คุณเข้าใจแคตตาล็อกผลิตภัณฑ์ที่ยืดหยุ่นของ Google Play สำหรับการซื้อแบบครั้งเดียวมากขึ้นแล้ว

แบบสำรวจ

ความคิดเห็นของคุณเกี่ยวกับ Codelab นี้มีค่าอย่างยิ่ง โปรดสละเวลาสักครู่เพื่อตอบแบบสำรวจของเรา