เกี่ยวกับการสมัครใช้บริการ

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

หากคุณยังไม่ได้กำหนดค่าผลิตภัณฑ์ที่ต้องสมัครใช้บริการสำหรับแอป โปรดดู สร้างและกำหนดค่าผลิตภัณฑ์

ภาพรวมการสมัครใช้บริการ

การสมัครใช้บริการแสดงชุดสิทธิประโยชน์ที่ผู้ใช้เข้าถึงได้ระหว่าง ระยะเวลาที่ระบุ เช่น การสมัครใช้บริการอาจให้สิทธิ์ผู้ใช้ เพื่อเข้าถึงบริการสตรีมมิงเพลง

คุณสามารถสมัครใช้บริการได้หลายรายการภายในแอปเดียวกัน ทั้งเพื่อทำสิ่งต่อไปนี้ แสดงถึงชุดของสิทธิประโยชน์ต่างๆ หรือระดับต่างๆ สำหรับ ชุดของสิทธิประโยชน์ (เช่น ระดับ "Silver" และ "Gold")

คุณสร้างการกําหนดค่าได้หลายรายการผ่านแพ็กเกจเริ่มต้นและข้อเสนอ สำหรับการสมัครใช้บริการเดียวกัน ตัวอย่างเช่น คุณสามารถสร้าง ข้อเสนอแนะนำสำหรับผู้ใช้ที่ไม่เคยสมัครใช้บริการแอปของคุณ ในทำนองเดียวกัน คุณจะสร้างข้อเสนอการอัปเกรดสำหรับผู้ใช้ที่สมัครใช้บริการแล้วได้

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

การผสานรวมแพ็กเกจแบบชำระเงินล่วงหน้า

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

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

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

หลังจากเติมเงิน ช่องต่อไปนี้ใน Purchase อัปเดตออบเจ็กต์ผลลัพธ์เพื่อแสดงการซื้อการเติมเงินล่าสุดแล้ว:

  • รหัสคำสั่งซื้อ
  • เวลาที่ซื้อ
  • ลายเซ็น
  • โทเค็นการซื้อ
  • รับทราบแล้ว

ฟิลด์ Purchase ต่อไปนี้มีข้อมูลเดียวกันกับที่พบใน การซื้อครั้งแรก:

  • ชื่อแพ็กเกจ
  • สถานะการซื้อ
  • ผลิตภัณฑ์
  • การต่ออายุใหม่อัตโนมัติ

การรับทราบการซื้อแบบชำระล่วงหน้า

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

เนื่องจากอาจมีระยะเวลาการใช้แพ็กเกจแบบชำระเงินล่วงหน้าที่สั้น จึงเป็นสิ่งสำคัญที่ รับทราบการซื้อโดยเร็วที่สุด

ต้องรับทราบแพ็กเกจแบบชำระเงินล่วงหน้าที่มีระยะเวลาตั้งแต่ 1 สัปดาห์ขึ้นไป ภายใน 3 วัน

ต้องรับทราบแพ็กเกจแบบชำระเงินล่วงหน้าที่มีระยะเวลาน้อยกว่า 1 สัปดาห์ ภายในช่วงระยะเวลาครึ่งหนึ่งของแผน ตัวอย่างเช่น นักพัฒนาซอฟต์แวร์มีเวลา 1.5 วันในการ รับทราบแพ็กเกจแบบชำระเงินล่วงหน้า 3 วัน

การผสานรวมการสมัครใช้บริการแบบผ่อนชำระ

การสมัครใช้บริการแบบผ่อนชำระคือการสมัครใช้บริการประเภทหนึ่งที่ผู้ใช้ชำระเงินสำหรับ การสมัครใช้บริการแบบผ่อนชำระหลายงวดในช่วงระยะเวลาหนึ่ง แทนที่จะต้องชำระเงิน ค่าบริการล่วงหน้าทั้งหมด

ข้อควรพิจารณาเพิ่มเติมสำหรับการสมัครใช้บริการแบบผ่อนชำระ

  • ประเทศที่พร้อมให้บริการ: ฟีเจอร์การสมัครใช้บริการแบบผ่อนชำระพร้อมให้บริการเท่านั้น ในบราซิล ฝรั่งเศส อิตาลี และสเปน (ดูความพร้อมใช้งานล่าสุดใน Console)
  • การกำหนดราคา: เมื่อกำหนดราคาสำหรับการสมัครใช้บริการแบบผ่อนชำระ ในคอนโซล ราคาจะแสดงจำนวนเงินที่ชำระรายเดือน นี่ รวมกับระยะเวลาผูกมัดที่ตั้งไว้ จะสร้างยอดทั้งหมด สำหรับการสมัครใช้บริการในหน้าจอการซื้อ
  • ระยะเวลาผูกมัด: ระยะเวลารวมของการสมัครใช้บริการครั้งแรก โดยในระหว่างนี้ จะต้องมีการชำระเงินรายเดือน ตัวอย่างเช่น หาก แพ็กเกจเริ่มต้นมีระยะเวลาผูกมัด 15 เดือน ผู้ใช้จะซื้อ 15 เดือน ชำระเงินในช่วงนี้
  • การต่ออายุ: ในบริบทของการสมัครใช้บริการแบบผ่อนชำระ ให้ใช้ "การต่ออายุ" แสดง จุดสิ้นสุดของระยะเวลาผูกมัด ไม่ว่าจะเป็นระยะเวลาผูกมัดเริ่มต้น หรือ ระยะเวลาผูกมัดที่ตามมา หลังจากลงชื่อสมัครใช้ครั้งแรก การต่ออายุครั้งแรก จะเกิดขึ้นเมื่อสิ้นสุดระยะเวลาผูกมัดเริ่มต้นทั้งหมด ลำดับต่อมา การต่ออายุจะเกิดขึ้นหลังจากสิ้นสุดระยะเวลาผูกมัดที่ตามมา ประเภทการต่ออายุสำหรับการสมัครใช้บริการแบบผ่อนชำระอาจเป็น "ต่ออายุอัตโนมัติรายเดือน" ได้ หรือ "ต่ออายุใหม่อัตโนมัติในระยะเวลาเดียวกัน" สำหรับ "การต่ออายุอัตโนมัติรายเดือน" จะไม่มี และแพ็กเกจจะมีลักษณะการทำงานเหมือนการสมัครใช้บริการรายเดือน การเรียกเก็บเงินค่าสมัครใช้บริการรายเดือนแต่ละครั้งประกอบขึ้นเป็นการต่ออายุ
  • ช่วงเวลาที่เรียกเก็บเงิน: ในบริบทของการสมัครใช้บริการแบบผ่อนชำระ จะหมายถึง ตามรอบระยะเวลาที่มีการชำระเงินแต่ละครั้ง ตามที่ระบุไว้ ในแพ็กเกจเริ่มต้น
  • การเปลี่ยนแปลงแผนเทียบกับลักษณะการเปลี่ยนแปลงราคา: สำหรับการเปลี่ยนแปลงราคาและ การยกเลิก การผูกมัดนั้นจะหนักแน่น หมายความว่าหากผู้ใช้ต้องการ ยกเลิก หรือนักพัฒนาแอปต้องการเปลี่ยนแปลงราคา การเปลี่ยนแปลงจะมีผล เมื่อสิ้นสุดระยะเวลาผูกมัด แต่สำหรับการเปลี่ยนแปลงแผน สัญญาผูกมัดจะไม่หนักแน่น ซึ่งหมายความว่าการเปลี่ยนแพ็กเกจจะไม่ต้องรอจนกว่าจะสิ้นสุด ระยะเวลาผูกมัด จะมีผลทันทีหรือในการชำระเงินครั้งถัดไป วันที่ตามโหมดการแทนที่ที่ตั้งไว้
  • การเปลี่ยนแพ็กเกจการสมัครใช้บริการเดียวกัน: การเปลี่ยนแปลงแพ็กเกจจากแพ็กเกจเริ่มต้นในการผ่อนชำระ เป็นแพ็กเกจเริ่มต้นที่ไม่ใช่การผ่อนชำระของผลิตภัณฑ์ที่ต้องสมัครใช้บริการเดียวกัน อนุญาต
  • การแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาซอฟต์แวร์ (RTDN): A ระบบจะส่ง RTDN SUBSCRIPTION_CANCELLATION_SCHEDULED ทันทีที่ การยกเลิกที่ผู้ใช้เป็นผู้เริ่มดำเนินการเมื่อการชำระเงินยังคงมีผลตามระยะเวลาผูกมัด การยกเลิกนี้อยู่ระหว่างรอดำเนินการและจะมีผลในช่วงสิ้นสุด ระยะเวลาผูกมัด จากนั้น หากผู้ใช้ไม่กู้คืน SUBSCRIPTION_CANCELED และ RTDN SUBSCRIPTION_EXPIRED รายการจะถูกส่งเมื่อสิ้นสุดระยะเวลาผูกมัด

  • การชำระคืน / การรับรู้รายได้: การชำระคืนให้แก่นักพัฒนาแอปจะเกิดขึ้นเมื่อผู้ใช้ดำเนินการ ภายใต้เงื่อนไขเดียวกับการสมัครใช้บริการอื่นๆ ทั้งหมด นักพัฒนาแอปไม่ได้รับเงินล่วงหน้าเมื่อผู้ใช้ลงชื่อสมัครใช้การผ่อนชำระ การสมัครใช้บริการ

  • การรับการชำระเงินที่พลาดไป: หากผู้ใช้ผ่อนชำระไม่สำเร็จ ทั้ง Google และนักพัฒนาแอปจะไม่พยายามเรียกเก็บเงิน การชำระเงินที่ไม่ได้รับหรือค้างชำระจากผู้ใช้ ยกเว้นว่า Google อาจ ลองชำระเงินอีกครั้งในระยะเวลาผ่อนผันที่เกี่ยวข้อง หรือ ช่วงการระงับบัญชีตามแนวทางการลองชำระเงินอีกครั้งตามปกติ Google จะไม่รับผิดชอบต่อนักพัฒนาแอปสำหรับยอดค้างชำระ การผ่อนชำระ

  • ความพร้อมให้บริการของ Play Billing Library: ช่อง installmentDetails จะมีเพียง ใช้ได้กับ PBL 7 ขึ้นไป สำหรับ PBL 5 ขึ้นไป การผ่อนชำระ ส่งคืนการสมัครใช้บริการโดยใช้ queryProductDetails() แต่การสมัครใช้บริการดังกล่าว จะไม่มีข้อมูลการผ่อนชำระโดยละเอียด เช่น จำนวนการชำระเงินที่คอมมิต ของแผนดังกล่าว

ใช้ Deep Link เพื่ออนุญาตให้ผู้ใช้จัดการการสมัครใช้บริการ

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

คุณสามารถใส่ Deep Link จากแอปของคุณไปยังการสมัครใช้บริการ Google Play ได้ สำหรับการสมัครใช้บริการที่ยังไม่หมดอายุ ซึ่งคุณตรวจสอบได้โดยใช้ ช่อง subscriptionState ของแหล่งข้อมูลการสมัครใช้บริการ จากข้อมูลนี้ คุณสามารถทำ Deep Link ไปยัง Play ได้หลายวิธี ศูนย์การสมัครใช้บริการของร้านค้า

ใช้ URL ต่อไปนี้เพื่อนำผู้ใช้ไปยังหน้าเว็บที่แสดง การสมัครใช้บริการ ดังแสดงในรูปที่ 1 และ 2

https://play.google.com/store/account/subscriptions
หน้าจอการสมัครใช้บริการ Play Store จะแสดงสถานะการสมัครใช้บริการทั้งหมดของผู้ใช้ที่เรียกเก็บเงินใน Google Play
รูปที่ 1 หน้าจอการสมัครใช้บริการ Play Store จะแสดงสถานะการสมัครใช้บริการทั้งหมดของผู้ใช้ที่เรียกเก็บเงินใน Google Play


วันที่ แตะที่การสมัครใช้บริการเพื่อดูรายละเอียดเพิ่มเติม
รูปที่ 2 แตะที่การสมัครรับข้อมูลเพื่อดูเพิ่มเติม รายละเอียด

Deep Link นี้อาจเป็นประโยชน์ในการช่วยให้ผู้ใช้กู้คืนการสมัครใช้บริการที่ถูกยกเลิก จากศูนย์การสมัครใช้บริการของ Play Store

หากต้องการลิงก์ไปยังหน้าการจัดการการสมัครใช้บริการที่ยังไม่หมดอายุโดยตรง ให้ระบุ ชื่อแพ็กเกจและ productId ที่เชื่อมโยงกับการสมัครใช้บริการที่ซื้อ ถึง ระบุ productId แบบเป็นโปรแกรมสำหรับการสมัครใช้บริการที่มีอยู่ แบ็กเอนด์ของแอป หรือเรียกใช้ BillingClient.queryPurchasesAsync() เพื่อแสดงรายการ ของการสมัครใช้บริการที่เชื่อมโยงกับผู้ใช้รายหนึ่งๆ การสมัครใช้บริการแต่ละรายการประกอบด้วย productId ที่เกี่ยวข้องเป็นส่วนหนึ่งของข้อมูลสถานะการสมัครใช้บริการ ออบเจ็กต์ SubscriptionPurchaseLineItem แต่ละรายการที่เชื่อมโยงกับ การซื้อการสมัครใช้บริการมีค่า productId ที่เชื่อมโยงกับ ที่ผู้ใช้ซื้อไว้ในรายการโฆษณานั้น

ใช้ URL ต่อไปนี้เพื่อนำผู้ใช้ไปยังการจัดการการสมัครใช้บริการที่เฉพาะเจาะจง โดยแทนที่ "your-sub-product-id" และ "แพ็กเกจแอปของคุณ" พร้อมด้วย productId และชื่อแพ็กเกจแอปตามลำดับ

https://play.google.com/store/account/subscriptions?sku=your-sub-product-id&package=your-app-package

จากนั้นผู้ใช้จึงจะจัดการวิธีการชำระเงินและเข้าถึงฟีเจอร์ได้ ซึ่งรวมถึงการยกเลิก การสมัครใช้บริการใหม่ และการหยุดชั่วคราว

อนุญาตให้ผู้ใช้อัปเกรด ดาวน์เกรด หรือเปลี่ยนการสมัครใช้บริการ

คุณสามารถให้ตัวเลือกต่างๆ แก่สมาชิกปัจจุบันในการเปลี่ยน แพ็กเกจการสมัครใช้บริการเพื่อตอบสนองความต้องการของลูกค้าได้ดียิ่งขึ้น:

  • หากคุณขายการสมัครใช้บริการหลายระดับ เช่น ระดับ "พื้นฐาน" และ "พรีเมียม" ซึ่งคุณอนุญาตให้ผู้ใช้สลับระดับได้โดยซื้อ แพ็กเกจเริ่มต้นหรือข้อเสนอของการสมัครใช้บริการ
  • คุณสามารถอนุญาตให้ผู้ใช้เปลี่ยนช่วงเวลาที่เรียกเก็บเงินปัจจุบันได้ เช่น การเปลี่ยน จากแพ็กเกจรายเดือนเป็นรายปี
  • นอกจากนี้ คุณยังอนุญาตให้ผู้ใช้เปลี่ยนไปมาระหว่างแพ็กเกจแบบต่ออายุใหม่อัตโนมัติกับแพ็กเกจแบบชำระเงินล่วงหน้าได้ด้วย

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

รูปที่ 3 แสดงตัวอย่างแอปซึ่งมีแผนต่างๆ 3 แผน

วันที่ แอปนี้มีการสมัครใช้บริการ 3 ระดับ
รูปที่ 3 แอปนี้มีการสมัครใช้บริการ 3 ระดับ

แอปของคุณอาจแสดงหน้าจอที่คล้ายกับรูปที่ 3 เพื่อให้ตัวเลือกแก่ผู้ใช้ในการเปลี่ยนแปลง การสมัครสมาชิก ในทุกกรณี ผู้ใช้ควรทราบอย่างชัดเจนว่า แพ็กเกจการสมัครใช้บริการคืออะไร และมีตัวเลือกในการเปลี่ยนอย่างไร

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

โหมดการเปลี่ยนทดแทน

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

โหมดการเปลี่ยนทดแทน

คำอธิบาย

ตัวอย่างการใช้งาน

การชำระเงินที่ผูกมัดซึ่งบันทึกเป็นชำระแล้ว (สำหรับการเปลี่ยนทดแทนแบบผ่อนชำระ)

WITH_TIME_PRORATION

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

อัปเกรดเป็นระดับที่แพงกว่าโดยไม่ต้องชำระเงินเพิ่มเติมในทันที

0

CHARGE_PRORATED_PRICE

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

หมายเหตุ: ตัวเลือกนี้จะใช้ได้เฉพาะกับ การอัปเกรดการสมัครใช้บริการ ที่ราคาต่อหน่วยของเวลา เพิ่มขึ้น

อัปเกรดเป็นระดับที่แพงกว่าโดยไม่ต้องเปลี่ยนวันที่เรียกเก็บเงิน

1

CHARGE_FULL_PRICE

ระบบจะอัปเกรดหรือดาวน์เกรดการสมัครใช้บริการทันที และผู้ใช้ เรียกเก็บเงินราคาเต็มสำหรับการให้สิทธิ์ใหม่ทันที มูลค่าที่เหลือ จากการสมัครก่อนหน้า จะถูกยกยอดไปสำหรับ การให้สิทธิ์ หรือตามสัดส่วนเวลาเมื่อเปลี่ยนไปใช้การให้สิทธิ์อื่น

หมายเหตุ: หากการสมัครใช้บริการใหม่มีช่วงทดลองใช้ฟรีหรือ ข้อเสนอช่วงแนะนำ ระบบจะเรียกเก็บเงินจากผู้ใช้ $0 หรือตามราคาช่วงแนะนำ ข้อเสนอพิเศษใดก็ตามที่มีผล ณ เวลาที่อัปเกรดหรือดาวน์เกรด

อัปเกรดจากช่วงเวลาที่เรียกเก็บเงินที่สั้นลงเป็นช่วงเวลาที่นานขึ้น

1 (หมายเหตุ: 0 หากการสมัครใช้บริการใหม่มีช่วงทดลองใช้ฟรี)

WITHOUT_PRORATION

การสมัครใช้บริการจะอัปเกรดหรือดาวน์เกรดทันที และจะเรียกเก็บเงินในราคาใหม่เมื่อมีการต่ออายุการสมัครใช้บริการ โดยรอบการเรียกเก็บเงินจะยังคงเหมือนเดิม

อัปเกรดเป็นระดับการสมัครใช้บริการที่สูงขึ้นโดยที่ยังรักษาช่วงทดลองใช้ฟรีที่เหลืออยู่ไว้ได้

0

DEFERRED

การสมัครใช้บริการจะอัปเกรดหรือดาวน์เกรดก็ต่อเมื่อการสมัครใช้บริการมีการต่ออายุเท่านั้น แต่การซื้อใหม่จะออกทันทีพร้อมกับวันที่เริ่มต้นในอนาคตสำหรับการให้สิทธิ์ใหม่ เพื่อให้นักพัฒนาแอปอนุญาตให้ผู้ใช้ทำการเปลี่ยนแปลงเพิ่มเติมได้ หากต้องการ เช่น เปลี่ยนกลับไปเป็นแพ็กเกจเดิมหรือเริ่มการเปลี่ยนแพ็กเกจที่มีการเลื่อนเวลาใหม่ได้ หมายเหตุ: สำหรับการสมัครใช้บริการแบบผ่อนชำระ การเปลี่ยนแปลงแพ็กเกจจะเกิดขึ้นเมื่อถึงวันที่เริ่มต้นชำระเงินครั้งถัดไป

ดาวน์เกรดเป็นระดับที่มีราคาถูกลง

1

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ แอปพลิเคชันการขายอัปเซลและการชนะใจลูกค้า อัปเกรดหรือดาวน์เกรดข้อเสนอ อ่านคู่มือข้อเสนอและโปรโมชัน

ตั้งค่าโหมดการเปลี่ยนทดแทนสำหรับการซื้อ

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

สมัครใช้บริการอีกครั้งหรือเปลี่ยนแพ็กเกจภายในการสมัครใช้บริการเดียวกัน

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

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

เปลี่ยนแพ็กเกจการสมัครใช้บริการต่างๆ หรือลบล้างโหมดการแทนที่เริ่มต้น

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

เพื่อระบุ SubscriptionUpdateParams อย่างถูกต้องเป็นส่วนหนึ่งของการซื้อรันไทม์ การกำหนดค่าโฟลว์ โปรดทราบข้อจำกัดต่อไปนี้

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

ตัวอย่างและลักษณะการทำงานของการเปลี่ยนทดแทน

หากต้องการทําความเข้าใจวิธีการทํางานของแต่ละโหมดตามสัดส่วน ให้พิจารณาสถานการณ์ต่อไปนี้

สุวัจนีสมัครใช้บริการเนื้อหาออนไลน์จากแอป Country Gardener เขา มีการสมัครรับข้อมูลรายเดือนสำหรับเนื้อหาเวอร์ชันระดับ 1 ซึ่งเป็นแบบข้อความเท่านั้น การสมัครใช้บริการนี้มีค่าใช้จ่าย $2 ต่อเดือน และจะมีการต่ออายุ ในวันที่ 1 ของเดือน

ในวันที่ 15 เมษายน Samwise เลือกที่จะอัปเกรดเป็นระดับ 2 เป็นเวอร์ชันรายปี การสมัครใช้บริการ ซึ่งรวมถึงการอัปเดตวิดีโอและค่าใช้จ่าย $36 ต่อปี

เมื่ออัปเกรดการสมัครใช้บริการ นักพัฒนาแอปจะเลือกโหมดตามสัดส่วน รายการต่อไปนี้จะอธิบายว่าโหมดตามสัดส่วนแต่ละโหมดมีผลต่อการสมัครใช้บริการของ Samwise อย่างไร

WITH_TIME_PRORATION

การสมัครใช้บริการระดับ 1 ของ Samwise จะสิ้นสุดลงทันที เนื่องจากเขาจ่ายเงินเต็มจำนวน เดือน (1-30 เมษายน) แต่อัปเกรดเมื่อผ่านระยะเวลาการสมัครใช้บริการไปแล้วครึ่งหนึ่งของ การสมัครใช้บริการของเดือน ($1) จะมีผลกับการสมัครใช้บริการใหม่ของเขา อย่างไรก็ตาม เนื่องจาก การสมัครใช้บริการใหม่มีค่าใช้จ่าย $36 ต่อปี ยอดเครดิตคงเหลือ $1 จะจ่ายเพียง 10 วัน (16-25 เมษายน) ดังนั้น ในวันที่ 26 เมษายน เขาจะถูกเรียกเก็บเงิน 1, 080 บาทสำหรับการสมัครใช้บริการใหม่ และ อีก $36 ในวันที่ 26 เมษายนของแต่ละปีหลังจากนั้น

คุณควรโทรหา PurchasesUpdatedListener ของแอปทันทีที่ การซื้อสำเร็จ และคุณสามารถดึงข้อมูลการซื้อใหม่เป็นส่วนหนึ่งของ queryPurchasesAsync() โทร แบ็กเอนด์ของคุณจะได้รับ SUBSCRIPTION_PURCHASED การแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาซอฟต์แวร์

CHARGE_PRORATED_PRICE

ใช้โหมดนี้เนื่องจากราคาการสมัครใช้บริการระดับ 2 ต่อหน่วยเวลา ($36/ปี = $3/เดือน) สูงกว่าราคาการสมัครใช้บริการระดับ 1 ต่อครั้ง หน่วย ($2/เดือน) การสมัครใช้บริการระดับ 1 ของ Samwise จะสิ้นสุดลงทันที เนื่องจากเขา จ่ายเงินครบ 1 เดือนแล้ว แต่ใช้ไปเพียงครึ่งเดียว จากการสมัครใช้บริการครึ่งเดือน ($1) มีผลกับการสมัครใช้บริการใหม่ของเขา แต่เนื่องจากการสมัครใช้บริการใหม่ มีค่าใช้จ่าย $36/ปี ส่วน 15 วันที่เหลือมีค่าใช้จ่าย $1.50 เขาจึงเรียกเก็บเงิน ส่วนต่าง $0.50 สำหรับการสมัครใช้บริการใหม่ของเขา ในวันที่ 1 พฤษภาคม Samwise ถูกเรียกเก็บเงิน $36 สำหรับระดับการสมัครใช้บริการใหม่และอีก $36 ในวันที่ 1 พฤษภาคมของปีถัดไป

คุณควรโทรหา PurchasesUpdatedListener ของแอปทันทีที่ การซื้อสำเร็จ และคุณสามารถดึงข้อมูลการซื้อใหม่เป็นส่วนหนึ่งของ สาย queryPurchasesAsync() แบ็กเอนด์ของคุณจะได้รับ SUBSCRIPTION_PURCHASED การแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาซอฟต์แวร์

WITHOUT_PRORATION

การสมัครใช้บริการ Tier 1 ของ Samwise จะได้รับการอัปเกรดเป็นระดับ 2 ทันทีโดยไม่มี จะมีค่าใช้จ่ายเพิ่มเติม และในวันที่ 1 พฤษภาคม เขาจะมีการเรียกเก็บเงิน $36 สำหรับระดับการสมัครใช้บริการใหม่ อีก $36 ในวันที่ 1 พฤษภาคมของทุกปีหลังจากนั้น

คุณควรโทรหา PurchasesUpdatedListener ของแอปทันทีที่ การซื้อสำเร็จ และคุณสามารถดึงข้อมูลการซื้อใหม่เป็นส่วนหนึ่งของ สาย queryPurchasesAsync() แบ็กเอนด์ของคุณจะได้รับ SUBSCRIPTION_PURCHASED การแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาซอฟต์แวร์

DEFERRED

การสมัครใช้บริการ Tier 1 ของ Samwise จะดำเนินต่อไปจนกว่าจะหมดอายุในวันที่ 30 เมษายน ในเดือนพฤษภาคม รายการแรก การสมัครใช้บริการระดับ 2 จะมีผล และ Samwise จะมีการเรียกเก็บเงิน $36 สําหรับ ระดับการสมัครใช้บริการใหม่ของเขา

คุณควรโทรหา PurchasesUpdatedListener ของแอปทันทีที่ การซื้อสำเร็จ และคุณสามารถดึงข้อมูลการซื้อใหม่เป็นส่วนหนึ่งของ สาย queryPurchasesAsync() แบ็กเอนด์ของคุณจะได้รับ SUBSCRIPTION_PURCHASED การแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาซอฟต์แวร์ คุณควร ประมวลผลการซื้อ เหมือนกับที่คุณประมวลผลการซื้อใหม่อื่นๆ ในขณะนั้น โดยเฉพาะอย่างยิ่ง ตรวจสอบว่าคุณยอมรับการซื้อใหม่ หมายเหตุ มีการสร้าง startTime ของการสมัครใช้บริการใหม่ ทันทีที่การแทนที่นั้นมีผล ซึ่งเกิดขึ้นเมื่อ การสมัครใช้บริการหมดอายุ เมื่อถึงเวลานั้น คุณจะได้รับ SUBSCRIPTION_RENEWED RTDN สำหรับแพ็กเกจการสมัครใช้บริการใหม่ อ่านเพิ่มเติมเกี่ยวกับ พฤติกรรม ReplacementMode.DEFERRED รายการใน จัดการการเปลี่ยนอุปกรณ์ทดแทน

CHARGE_FULL_PRICE

การสมัครใช้บริการระดับ 1 ของ Samwise จะสิ้นสุดลงทันที การสมัครใช้บริการ Tier 2 ของเขา เริ่มตั้งแต่วันนี้ และเขาจะได้รับการเรียกเก็บเงิน 1,080 บาท เพราะเขาชำระเงิน 1 เดือนเต็มแต่กลับใช้ เพียงแค่ครึ่งหนึ่ง การสมัครใช้บริการครึ่งหนึ่งของเดือน ($1) จะมีผลกับ การสมัครใช้บริการ เนื่องจากการสมัครสมาชิกใหม่มีราคา $36/ปี เขาจึงจะได้รับวันที่ 1/36 รวม 1 ปีเข้ากับระยะเวลาการสมัคร (ประมาณ 10 วัน) ดังนั้น แซมไวส์ การเรียกเก็บเงินครั้งถัดไปจะเป็น 1 ปีและ 10 วันนับจากวันนี้ในราคา $36 หลังจากนั้น เรียกเก็บเงิน $36 ต่อปีหลังจากนั้น

เมื่อเลือกโหมดตามสัดส่วน อย่าลืมอ่าน คำแนะนำในการเปลี่ยนสินค้า

ทริกเกอร์การเปลี่ยนแปลงการสมัครใช้บริการในแอป

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

Kotlin

val offerToken = productDetails
        .getSubscriptionOfferDetails(selectedOfferIndex)
        .getOfferToken()

val billingParams = BillingFlowParams.newBuilder().setProductDetailsParamsList(
       listOf(
           BillingFlowParams.ProductDetailsParams.newBuilder()
               .setProductDetails(productDetails)
               .setOfferToken(offerToken)
               .build()
       )
       ).setSubscriptionUpdateParams(
           BillingFlowParams.SubscriptionUpdateParams.newBuilder()
               .setOldPurchaseToken("old_purchase_token")
               .setSubscriptionReplacementMode(
                 BillingFlowParams.ReplacementMode.CHARGE_FULL_PRICE
               )
               .build()
       ).build()

billingClient.launchBillingFlow(
    activity,
    billingParams
   )
// ...

Java

String offerToken = productDetails
    .getSubscriptionOfferDetails(selectedOfferIndex)
    .getOfferToken();

BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
    .setProductDetailsParamsList(
        ImmuableList.of(
            ProductDetailsParams.newBuilder()
                // fetched via queryProductDetailsAsync
                .setProductDetails(productDetails)
                // offerToken can be found in
                // ProductDetails=>SubscriptionOfferDetails
                .setOfferToken(offerToken)
                .build()))
    .setSubscriptionUpdateParams(
        SubscriptionUpdateParams.newBuilder()
            // purchaseToken can be found in Purchase#getPurchaseToken
            .setOldPurchaseToken("old_purchase_token")
            .setSubscriptionReplacementMode(ReplacementMode.CHARGE_FULL_PRICE)
            .build())
    .build();

BillingResult billingResult = billingClient.launchBillingFlow(activity, billingFlowParams);
// ...

คำแนะนำในการเปลี่ยน

ตารางต่อไปนี้แสดงสถานการณ์การคิดสัดส่วนที่แตกต่างกัน รวมถึงสิ่งที่เรา แนะนำสำหรับแต่ละสถานการณ์:

สถานการณ์ โหมดการเปลี่ยนอุปกรณ์ที่แนะนำ ผลลัพธ์
อัปเกรดเป็นระดับที่แพงกว่า CHARGE_PRORATED_PRICE ผู้ใช้จะได้รับสิทธิ์เข้าถึงทันทีขณะที่ใช้การเรียกเก็บเงินเท่าเดิม 6 เดือน
การดาวน์เกรดเป็นระดับที่มีราคาถูกลง DEFERRED ผู้ใช้จ่ายเงินสำหรับระดับที่แพงกว่าอยู่แล้ว จึงยังคง สิทธิ์เข้าถึงได้จนถึงวันที่เรียกเก็บเงินครั้งถัดไป
อัปเกรดขณะอยู่ในช่วงทดลองใช้ฟรีและใช้ช่วงทดลองใช้ต่อไป WITHOUT_PRORATION ผู้ใช้ยังคงมีสิทธิ์ในการทดลองใช้ฟรี แต่อัปเกรดเป็นระดับที่สูงขึ้นสำหรับ ระยะเวลาที่เหลือของการทดลอง
อัปเกรดขณะอยู่ในช่วงทดลองใช้ฟรี และสิ้นสุดการเข้าถึงช่วงทดลองใช้ฟรี CHARGE_PRORATED_PRICE ผู้ใช้จะได้รับสิทธิ์เข้าถึงระดับใหม่ทันที แต่จะไม่ได้รับสิทธิ์นั้นอีก มีช่วงทดลองใช้ฟรี

จัดการการซื้อการเปลี่ยนแปลงการสมัครใช้บริการ

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

ลักษณะการทำงานในแอปจะเหมือนกับการซื้อครั้งใหม่ แอปของคุณจะได้รับ ผลการซื้อใหม่ใน PurchasesUpdatedListener และ การซื้อใหม่พร้อมให้บริการใน queryPurchasesAsync

API สำหรับนักพัฒนาซอฟต์แวร์ Google Play แสดงผล linkedPurchaseToken ใน ทรัพยากรการสมัครใช้บริการเมื่อมีการซื้อมาแทนที่รายการที่มีอยู่ ข้อแรก ตรวจสอบว่าได้ยกเลิกโทเค็นที่ให้ไว้ใน linkedPurchaseToken เพื่อ ตรวจสอบว่าไม่มีการใช้โทเค็นเก่าเพื่อรับสิทธิ์เข้าถึงบริการของคุณ โปรดดู การอัปเกรด ดาวน์เกรด และลงชื่อสมัครใช้อีกครั้งสำหรับข้อมูลเกี่ยวกับการจัดการการอัปเกรด และดาวน์เกรดการซื้อ

เมื่อคุณได้รับโทเค็นการซื้อใหม่ ให้ทำตามขั้นตอนการยืนยันเดียวกับ กับการยืนยันโทเค็นการซื้อใหม่ อย่าลืมรับทราบข้อมูลเหล่านี้ การซื้อกับ BillingClient.acknowledgePurchase() จาก Google Play Billing Library หรือ Purchases.subscriptions:acknowledge จาก API สำหรับนักพัฒนาแอป Google Play

จัดการการเปลี่ยนอุปกรณ์ชั่วคราว

โหมดการเปลี่ยนทดแทนที่มีการเลื่อนเวลาช่วยให้คุณสามารถให้ผู้ใช้ใช้ ในแพ็กเกจเดิมก่อนที่จะเริ่มใช้แพ็กเกจใหม่

เมื่อคุณใช้ ReplacementMode.DEFERRED สำหรับการซื้อใหม่ queryPurchasesAsync() ส่งคืนโทเค็นการซื้อใหม่หลังจากการซื้อ ที่ยังคงเชื่อมโยงกับผลิตภัณฑ์เดิมจนกว่าจะมีการเปลี่ยนทดแทน จะเกิดขึ้นในวันที่ต่ออายุครั้งถัดไป โดยหลังจากนั้นผลิตภัณฑ์ใหม่จะ ส่งคืนแล้ว

ที่ผ่านมา คุณสามารถสร้างประสบการณ์ของผู้ใช้นี้ได้ด้วยการใช้ ProrationMode.DEFERRED แต่ ProrationMode.DEFERRED เลิกใช้งานแล้วกับ Play Billing Library 6. โปรดดูตารางต่อไปนี้เพื่อทำความเข้าใจว่าลักษณะการทำงาน ต่างออกไปดังนี้

เวลา

ProrationMode.DEFERRED (เลิกใช้งานแล้ว)

โหมดแทนที่ DEFERRED

หลังจากขั้นตอนการซื้อสำเร็จ (แอป)

มีการเรียกใช้ PurchasesUpdatedListener หลังจากการซื้อพร้อมสถานะว่าอัปเกรดหรือดาวน์เกรดสำเร็จ

การให้สิทธิ์แพ็กเกจเดิมจะดำเนินต่อไปจนกว่าจะถึงวันที่ต่ออายุครั้งถัดไป เพื่อให้แน่ใจว่าแอปให้การให้สิทธิ์ที่ถูกต้อง queryPurchasesAsync() จะส่งคืนออบเจ็กต์ Purchase ที่มีโทเค็นการซื้อต้นฉบับและการให้สิทธิ์ดั้งเดิมจนกว่าจะมีการแทนที่

โทเค็นการซื้อใหม่ยังไม่ปรากฏขึ้น จึงประมวลผลไม่ได้ในขณะนี้

ระบบจะเรียกใช้ PurchasesUpdatedListener หลังจากการซื้อพร้อมสถานะว่าอัปเกรดหรือดาวน์เกรดสำเร็จ

queryPurchasesAsync() จะส่งคืนการซื้อพร้อมด้วยโทเค็นการซื้อใหม่ทันที รวมถึงการให้สิทธิ์เดิมที่เชื่อมโยงกับโทเค็นดังกล่าว

โทเค็นการซื้อใหม่จะปรากฏขึ้น ดังนั้นจึงควรประมวลผลในขั้นนี้โดยพิจารณาถึงเวลาที่จะแทนที่ด้วย

ทันทีหลังจากขั้นตอนการซื้อสำเร็จ (แบ็กเอนด์)

ระบบจะไม่ส่ง RTDN SUBSCRIPTION_PURCHASED หลังขั้นตอนการซื้อ ระบบแบ็กเอนด์ยังไม่ทราบเกี่ยวกับการซื้อใหม่

ระบบจะส่ง RTDN SUBSCRIPTION_PURCHASED พร้อม product_id เก่าทันทีหลังขั้นตอนการซื้อสำหรับโทเค็นการซื้อใหม่

การเรียกใช้เมธอด purchases.subscriptionsv2.get ด้วยโทเค็นการซื้อแบบใหม่จะแสดงการซื้อที่มี "startTime" การระบุเวลาในการซื้อด้วยรายการโฆษณา 2 รายการ ดังนี้

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

ส่ง SUBSCRIPTION_EXPIRED สำหรับโทเค็นการซื้อเก่าแล้ว เมื่อเรียกใช้เมธอด purchases.subscriptionsv2.get ด้วยโทเค็นการซื้อเดิม ระบบจะแสดงว่าหมดอายุ (ระบบจะโอนการให้สิทธิ์สําหรับแพ็กเกจเดิมไปยังการซื้อครั้งใหม่ในช่วงเวลาที่เหลือ)

เมื่อมีการเปลี่ยน - การต่ออายุครั้งแรกหลังจากขั้นตอนการซื้อ (แอป)

queryPurchasesAsync() ส่งคืนออบเจ็กต์ Purchase ใหม่พร้อมโทเค็นการซื้อและการให้สิทธิ์ใหม่

ตอนนี้โทเค็นการซื้อใหม่แสดงแล้ว คุณจึงควรประมวลผล

queryPurchasesAsync() จะส่งคืนการซื้อพร้อมด้วยโทเค็นการซื้อใหม่ทันที รวมถึงการให้สิทธิ์ใหม่ที่เชื่อมโยงกับโทเค็นดังกล่าว

การซื้อใหม่ควรได้รับการประมวลผลแล้วเมื่อขั้นตอนการซื้อเสร็จสมบูรณ์ ดังนั้นแอปจึงไม่ควรดําเนินการใดๆ เพิ่มเติมนอกเหนือจากการตรวจสอบว่าได้ให้สิทธิ์ที่ถูกต้องแล้ว

เมื่อมีการเปลี่ยนทดแทน - การต่ออายุครั้งแรกหลังจากขั้นตอนการซื้อ (แบ็กเอนด์)

ตอนนี้ระบบสามารถประมวลผลและรับทราบการซื้อใหม่เมื่อมีการส่ง SUBSCRIPTION_RENEWED RTDN แรก

linkedPurchaseToken ในทรัพยากรการสมัครใช้บริการสามารถใช้เพื่อระบุว่าผู้ใช้รายใดในแบ็กเอนด์ของการสมัครใช้บริการ (หากมี) ควรอัปเดตการให้สิทธิ์ใหม่

การซื้อใหม่ได้รับการประมวลผลและรับทราบแล้วเมื่อมีการส่ง SUBSCRIPTION_PURCHASED RTDN สำหรับโทเค็นการซื้อใหม่ และบันทึกเป็น "startTime"

เมื่อใช้ ReplacementMode.DEFERRED การต่ออายุครั้งแรกจะเป็นไปตามลักษณะการทำงานมาตรฐานของการต่ออายุอื่นๆ และคุณไม่จำเป็นต้องจัดการตรรกะพิเศษสำหรับการเปลี่ยนเมื่อกิจกรรมนี้เกิดขึ้น

เมื่อเรียกใช้เมธอด purchases.subscriptionsv2.get ด้วยโทเค็นการซื้อแบบใหม่จะแสดงการซื้อที่มีรายการโฆษณา 2 รายการดังนี้

  • รายการหนึ่งแสดงถึงการให้สิทธิ์เดิม โดยมี "เวลาหมดอายุ" อยู่ในอดีตและไม่มีค่าที่กำหนดไว้สำหรับ DeferredItemReplacement
  • รายการหนึ่งแสดงถึงการให้สิทธิ์ใหม่ โดยจะมี "เวลาหมดอายุ" อยู่ในอนาคตและได้เปิด auto_renewing_enabled อยู่

นับจากนี้ ควรใช้ ReplacementMode.DEFERRED แทนการใช้รายการที่เลิกใช้งาน ProrationMode.DEFERRED เนื่องจากมีลักษณะการทำงานแบบเดียวกันเกี่ยวกับการให้สิทธิ์ เปลี่ยนแปลง แต่ให้วิธีจัดการการซื้อที่สอดคล้องกับ พฤติกรรมการซื้อใหม่อื่นๆ

การจัดการลูกค้า

เมื่อใช้การแจ้งเตือนนักพัฒนาซอฟต์แวร์แบบเรียลไทม์ คุณจะตรวจพบเหตุการณ์ ผู้ใช้ตัดสินใจยกเลิก เมื่อผู้ใช้ยกเลิกก่อนการสมัครใช้บริการ หมดอายุแล้ว คุณสามารถส่งข้อความ Push หรือข้อความในแอปเพื่อขอให้ผู้ซื้อ เพื่อสมัครอีกครั้ง

หลังจากที่ผู้ใช้ยกเลิกการสมัครใช้บริการแล้ว คุณจะลองดึงดูดผู้ใช้ให้กลับมาสมัครใช้บริการได้ ในแอปหรือผ่าน Play Store ตารางต่อไปนี้อธิบาย สถานการณ์การสมัครสมาชิกที่หลากหลายพร้อมด้วยการดำเนินการดึงเงินคืนที่เกี่ยวข้อง ข้อกำหนดของแอป

ก่อนที่การสมัครใช้บริการจะหมดอายุ หลังจากการสมัครใช้บริการหมดอายุ
ในแอป ใน Play Store ในแอป ใน Play Store
ฟีเจอร์ซื้อใจลูกค้า การสมัครใช้บริการในแอป คืนค่า การสมัครใช้บริการในแอป สมัครอีกครั้ง
ผู้ใช้ดำเนินการตามขั้นตอนการชำระเงิน ใช่ ไม่ได้ ได้ ใช่
การสมัครใช้บริการของผู้ใช้ยังคงเชื่อมโยงกับ SKU เดียวกัน ผู้ใช้สามารถลงชื่อสมัครใช้ SKU เดียวกันหรือ SKU อื่นได้ ใช่ ผู้ใช้สามารถลงชื่อสมัครใช้ SKU เดียวกันหรือ SKU อื่นได้ ใช่
สร้างโทเค็นการซื้อใหม่ ใช่ ไม่ได้ ได้ ใช่
เปิดใช้โดยค่าเริ่มต้น ไม่ ใช่ นักพัฒนาแอปทุกรายต้องได้รับการสนับสนุน ไม่

แอปที่ไม่มี Billing Library 2.0 ขึ้นไป: ไม่มี

แอปที่มี Billing Library 2.0 ขึ้นไป: ใช่ นักพัฒนาซอฟต์แวร์สามารถเลือกไม่ใช้ได้ในคอนโซล

เมื่อมีการเรียกเก็บเงินจากผู้ใช้

หากใช้ SKU เดียวกัน: วันที่สิ้นสุดช่วงเวลาที่เรียกเก็บเงินปัจจุบัน

หากใช้ SKU อื่น จะขึ้นอยู่กับโหมดตามสัดส่วน

สิ้นสุดช่วงเวลาที่เรียกเก็บเงินปัจจุบัน ทันที ทันที
ต้องมีการติดตั้งใช้งาน โปรดระบุ UI การลงชื่อสมัครใช้อีกครั้งในแอปของคุณ

ตรวจหาการเปลี่ยนแปลงในสถานะการสมัครใช้บริการ

ทำ Deep Link ไปยัง Play Store

ระบุ UI การลงชื่อสมัครใช้อีกครั้งในแอปของคุณ จัดการการซื้อนอกแอป

ก่อนที่การสมัครใช้บริการจะหมดอายุ - ในแอป

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

โดยส่วนใหญ่แล้ว คุณจะต้องเสนอราคาและ SKU เดียวกันกับที่ผู้ใช้เลือก เป็นสมาชิกแล้ว ดังนี้

  • เริ่มซื้อการสมัครใช้บริการใหม่ด้วย SKU เดิม
  • การสมัครใช้บริการใหม่จะแทนที่รายการเก่าและต่ออายุในวันหมดอายุเดียวกัน วันที่ การสมัครใช้บริการเดิมจะมีเครื่องหมายระบุว่าหมดอายุแล้วทันที
  • ตัวอย่างเช่น Achilles สมัครใช้บริการของแอป Example Music และ การสมัครใช้บริการจะหมดอายุในวันที่ 1 สิงหาคม ในวันที่ 10 กรกฎาคม เขากลับมาสมัครใช้บริการ การสมัครใช้บริการ 1 เดือนในราคาเดียวกันต่อเดือน การสมัครใช้บริการใหม่ จะคิดตามสัดส่วนด้วยเครดิตที่เหลือ ใช้งานได้ทันที และยังคง ต่ออายุวันที่ 1 สิงหาคม

หากคุณต้องการเสนอราคาอื่น เช่น ช่วงทดลองใช้ฟรีใหม่หรือ ส่วนลดดึงดูดผู้ใช้ คุณสามารถเสนอ SKU อื่นให้ผู้ใช้ได้ ดังนี้

  • เริ่มอัปเกรดหรือดาวน์เกรดด้วย SKU อื่น โดยใช้โหมดการแทนที่ WITHOUT_PRORATION
  • การสมัครใช้บริการใหม่จะแทนที่รายการเก่าและต่ออายุในวันหมดอายุเดียวกัน วันที่ ระบบจะเรียกเก็บเงินผู้ใช้ตามราคาของ SKU ใหม่ ซึ่งรวมถึง ราคาช่วงแนะนำในวันที่หมดอายุเดิม หากการสมัครใช้บริการเดิม สร้างขึ้นโดยใช้รหัสบัญชีที่ปรับให้ยากต่อการอ่าน (Obfuscate) แล้ว รหัสเดียวกันควรถูกส่งผ่าน เป็น BillingFlowParams เพื่ออัปเกรดและดาวน์เกรด
  • ตัวอย่างเช่น Achilles สมัครใช้บริการแอป Example Music และ การสมัครใช้บริการจะหมดอายุในวันที่ 1 สิงหาคม ในวันที่ 10 กรกฎาคม เขากลับมาสมัครใช้บริการ การสมัครใช้บริการรายปีในราคาช่วงแนะนำ การสมัครใช้บริการใหม่ มีการใช้งานทันที และระบบจะเรียกเก็บเงินผู้ใช้ตามราคาช่วงแนะนำในวันที่ 1 สิงหาคม
  • หากคุณตัดสินใจรวมช่วงทดลองใช้ฟรีหรือราคาช่วงแนะนำไว้ใน SKU แบบซื้อใจลูกค้า ตรวจสอบว่าผู้ใช้มีสิทธิ์โดยยกเลิกการเลือก อนุญาตให้ทดลองใช้ฟรี 1 รายการต่อแอปใน Google Play Console ซึ่ง จำกัดให้ผู้ใช้ได้รับช่วงทดลองใช้ฟรี 1 รายการต่อแอป

เมื่อคุณได้รับโทเค็นการซื้อ ประมวลผลการซื้อ เช่นเดียวกับที่คุณ กับการสมัครใช้บริการใหม่ นอกจากนี้ API สำหรับนักพัฒนาซอฟต์แวร์ Google Play แสดงผล linkedPurchaseToken ในทรัพยากรการสมัครใช้บริการ อย่าลืม ทำให้โทเค็นไม่ถูกต้องที่ระบุ ใน linkedPurchaseToken เพื่อให้แน่ใจว่าจะไม่มีการใช้โทเค็นเก่าในการ เข้าถึงบริการของคุณ

ก่อนที่การสมัครใช้บริการจะหมดอายุ - ใน Play Store

ขณะที่การสมัครใช้บริการถูกยกเลิกแต่ยังคงใช้งานได้ ผู้ใช้สามารถคืนค่า ในศูนย์การสมัครใช้บริการของ Google Play โดยคลิก สมัครใช้บริการอีกครั้ง (เดิมเรียกว่ากู้คืน) คงการสมัครใช้บริการเดิมไว้ และโทเค็นการซื้อ

วันที่ ส่วนการสมัครใช้บริการในแอป Google Play Store ที่แสดง
            ยกเลิกการสมัครใช้บริการแล้วโดยใช้ปุ่มสมัครอีกครั้ง
รูปที่ 8 บัญชี > การสมัครใช้บริการใน แอป Google Play Store ซึ่งแสดงการสมัครใช้บริการที่ยกเลิกแล้วพร้อม ปุ่มสมัครใช้บริการอีกครั้ง

ดูข้อมูลเพิ่มเติมเกี่ยวกับการกู้คืนการสมัครใช้บริการได้ที่การกู้คืน

หลังการสมัครใช้บริการหมดอายุ - ในแอป

คุณอนุญาตให้สมาชิกที่หมดอายุแล้วสมัครใช้บริการอีกครั้งภายในแอปได้โดยสมัคร ขั้นตอนการซื้อไอเทมในแอปเหมือนกับ ของสมาชิกใหม่ โปรดทราบ ดังต่อไปนี้:

  • หากต้องการเสนอส่วนลดให้ผู้ใช้ คุณอาจต้องเสนอรหัสผลิตภัณฑ์ด้วย ราคาพิเศษสำหรับการสมัครใช้บริการ หรือที่เรียกว่า SKU สำหรับซื้อของ คุณสามารถให้ข้อเสนอในแอปหรือแจ้งให้ผู้ใช้ทราบ ข้อเสนอนอกแอป เช่น ในอีเมล
  • หากต้องการเริ่มการสมัครใช้บริการแบบดึงดูดผู้ใช้ ให้เปิดขั้นตอนการซื้อใน แอป Android ที่ใช้ Google Play Billing Library นี่เหมือนเดิม ประมวลผลเช่นเดียวกับการสมัครใช้บริการใหม่ แต่คุณพิจารณา SKU ที่ผู้ใช้สามารถใช้ได้
  • หากคุณตัดสินใจรวมช่วงทดลองใช้ฟรีหรือราคาช่วงแนะนำในการดึงดูดผู้ใช้ให้กลับมา SKU โปรดตรวจสอบว่าผู้ใช้มีสิทธิ์โดยยกเลิกการเลือก อนุญาตให้ทดลองใช้ฟรี 1 รายการต่อแอปใน Google Play Console ซึ่ง จำกัดให้ผู้ใช้ได้รับช่วงทดลองใช้ฟรี 1 รายการต่อแอป
  • หากผู้ใช้สมัครใช้บริการ SKU เดิมอีกครั้ง ผู้ใช้จะไม่มีสิทธิ์อีกต่อไป สำหรับช่วงทดลองใช้ฟรีหรือราคาช่วงแนะนำ ตรวจสอบว่า UI แสดงข้อความนี้

เมื่อคุณได้รับโทเค็นการซื้อ ประมวลผลการซื้อ เช่นเดียวกับที่คุณ กับการสมัครใช้บริการใหม่ คุณจะไม่ได้รับlinkedPurchaseToken ในแหล่งข้อมูลการสมัครใช้บริการ

หลังการสมัครใช้บริการหมดอายุ - ใน Play Store

หากเปิดใช้ ผู้ใช้จะสมัครใช้บริการ SKU เดิมอีกครั้งได้สูงสุด 1 ปีหลังจาก หมดอายุโดยคลิกสมัครอีกครั้งในการสมัครใช้บริการ Google Play การดำเนินการนี้จะสร้างการสมัครใช้บริการและโทเค็นการซื้อใหม่

วันที่ ส่วนการสมัครใช้บริการในแอป Google Play Store ที่แสดง
            การสมัครใช้บริการที่ยกเลิกและหมดอายุซึ่งมีการสมัครอีกครั้งและนำออก
            ปุ่ม
รูปที่ 9 บัญชี > การสมัครใช้บริการ ในแอป Google Play Store ที่แสดงการยกเลิกและหมดอายุแล้ว การสมัครใช้บริการด้วยฟีเจอร์สมัครอีกครั้งและนําออก

การสมัครใช้บริการใหม่ถือเป็นการซื้อนอกแอป ดังนั้นอย่าลืมดำเนินการต่อไปนี้ ปฏิบัติตามแนวทางปฏิบัติแนะนำสำหรับ จัดการกับการซื้อจากภายนอกแอป

โปรโมตการสมัครใช้บริการ

คุณสามารถสร้างรหัสโปรโมชันเพื่อมอบช่วงทดลองใช้ฟรีที่นานขึ้นให้กับผู้ใช้บางราย กับการสมัครใช้บริการที่มีอยู่ ดูข้อมูลเพิ่มเติมได้ที่ รหัสโปรโมชัน

สำหรับช่วงทดลองใช้ฟรี Google Play จะยืนยันว่าผู้ใช้มีวิธีการชำระเงินที่ถูกต้อง ก่อนจะเริ่มช่วงทดลองใช้ฟรี ผู้ใช้บางรายอาจเห็นการยืนยันนี้ เพื่อระงับหรือเรียกเก็บเงินในวิธีการชำระเงิน วงเงินที่กันไว้ชั่วคราวหรือการเรียกเก็บเงินนี้ ชั่วคราวและมีการดึงเงินคืนหรือคืนเงินในภายหลัง

หลังจากสิ้นสุดระยะทดลอง ระบบจะเรียกเก็บเงินจากวิธีการชำระเงินของผู้ใช้เป็นจำนวน ค่าบริการเต็มจำนวน

หากผู้ใช้ยกเลิกการสมัครใช้บริการเมื่อใดก็ตามระหว่างช่วงทดลองใช้ฟรี การสมัครใช้บริการจะยังคงมีผลต่อไปจนกว่าจะสิ้นสุดช่วงทดลองใช้ และจะไม่มีผล ระบบจะเรียกเก็บเงินเมื่อช่วงทดลองใช้ฟรีสิ้นสุดลง

ยกเลิก คืนเงิน หรือเพิกถอน

คุณสามารถใช้ API สำหรับนักพัฒนาแอป Google Play ถึง ยกเลิก การคืนเงิน หรือ เพิกถอน การสมัครใช้บริการ ฟังก์ชันนี้มีให้บริการใน Google Play Console

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

ตารางต่อไปนี้แสดงความแตกต่างระหว่างการยกเลิก การคืนเงิน และ เพิกถอน

หยุดการต่ออายุ คืนเงิน เพิกถอนสิทธิ์เข้าถึง
ยกเลิก ทราบ ไม่ได้ ไม่
คืนเงิน ไม่ ทราบ ไม่
เพิกถอน ทราบ ทราบ ทราบ

เลื่อนการเรียกเก็บเงินสำหรับสมาชิก

คุณสามารถเลื่อนวันเรียกเก็บเงินครั้งถัดไปสำหรับสมาชิกแบบต่ออายุใหม่อัตโนมัติได้โดยใช้ Purchases.subscriptions:defer จาก Google Play Developer API ในระหว่างช่วงการเลื่อนเวลา ผู้ใช้ สมัครรับข้อมูลเนื้อหาของคุณโดยมีสิทธิ์เข้าถึงแบบเต็ม แต่ไม่มีการเรียกเก็บเงิน ระบบจะอัปเดตวันที่ต่ออายุการสมัครใช้บริการเพื่อให้ตรงกับวันที่ใหม่

สำหรับแพ็กเกจแบบชำระเงินล่วงหน้า คุณสามารถใช้ Defer Billing API เพื่อเลื่อนวันที่หมดอายุได้

การเรียกเก็บเงินที่มีการเลื่อนเวลาช่วยให้คุณสามารถทำสิ่งต่อไปนี้

  • ให้ผู้ใช้เข้าถึงฟรีเป็นข้อเสนอพิเศษ เช่น ให้ใช้งานฟรี 1 สัปดาห์ ซื้อภาพยนตร์
  • ให้ลูกค้าเข้าถึงได้ฟรีเพื่อเป็นสัญลักษณ์แห่งความปรารถนาดี

การเรียกเก็บเงินสามารถเลื่อนออกไปได้ตั้งแต่ 1 วันไปจนถึง 1 ปี ต่อการเรียก API หากต้องการเลื่อนการเรียกเก็บเงินออกไปอีก คุณสามารถเรียกใช้ API อีกครั้งได้ ก่อนวันที่เรียกเก็บเงินใหม่

ตัวอย่างเช่น Darcy สมัครรับข้อมูลรายเดือนสำหรับเนื้อหาออนไลน์สำหรับ แอปตกปลารายไตรมาส ปกติแล้วเธอจะถูกเรียกเก็บเงิน £1.25 สำหรับแต่ละรายการ เดือน ในเดือนมีนาคม เธอได้ร่วมตอบแบบสำรวจออนไลน์สำหรับผู้เผยแพร่แอป ผู้เผยแพร่โฆษณาให้รางวัลแก่เธอฟรี 6 สัปดาห์โดยเลื่อนการชำระเงินครั้งถัดไป จนถึงวันที่ 15 พฤษภาคม ซึ่งนับเป็น 6 สัปดาห์หลังจากวันที่เรียกเก็บเงินที่กำหนดไว้ก่อนหน้านี้ ของวันที่ 1 เมษายน Darcy จะไม่ถูกเรียกเก็บเงินสำหรับเดือนเมษายนหรือต้นเดือนพฤษภาคม และจะยัง เข้าถึงเนื้อหาได้ ในวันที่ 15 พฤษภาคม เธอจะเรียกเก็บเงินในราคาปกติ £1.25 ค่าบริการสำหรับเดือนนั้น วันที่ต่ออายุครั้งถัดไปคือวันที่ 15 มิถุนายน

เมื่อเลื่อนเวลาไปข้างหน้า คุณอาจต้องแจ้งให้ผู้ใช้ทราบทางอีเมลหรือภายในแอป เพื่อแจ้งให้ทราบว่าวันที่เรียกเก็บเงินมีการเปลี่ยนแปลง

การจัดการกับการปฏิเสธการชำระเงิน

หากมีปัญหาเกี่ยวกับการชำระเงินสำหรับการต่ออายุการสมัครใช้บริการ Google จะ พยายามต่ออายุการสมัครใช้บริการเป็นระยะๆ ก่อนยกเลิก ระยะเวลาการกู้คืนนี้อาจรวมถึงระยะเวลาผ่อนผัน ตามด้วยการระงับบัญชี 6 เดือน ในระหว่างนี้ Google จะส่งอีเมลแจ้งเตือนของผู้ใช้ แจ้งให้อัปเดตวิธีการชำระเงิน

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

หลังจากระยะเวลาผ่อนผันสิ้นสุดลง การสมัครใช้บริการจะเข้าสู่บัญชี การคงไว้ชั่วคราว ระหว่าง การระงับบัญชี คุณควรตรวจสอบว่าผู้ใช้ไม่มีสิทธิ์ในการเข้าถึง การให้สิทธิ์จากการสมัครใช้บริการ

คุณสามารถระบุระยะเวลาผ่อนผันของแพ็กเกจเริ่มต้นแบบต่ออายุใหม่อัตโนมัติแต่ละรายการและ การระงับบัญชีใน Google Play Console การระบุความยาวที่น้อยกว่า ค่าเริ่มต้นอาจลดจำนวนการสมัครใช้บริการที่กู้คืนจากการชำระเงินได้ การปฏิเสธ

เพื่อเพิ่มโอกาสในการกู้คืนการสมัครใช้บริการในช่วงที่มีการปฏิเสธการชำระเงิน คุณสามารถแจ้งให้ผู้ใช้ทราบเกี่ยวกับปัญหาการชำระเงินและขอให้แก้ไข

คุณสามารถดำเนินการนี้ด้วยตัวเอง ตามที่อธิบายไว้ในระยะเวลาผ่อนผัน ระยะเวลา และการระงับบัญชี หรือคุณสามารถใช้ API การรับส่งข้อความในแอปที่ Google แสดง ข้อความไปยังผู้ใช้ในแอปของคุณ

การรับส่งข้อความในแอป

หากเปิดใช้การรับส่งข้อความในแอปกับ InAppMessageCategoryId.TRANSACTIONAL Google Play จะแสดงข้อความแจ้งผู้ใช้ในช่วงระยะเวลาผ่อนผันและการระงับบัญชีครั้งเดียว ต่อวัน และให้โอกาสผู้ใช้ในการแก้ไขการชำระเงินโดยไม่ต้องออกจากแอป

วันที่ แถบแสดงข้อความแจ้งเตือนผู้ใช้ให้แก้ไขการชำระเงิน
รูปที่ 20 แถบแสดงข้อความแจ้งเตือนผู้ใช้ให้แก้ไขการชำระเงิน

เราขอแนะนำให้คุณเรียกใช้ API นี้ทุกครั้งที่ผู้ใช้เปิดแอปเพื่อระบุ ควรแสดงข้อความหรือไม่

หากผู้ใช้กู้คืนการสมัครใช้บริการสำเร็จ คุณจะได้รับรหัสการตอบกลับ SUBSCRIPTION_STATUS_UPDATED พร้อมกับโทเค็นการซื้อ จากนั้นคุณควรใช้โทเค็นการซื้อนี้เพื่อเรียก API สำหรับนักพัฒนาซอฟต์แวร์ Google Play และรีเฟรชสถานะการสมัครใช้บริการในแอปของคุณ

ผสานรวมการรับส่งข้อความในแอป

หากต้องการแสดงข้อความในแอปต่อผู้ใช้ ให้ใช้ BillingClient.showInAppMessages()

ต่อไปนี้คือตัวอย่างของการทริกเกอร์โฟลว์การรับส่งข้อความในแอป

Kotlin

val inAppMessageParams = InAppMessageParams.newBuilder()
        .addInAppMessageCategoryToShow(InAppMessageCategoryId.TRANSACTIONAL)
        .build()

billingClient.showInAppMessages(activity,
        inAppMessageParams,
        object : InAppMessageResponseListener() {
            override fun onInAppMessageResponse(inAppMessageResult: InAppMessageResult) {
                if (inAppMessageResult.responseCode == InAppMessageResponseCode.NO_ACTION_NEEDED) {
                    // The flow has finished and there is no action needed from developers.
                } else if (inAppMessageResult.responseCode
                        == InAppMessageResponseCode.SUBSCRIPTION_STATUS_UPDATED) {
                    // The subscription status changed. For example, a subscription
                    // has been recovered from a suspend state. Developers should
                    // expect the purchase token to be returned with this response
                    // code and use the purchase token with the Google Play
                    // Developer API.
                }
            }
        })

Java

InAppMessageParams inAppMessageParams = InAppMessageParams.newBuilder()
        .addInAppMessageCategoryToShow(InAppMessageCategoryId.TRANSACTIONAL)
        .build();

billingClient.showInAppMessages(activity,
        inAppMessageParams,
        new InAppMessageResponseListener() {
            @Override
            public void onInAppMessageResponse(InAppMessageResult inAppMessageResult) {
                if (inAppMessageResult.responseCode
                        == InAppMessageResponseCode.NO_ACTION_NEEDED) {
                    // The flow has finished and there is no action needed from developers.
                } else if (inAppMessageResult.responseCode
                        == InAppMessageResponseCode.SUBSCRIPTION_STATUS_UPDATED) {
                    // The subscription status changed. For example, a subscription
                    // has been recovered from a suspend state. Developers should
                    // expect the purchase token to be returned with this response
                    // code and use the purchase token with the Google Play
                    // Developer API.
                }
            }
        });

จัดการธุรกรรมที่รอดำเนินการ

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

การเปลี่ยนแปลงสถานะการสมัครใช้บริการสำหรับการซื้อครั้งแรกที่มีธุรกรรมที่รอดำเนินการคือ ตรงไปตรงมา แอปของคุณจะได้รับPurchaseพร้อมสถานะ PENDING เมื่อ ผู้ใช้เริ่มธุรกรรมที่รอดำเนินการ เมื่อธุรกรรมเสร็จสมบูรณ์ แอปจะได้รับPurchaseอีกครั้งโดยอัปเดตสถานะเป็น PURCHASED ต ส่งข้อความ SubscriptionNotification ประเภทSUBSCRIPTION_PURCHASEDแล้ว ลงในไคลเอ็นต์ RTDN ของคุณ ทำตามขั้นตอนปกติเพื่อยืนยันการซื้อ ผู้ใช้ที่เข้าถึงเนื้อหาและรับทราบการซื้อ หากธุรกรรม หมดอายุหรือถูกยกเลิก ข้อความ SubscriptionNotification ที่มีประเภท ระบบได้ส่ง SUBSCRIPTION_PENDING_PURCHASE_CANCELED ไปยังไคลเอ็นต์ RTDN ของคุณแล้ว ในกรณีดังกล่าว ผู้ใช้ไม่ควรได้รับสิทธิ์ในการเข้าถึงเนื้อหานั้นเลย

การเติมเงิน อัปเกรด หรือดาวน์เกรดโดยมีธุรกรรมที่รอดำเนินการเกี่ยวข้องกับการเปลี่ยนแปลงสถานะ สำหรับการสมัครใช้บริการทั้งเก่าและใหม่ เมื่อผู้ใช้เริ่มการรอดำเนินการ การเติมเงิน อัปเกรด หรือดาวน์เกรดธุรกรรม แอปของคุณจะได้รับ Purchase สำหรับ การสมัครใช้บริการเดิมที่มีออบเจ็กต์ PendingPurchaseUpdate ในขณะนี้ ฟิลด์ ผู้ใช้ยังคงเป็นเจ้าของการสมัครใช้บริการเดิมและไม่ได้รับผู้ใช้ใหม่ ยังไม่ได้สมัครใช้บริการ กำลังโทรหา getProducts() และ getPurchaseToken() บน ออบเจ็กต์ PendingPurchaseUpdate แสดงรหัสผลิตภัณฑ์และโทเค็นการซื้อของ การสมัครใช้บริการใหม่กัน เมื่อธุรกรรมเสร็จสมบูรณ์ แอปของคุณจะได้รับ Purchase ที่มีการตั้งค่าโทเค็นการซื้อระดับบนสุดสำหรับการสมัครใช้บริการใหม่และ กำหนดสถานะเป็น PURCHASED ข้อความ SubscriptionNotification พร้อมประเภท ระบบได้ส่ง SUBSCRIPTION_PURCHASED ไปยังไคลเอ็นต์ RTDN ของคุณแล้ว ขณะนี้ คุณ ควรแทนที่โทเค็นการซื้อเดิมด้วยโทเค็นการซื้อใหม่และอัปเดต การเข้าถึงเนื้อหาของผู้ใช้ หากธุรกรรมหมดอายุหรือถูกยกเลิก SubscriptionNotification ข้อความที่มีประเภท ระบบได้ส่ง SUBSCRIPTION_PENDING_PURCHASE_CANCELED ไปยังไคลเอ็นต์ RTDN ของคุณแล้ว ในกรณีดังกล่าว ผู้ใช้ควรจะยังเข้าถึงเนื้อหาของการสมัครใช้บริการเดิมได้อยู่