หัวข้อนี้อธิบายวิธีจัดการเหตุการณ์ในวงจรการสมัครใช้บริการ เช่น การต่ออายุและการหมดอายุ รวมถึงอธิบายฟีเจอร์การสมัครใช้บริการเพิ่มเติม เช่น เสนอโปรโมชันและอนุญาตให้ผู้ใช้จัดการการสมัครใช้บริการของตนเอง
หากยังไม่ได้กำหนดค่าผลิตภัณฑ์ที่ต้องสมัครใช้บริการสำหรับแอป โปรดดูหัวข้อสร้างและกำหนดค่าผลิตภัณฑ์
ภาพรวมการสมัครใช้บริการ
การสมัครใช้บริการแสดงถึงชุดสิทธิประโยชน์ที่ผู้ใช้เข้าถึงได้ในช่วงระยะเวลาที่ระบุ เช่น การสมัครใช้บริการอาจให้สิทธิ์แก่ผู้ใช้ในการเข้าถึงบริการสตรีมมิงเพลง
คุณมีการสมัครใช้บริการหลายรายการภายในแอปเดียวกันได้ เพื่อแสดงชุดสิทธิประโยชน์ที่แตกต่างกัน หรือเพื่อแสดงชุดสิทธิประโยชน์เดียวที่มีระดับต่างกัน (เช่น ระดับ "Silver" และ "Gold")
คุณสามารถสร้างการกำหนดค่าหลายรายการสำหรับผลิตภัณฑ์การสมัครใช้บริการเดียวกันผ่านแพ็กเกจเริ่มต้นและข้อเสนอ เช่น คุณอาจสร้างข้อเสนอช่วงแนะนำสำหรับผู้ใช้ที่ไม่เคยสมัครใช้บริการแอปของคุณมาก่อน หรือสร้างข้อเสนอการอัปเกรดสำหรับผู้ใช้ที่สมัครใช้บริการอยู่แล้ว
ดูภาพรวมโดยละเอียดของผลิตภัณฑ์ที่ต้องสมัครใช้บริการ แพ็กเกจพื้นฐาน และข้อเสนอได้ที่เอกสารประกอบในศูนย์ช่วยเหลือของ Play Console
การผสานรวมแพ็กเกจแบบชำระเงินล่วงหน้า
แพ็กเกจแบบชำระเงินล่วงหน้าจะไม่ต่ออายุโดยอัตโนมัติเมื่อหมดอายุ หากต้องการขยายเวลาการให้สิทธิ์การสมัครใช้บริการโดยไม่หยุดชะงัก ผู้ใช้ต้องเติมเงินแพ็กเกจแบบชำระล่วงหน้าสำหรับการสมัครใช้บริการเดียวกัน
หากต้องการเติมเงิน ให้เปิดขั้นตอนการเรียกเก็บเงินเช่นเดียวกับการซื้อครั้งแรก คุณไม่จำเป็นต้องระบุว่าการซื้อเป็นการเติมเงิน
การเติมเงินแพ็กเกจแบบชำระเงินล่วงหน้าจะใช้CHARGE_FULL_PRICE
โหมดการเปลี่ยนทดแทนเสมอ และคุณไม่จำเป็นต้องตั้งค่าโหมดนี้อย่างชัดเจน
ระบบจะเรียกเก็บเงินจากผู้ใช้เต็มจำนวนสำหรับช่วงเวลาที่เรียกเก็บเงินทันที และขยายเวลาการให้สิทธิ์ของผู้ใช้ตามระยะเวลาที่ระบุในการเติมเงิน
หลังจากเติมเงินแล้ว ระบบจะอัปเดตช่องต่อไปนี้ในออบเจ็กต์ผลลัพธ์ Purchase
เพื่อให้แสดงการซื้อการเติมเงินครั้งล่าสุด
- รหัสคำสั่งซื้อ
- เวลาที่ซื้อ
- ลายเซ็น
- โทเค็นการซื้อ
- รับทราบแล้ว
ฟิลด์ Purchase
ต่อไปนี้จะมีข้อมูลเดียวกันกับที่พบในการซื้อครั้งแรกเสมอ
- ชื่อแพ็กเกจ
- สถานะการซื้อ
- ผลิตภัณฑ์
- การต่ออายุใหม่อัตโนมัติ
การตอบรับการซื้อแบบชำระล่วงหน้า
คุณต้องยอมรับแพ็กเกจแบบชำระเงินล่วงหน้าหลังจากซื้อเช่นเดียวกับการสมัครใช้บริการแบบต่ออายุใหม่อัตโนมัติ คุณต้องรับทราบทั้งการซื้อครั้งแรกและการเติมเงิน ดูข้อมูลเพิ่มเติมได้ที่การประมวลผลการซื้อ
เนื่องจากแพ็กเกจแบบชำระเงินล่วงหน้าอาจมีระยะเวลาสั้น คุณจึงควรรับทราบการซื้อโดยเร็วที่สุด
แพ็กเกจแบบชำระเงินล่วงหน้าที่มีระยะเวลา 1 สัปดาห์ขึ้นไปต้องได้รับการยอมรับภายใน 3 วัน
แพ็กเกจแบบชำระเงินล่วงหน้าที่มีระยะเวลาน้อยกว่า 1 สัปดาห์ต้องได้รับการยอมรับภายในครึ่งหนึ่งของระยะเวลาแพ็กเกจ ตัวอย่างเช่น นักพัฒนาแอปมีเวลา 1.5 วันในการรับทราบแพ็กเกจแบบชำระเงินล่วงหน้า 3 วัน
การผสานรวมการสมัครใช้บริการแบบผ่อนชำระ
การสมัครใช้บริการแบบผ่อนชำระคือการสมัครใช้บริการประเภทหนึ่งที่ผู้ใช้ชำระเงินค่าสมัครใช้บริการเป็นงวดๆ ในช่วงระยะเวลาหนึ่งแทนที่จะชำระเงินค่าสมัครใช้บริการทั้งหมดล่วงหน้า
ข้อควรพิจารณาเพิ่มเติมสำหรับการสมัครใช้บริการแบบผ่อนชำระ
- ประเทศที่พร้อมให้บริการ: ฟีเจอร์การสมัครใช้บริการแบบผ่อนชำระพร้อมให้บริการในบราซิล ฝรั่งเศส อิตาลี และสเปนเท่านั้น (โปรดตรวจสอบความพร้อมให้บริการล่าสุดในคอนโซล)
- การกำหนดราคา: เมื่อกำหนดราคาสำหรับการสมัครใช้บริการแบบผ่อนชำระใน Console ราคาจะแสดงถึงจำนวนเงินที่ชำระรายเดือน ซึ่งเมื่อรวมกับระยะเวลาผูกมัดที่ตั้งไว้ ก็จะเป็นยอดรวมสำหรับการสมัครใช้บริการในหน้าจอการซื้อ
- ระยะเวลาผูกมัด: ระยะเวลาทั้งหมดของการสมัครใช้บริการครั้งแรกที่ผูกมัด ซึ่งจะต้องชําระเงินรายเดือน ตัวอย่างเช่น หากแพ็กเกจเริ่มต้นมีระยะเวลาผูกมัด 15 เดือน ผู้ใช้จะต้องชำระเงินรายเดือน 15 ครั้งในช่วงระยะเวลาดังกล่าว
- การต่ออายุ: ในบริบทของการสมัครใช้บริการแบบผ่อนชำระ "การต่ออายุ" หมายถึงการสิ้นสุดระยะเวลาผูกมัด ไม่ว่าจะเป็นระยะเวลาผูกมัดเริ่มต้นหรือระยะเวลาผูกมัดต่อๆ ไป หลังจากลงชื่อสมัครใช้ครั้งแรกแล้ว การต่ออายุครั้งแรกจะเกิดขึ้นเมื่อครบระยะเวลาผูกมัดเริ่มต้น การต่ออายุครั้งต่อๆ ไปจะเกิดขึ้นหลังจากผ่านระยะเวลาการปฏิบัติตามข้อกำหนดแต่ละครั้ง ประเภทการต่ออายุสำหรับการสมัครใช้บริการแบบผ่อนชำระอาจเป็น "ต่ออายุใหม่อัตโนมัติแบบรายเดือน" หรือ "ต่ออายุใหม่อัตโนมัติในระยะเวลาเดิม" สำหรับ "ต่ออายุใหม่อัตโนมัติทุกเดือน" จะไม่มีภาระผูกมัดเพิ่มเติมและแพ็กเกจจะทำงานเหมือนการสมัครใช้บริการรายเดือนที่การเรียกเก็บเงินค่าสมัครใช้บริการรายเดือนแต่ละครั้งเป็นการต่ออายุ
- ระยะเวลาที่เรียกเก็บเงิน: ในบริบทของการสมัครใช้บริการแบบผ่อนชำระ หมายถึงช่วงเวลาที่เกิดซ้ำซึ่งมีการชําระเงินแต่ละครั้งตามที่ระบุไว้ในแพ็กเกจเริ่มต้น
- ลักษณะการทํางานของการเปลี่ยนแปลงแพ็กเกจเทียบกับการเปลี่ยนแปลงราคา: การเปลี่ยนแปลงราคาและการยกเลิกจะถือเป็นความมุ่งมั่นที่แน่วแน่ ซึ่งหมายความว่าหากผู้ใช้ต้องการยกเลิกหรือนักพัฒนาแอปต้องการเปลี่ยนราคา การเปลี่ยนแปลงจะมีผลเมื่อสิ้นสุดระยะเวลาผูกมัด สำหรับการเปลี่ยนแปลงแพ็กเกจ สัญญาผูกมัดจะไม่ถือเป็นสัญญาที่แน่นอน ซึ่งหมายความว่าคุณไม่จำเป็นต้องรอจนกว่าจะสิ้นสุดระยะเวลาการผูกมัดเพื่อเปลี่ยนแพ็กเกจ การเปลี่ยนแปลงจะมีผลทันทีหรือในวันที่ชำระเงินครั้งถัดไปโดยขึ้นอยู่กับโหมดการเปลี่ยนทดแทนที่ตั้งไว้
- การเปลี่ยนแปลงแพ็กเกจการสมัครใช้บริการเดียวกัน: ไม่อนุญาตให้เปลี่ยนแปลงแพ็กเกจจากแพ็กเกจเริ่มต้นแบบผ่อนชำระเป็นแพ็กเกจเริ่มต้นแบบไม่ผ่อนชำระของผลิตภัณฑ์การสมัครใช้บริการเดียวกัน
การแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอป (RTDN): ระบบจะส่ง
SUBSCRIPTION_CANCELLATION_SCHEDULED
RTDN ทันทีที่ผู้ใช้เริ่มยกเลิกเมื่อยังมีการชำระเงินเหลืออยู่ในช่วงระยะเวลาผูกมัด การยกเลิกจะอยู่ระหว่างรอดำเนินการและจะมีผลเมื่อสิ้นสุดระยะเวลาผูกมัดเท่านั้น จากนั้น หากผู้ใช้ไม่กู้คืน ระบบจะส่งSUBSCRIPTION_CANCELED
และSUBSCRIPTION_EXPIRED
RTDN เมื่อสิ้นสุดระยะเวลาผูกมัดการชำระคืน / การสร้างรายได้: การชำระคืนให้แก่นักพัฒนาแอปจะเกิดขึ้นเมื่อผู้ใช้ชำระเงินรายเดือน โดยขึ้นอยู่กับข้อกำหนดเดียวกันกับการสมัครใช้บริการอื่นๆ ทั้งหมด นักพัฒนาแอปจะไม่ได้รับการชำระเงินล่วงหน้าเมื่อผู้ใช้ลงชื่อสมัครใช้บริการแบบผ่อนชำระ
การเรียกเก็บเงินที่ขาดชำระ: หากผู้ใช้ไม่ชำระเงินค่าสมัครใช้บริการแบบผ่อนชำระ Google และผู้พัฒนาแอปจะไม่พยายามเรียกเก็บเงินที่ขาดชำระหรือค้างชำระจากผู้ใช้ ยกเว้นว่า Google อาจลองเรียกเก็บเงินเป็นระยะๆ ในช่วงระยะเวลาผ่อนผันที่เกี่ยวข้องหรือระยะเวลาการระงับบัญชีตามแนวทางการลองเรียกเก็บเงินตามปกติ Google จะไม่รับผิดชอบต่อนักพัฒนาแอปสำหรับการชำระเงินแบบผ่อนชำระที่เหลือค้างชำระ
ความพร้อมให้บริการของ Play Billing Library: ช่อง
installmentDetails
ใช้ได้กับ PBL 7 ขึ้นไปเท่านั้น สำหรับ PBL 5 ขึ้นไป ระบบจะแสดงการสมัครใช้บริการแบบผ่อนชำระโดยใช้queryProductDetails()
แต่การสมัครใช้บริการจะไม่รวมข้อมูลการผ่อนชำระโดยละเอียด เช่น จํานวนการชําระเงินตามสัญญาของแพ็กเกจ
ใช้ Deep Link เพื่ออนุญาตให้ผู้ใช้จัดการการสมัครใช้บริการ
แอปควรมีลิงก์ในหน้าจอการตั้งค่าหรือค่ากําหนดที่อนุญาตให้ผู้ใช้จัดการการติดตาม ซึ่งคุณรวมไว้ในรูปลักษณ์ที่ดูเป็นธรรมชาติของแอปได้
คุณสามารถใส่ Deep Link จากแอปไปยังศูนย์การสมัครใช้บริการของ Google Play สำหรับการสมัครใช้บริการที่ยังไม่หมดอายุ ซึ่งคุณระบุได้โดยใช้ช่อง subscriptionState
ของทรัพยากรการสมัครใช้บริการ
ด้วยเหตุนี้ คุณจึงใช้ Deep Link ไปยังศูนย์การสมัครใช้บริการของ Play Store ได้หลายวิธี
ลิงก์ไปยังศูนย์การติดตาม
ใช้ URL ต่อไปนี้เพื่อนำผู้ใช้ไปยังหน้าที่แสดงการติดตามทั้งหมด ดังที่แสดงในรูปภาพ 1 และ 2
https://play.google.com/store/account/subscriptions
Deep Link นี้อาจมีประโยชน์ในการช่วยผู้ใช้กู้คืนการสมัครใช้บริการที่ยกเลิกไปแล้วจากศูนย์การสมัครใช้บริการของ Play Store
ลิงก์ไปยังหน้าการจัดการการสมัครใช้บริการที่เฉพาะเจาะจง (แนะนำ)
หากต้องการลิงก์ไปยังหน้าการจัดการของการสมัครใช้บริการที่ยังไม่หมดอายุโดยตรง ให้ระบุชื่อแพ็กเกจและ productId
ที่เชื่อมโยงกับการสมัครใช้บริการที่ซื้อ หากต้องการระบุ productId
ของการสมัครใช้บริการที่มีอยู่แบบเป็นโปรแกรม ให้ค้นหาแบ็กเอนด์ของแอปหรือเรียกใช้ BillingClient.queryPurchasesAsync()
เพื่อดูรายการการสมัครใช้บริการที่เชื่อมโยงกับผู้ใช้รายใดรายหนึ่ง การสมัครใช้บริการแต่ละรายการจะมีproductId
ที่เกี่ยวข้องเป็นส่วนหนึ่งของข้อมูลสถานะการสมัครใช้บริการ
ออบเจ็กต์ SubscriptionPurchaseLineItem
แต่ละรายการที่เชื่อมโยงกับการซื้อการสมัครใช้บริการจะมีค่า productId
ที่เชื่อมโยงกับการสมัครใช้บริการที่ผู้ใช้ซื้อในรายการโฆษณานั้น
ใช้ URL ต่อไปนี้เพื่อนำผู้ใช้ไปยังหน้าจอการจัดการการสมัครใช้บริการที่เฉพาะเจาะจง โดยแทนที่ "your-sub-product-id" และ "your-app-package" ด้วย productId
และชื่อแพ็กเกจแอปตามลำดับ
https://play.google.com/store/account/subscriptions?sku=your-sub-product-id&package=your-app-package
จากนั้นผู้ใช้จะจัดการวิธีการชำระเงินและเข้าถึงฟีเจอร์ต่างๆ ได้ ซึ่งรวมถึงการยกเลิก การสมัครใช้บริการอีกครั้ง และการหยุดชั่วคราว
อนุญาตให้ผู้ใช้อัปเกรด ดาวน์เกรด หรือเปลี่ยนการสมัครใช้บริการ
คุณมอบตัวเลือกต่างๆ ให้กับสมาชิกปัจจุบันเพื่อเปลี่ยนแพ็กเกจการสมัครใช้บริการให้ตรงกับความต้องการของสมาชิกมากขึ้นได้ ดังนี้
- หากขายการสมัครใช้บริการหลายระดับ เช่น การสมัครใช้บริการ "พื้นฐาน" และ "พรีเมียม" คุณสามารถอนุญาตให้ผู้ใช้เปลี่ยนระดับได้โดยการซื้อแพ็กเกจเริ่มต้นหรือข้อเสนอของการสมัครใช้บริการอื่น
- คุณสามารถอนุญาตให้ผู้ใช้เปลี่ยนระยะเวลาการเรียกเก็บเงินปัจจุบัน เช่น เปลี่ยนจากแพ็กเกจรายเดือนเป็นรายปี
- นอกจากนี้ คุณยังอนุญาตให้ผู้ใช้สลับระหว่างแพ็กเกจแบบต่ออายุใหม่อัตโนมัติกับแบบชำระล่วงหน้าได้ด้วย
คุณสามารถกระตุ้นให้เกิดการเปลี่ยนแปลงเหล่านี้ได้โดยเสนอข้อเสนอการสมัครใช้บริการเพื่อมอบส่วนลดแก่ผู้ใช้ที่มีสิทธิ์ เช่น คุณอาจสร้างข้อเสนอที่ให้ส่วนลด 50% ในปีแรกเมื่อเปลี่ยนจากแพ็กเกจรายเดือนเป็นแพ็กเกจรายปี และจำกัดข้อเสนอนี้ไว้สำหรับผู้ใช้ที่สมัครใช้บริการแพ็กเกจรายเดือนซึ่งยังไม่ได้ซื้อข้อเสนอนี้ ดูข้อมูลเพิ่มเติมเกี่ยวกับเกณฑ์การมีสิทธิ์รับข้อเสนอได้ที่ศูนย์ช่วยเหลือ
รูปที่ 3 แสดงตัวอย่างแอปที่มี 3 แพ็กเกจ ได้แก่
แอปอาจแสดงหน้าจอที่คล้ายกับรูปที่ 3 ซึ่งให้ตัวเลือกแก่ผู้ใช้ในการเปลี่ยนการสมัครใช้บริการ ในทุกกรณี ผู้ใช้ควรทราบอย่างชัดเจนว่าตนใช้แพ็กเกจการสมัครใช้บริการใดอยู่ และมีตัวเลือกใดบ้างในการเปลี่ยนแพ็กเกจ
เมื่อผู้ใช้ตัดสินใจที่จะอัปเกรด ดาวน์เกรด หรือเปลี่ยนการสมัครใช้บริการ คุณต้องระบุโหมดการเปลี่ยนทดแทนซึ่งจะกำหนดวิธีใช้มูลค่าที่ปรับตามสัดส่วนของระยะเวลาการเรียกเก็บเงินแบบชําระเงินปัจจุบัน และเวลาที่จะเกิดการเปลี่ยนแปลงการมีสิทธิ์
โหมดการเปลี่ยนทดแทน
ตารางต่อไปนี้แสดงโหมดการเปลี่ยนทดแทนที่ใช้ได้และตัวอย่างการใช้งาน รวมถึงจำนวนการชำระเงินที่ถือว่าชำระแล้ว
โหมดการเปลี่ยนทดแทน |
คำอธิบาย |
ตัวอย่างการใช้งาน |
การชำระเงินตามสัญญาที่บันทึกว่าชำระแล้ว (สำหรับการแทนที่การสมัครใช้บริการแบบผ่อนชำระ) |
|
การสมัครใช้บริการจะอัปเกรดหรือดาวน์เกรดทันที ระบบจะปรับเวลาที่เหลือตามส่วนต่างของราคา และนำไปเป็นเครดิตสำหรับการสมัครใช้บริการใหม่โดยเลื่อนวันที่เรียกเก็บเงินครั้งถัดไปไปข้างหน้า นี่คือลักษณะการทำงานเริ่มต้น |
อัปเกรดเป็นแพ็กเกจที่ราคาแพงขึ้นโดยไม่ต้องชำระเงินเพิ่มเติมในทันที |
0 |
|
การสมัครใช้บริการจะอัปเกรดทันที และรอบการเรียกเก็บเงินจะยังคงเหมือนเดิม จากนั้นระบบจะเรียกเก็บเงินส่วนต่างราคาสำหรับระยะเวลาที่เหลือจากผู้ใช้ได้ หมายเหตุ: ตัวเลือกนี้ใช้ได้กับการอัปเกรดการสมัครใช้บริการเท่านั้น โดยที่ราคาต่อหน่วยเวลาจะเพิ่มขึ้น |
อัปเกรดเป็นแพ็กเกจที่ราคาแพงขึ้นโดยไม่มีการเปลี่ยนแปลงวันที่เรียกเก็บเงิน |
1 |
|
ระบบจะอัปเกรดหรือดาวน์เกรดการสมัครใช้บริการทันที และเรียกเก็บค่าสิทธิใหม่จากผู้ใช้ในราคาเต็มทันที ระบบจะคงมูลค่าที่เหลือจากการสมัครใช้บริการก่อนหน้าไว้สำหรับการให้สิทธิ์เดียวกัน หรือจะคิดตามสัดส่วนตามเวลาที่เปลี่ยนไปใช้การให้สิทธิ์อื่น หมายเหตุ: หากการสมัครใช้บริการใหม่มีช่วงทดลองใช้ฟรีหรือข้อเสนอช่วงแนะนำ ระบบจะเรียกเก็บเงินจากผู้ใช้เป็น 0 บาทหรือราคาของข้อเสนอช่วงแนะนำ (ขึ้นอยู่กับว่าข้อเสนอใดจะมีผล) ณ เวลาที่อัปเกรดหรือดาวน์เกรด |
อัปเกรดจากระยะเวลาการเรียกเก็บเงินที่สั้นลงเป็นระยะเวลาที่นานขึ้น |
1 (หมายเหตุ: 0 หากการสมัครใช้บริการใหม่มีช่วงทดลองใช้ฟรี) |
|
ระบบจะอัปเกรดหรือดาวน์เกรดการสมัครใช้บริการทันที และจะเรียกเก็บเงินในราคาใหม่เมื่อการสมัครใช้บริการต่ออายุ แต่รอบการเรียกเก็บเงินจะยังคงเหมือนเดิม |
อัปเกรดเป็นแพ็กเกจการสมัครใช้บริการที่สูงขึ้นโดยที่ยังใช้ระยะเวลาทดลองใช้ที่เหลืออยู่ได้ |
0 |
|
การสมัครใช้บริการจะอัปเกรดหรือดาวน์เกรดก็ต่อเมื่อมีการต่ออายุการสมัครใช้บริการเท่านั้น แต่การซื้อใหม่จะออกทันทีพร้อมด้วยรายการต่อไปนี้ 2 รายการ
หมายเหตุ: สำหรับการสมัครใช้บริการแบบผ่อนชำระ การเปลี่ยนแปลงแพ็กเกจจะเกิดขึ้นเมื่อถึงวันที่ชำระเงินครั้งถัดไป |
ดาวน์เกรดเป็นแพ็กเกจที่ราคาไม่แพง |
1 |
หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้งานการอัปเขายและการได้ผู้ใช้กลับมาในรูปแบบต่างๆ ของข้อเสนอการอัปเกรดหรือดาวน์เกรด โปรดอ่านคู่มือข้อเสนอและโปรโมชัน
ตั้งค่าโหมดการเปลี่ยนทดแทนสำหรับการซื้อ
คุณสามารถใช้โหมดการเปลี่ยนทดแทนที่แตกต่างกันสำหรับการเปลี่ยนผ่านการสมัครใช้บริการประเภทต่างๆ โดยอิงตามค่ากําหนดและตรรกะทางธุรกิจ ส่วนนี้จะอธิบายวิธีตั้งค่าโหมดการเปลี่ยนทดแทนสำหรับการเปลี่ยนแปลงการสมัครใช้บริการและข้อจำกัดที่เกี่ยวข้อง
สมัครใช้บริการอีกครั้งหรือเปลี่ยนแพ็กเกจภายในการสมัครใช้บริการเดียวกัน
คุณสามารถระบุโหมดการเปลี่ยนทดแทนเริ่มต้นใน Google Play Console การตั้งค่านี้ช่วยให้คุณเลือกเวลาที่จะเรียกเก็บเงินจากสมาชิกปัจจุบันหากสมาชิกซื้อแพ็กเกจเริ่มต้นหรือข้อเสนออื่นสำหรับการสมัครใช้บริการเดียวกัน หรือสมัครใช้บริการอีกครั้งหลังจากการยกเลิก ตัวเลือกที่ใช้ได้มีดังนี้ เรียกเก็บเงินทันที ซึ่งเทียบเท่ากับ CHARGE_FULL_PRICE
และเรียกเก็บเงินในวันที่เรียกเก็บครั้งถัดไป ซึ่งเทียบเท่ากับ WITHOUT_PRORATION
การเปลี่ยนทดแทนเหล่านี้เป็นโหมดการเปลี่ยนทดแทนที่เกี่ยวข้องเพียงโหมดเดียวเมื่อเปลี่ยนแพ็กเกจเริ่มต้นภายในการสมัครใช้บริการเดียวกัน
เช่น หากคุณใช้ข้อเสนอคืนลูกค้าสำหรับแพ็กเกจเดิมหลังจากที่ผู้ใช้ยกเลิกแต่ก่อนที่การสมัครใช้บริการจะสิ้นสุดลง คุณจะประมวลผลการซื้อใหม่เป็นการซื้อปกติได้โดยไม่ต้องระบุค่าใดๆ ใน SubscriptionUpdateParams
ระบบจะใช้โหมดการเปลี่ยนทดแทนเริ่มต้นที่คุณกำหนดค่าไว้ในการสมัครใช้บริการ และจัดการการเปลี่ยนแพ็กเกจจากการซื้อเดิมเป็นการซื้อใหม่โดยอัตโนมัติ
เปลี่ยนแพ็กเกจสำหรับการสมัครใช้บริการต่างๆ หรือลบล้างโหมดการเปลี่ยนทดแทนเริ่มต้น
หากผู้ใช้เปลี่ยนผลิตภัณฑ์การสมัครใช้บริการ - ซื้อการสมัครใช้บริการอื่น หรือหากคุณต้องการลบล้างโหมดการเปลี่ยนทดแทนเริ่มต้นไม่ว่าด้วยเหตุผลใดก็ตาม ให้ระบุอัตราส่วนการแบ่งตามสัดส่วนที่รันไทม์โดยเป็นส่วนหนึ่งของพารามิเตอร์ขั้นตอนการซื้อ
โปรดคำนึงถึงข้อจำกัดต่อไปนี้เพื่อให้ระบุ SubscriptionUpdateParams
เป็นส่วนหนึ่งของการกำหนดค่าขั้นตอนการซื้อรันไทม์ได้อย่างถูกต้อง
- เมื่ออัปเกรด ดาวน์เกรด หรือเริ่มเปลี่ยนการสมัครใช้บริการเดียวกันเป็นแพ็กเกจแบบชำระเงินล่วงหน้าจากแพ็กเกจแบบชำระเงินล่วงหน้า แพ็กเกจแบบต่ออายุใหม่อัตโนมัติ หรือแพ็กเกจผ่อนชำระ โหมดการเปลี่ยนทดแทนที่อนุญาตเพียงอย่างเดียวคือ
CHARGE_FULL_PRICE
หากคุณระบุโหมดการเปลี่ยนทดแทนอื่น การซื้อจะไม่สำเร็จและข้อผิดพลาดจะแสดงต่อผู้ใช้ - เมื่อเปลี่ยนแพ็กเกจภายในการสมัครใช้บริการเดียวกันเป็นแพ็กเกจแบบต่ออายุใหม่อัตโนมัติจากแพ็กเกจแบบชำระล่วงหน้าหรือแพ็กเกจแบบต่ออายุใหม่อัตโนมัติ โหมดการแบ่งส่วนที่ใช้ได้คือ
CHARGE_FULL_PRICE
และWITHOUT_PRORATION
หากคุณระบุโหมดการแบ่งเวลาใช้งานแบบอื่น การซื้อจะดำเนินการไม่สำเร็จและระบบจะแสดงข้อผิดพลาดให้ผู้ใช้เห็น - ไม่อนุญาตให้เปลี่ยนแพ็กเกจภายในผลิตภัณฑ์ที่ต้องสมัครใช้บริการเดียวกันจากแพ็กเกจเริ่มต้นแบบผ่อนชำระเป็นแพ็กเกจเริ่มต้นแบบไม่ผ่อนชำระ
ตัวอย่างและลักษณะการทํางานของการเปลี่ยนทดแทน
โปรดลองดูสถานการณ์ต่อไปนี้เพื่อให้เข้าใจวิธีการทำงานของโหมดการแบ่งตามสัดส่วนแต่ละโหมด
Samwise สมัครใช้บริการเนื้อหาออนไลน์จากแอป Country Gardener โดยสมัครใช้บริการเนื้อหาเวอร์ชัน Tier 1 แบบรายเดือน ซึ่งเป็นเนื้อหาที่เป็นข้อความเท่านั้น การสมัครใช้บริการนี้คิดค่าบริการ $2 ต่อเดือน และจะต่ออายุในวันแรกของเดือน
ในวันที่ 15 เมษายน Samwise เลือกที่จะอัปเกรดการสมัครใช้บริการระดับ 2 เป็นเวอร์ชันรายปี ซึ่งรวมการอัปเดตวิดีโอและมีค่าใช้จ่าย $36 ต่อปี
เมื่ออัปเกรดการสมัครใช้บริการ นักพัฒนาแอปจะเลือกโหมดการแบ่งชำระ รายการต่อไปนี้อธิบายว่าโหมดการแบ่งตามสัดส่วนแต่ละโหมดส่งผลต่อการสมัครใช้บริการของ Samwise อย่างไร
WITH_TIME_PRORATION
การสมัครใช้บริการ Tier 1 ของ Samwise จะสิ้นสุดลงทันที เนื่องจากเขาชำระเงินเต็มเดือน (1-30 เมษายน) แต่อัปเกรดในช่วงกลางระยะเวลาการสมัครใช้บริการ ระบบจึงหักค่าสมัครใช้บริการครึ่งเดือน ($1) ไปใช้กับการสมัครใช้บริการใหม่ อย่างไรก็ตาม เนื่องจากค่าสมัครใช้บริการใหม่อยู่ที่ $36 ต่อปี ยอดคงเหลือเครดิต $1 จึงจ่ายได้เพียง 10 วัน (16-25 เมษายน) ดังนั้นในวันที่ 26 เมษายน ระบบจะเรียกเก็บเงิน $36 สำหรับค่าสมัครใช้บริการใหม่ และอีก $36 ในวันที่ 26 เมษายนของทุกปีต่อจากนี้
คุณควรเรียกใช้ PurchasesUpdatedListener
ของแอปทันทีที่การซื้อสำเร็จ และคุณจะเรียกข้อมูลการซื้อใหม่เป็นส่วนหนึ่งของการเรียกใช้ queryPurchasesAsync()
ได้ ระบบแบ็กเอนด์ของคุณจะได้รับSUBSCRIPTION_PURCHASED
การแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอปทันที
CHARGE_PRORATED_PRICE
คุณใช้โหมดนี้ได้เนื่องจากราคาการสมัครใช้บริการระดับ 2 ต่อหน่วยเวลา ($36/ปี = $3/เดือน) สูงกว่าราคาการสมัครใช้บริการระดับ 1 ต่อหน่วยเวลา ($2/เดือน) การสมัครใช้บริการ Tier 1 ของ Samwise จะสิ้นสุดลงทันที เนื่องจากเขาชำระเงินสำหรับทั้งเดือนแต่ใช้เพียงครึ่งเดือน ระบบจึงหักค่าสมัครใช้บริการครึ่งเดือน ($1) ไปใช้กับการสมัครใช้บริการใหม่ อย่างไรก็ตาม เนื่องจากการสมัครใช้บริการใหม่มีค่าใช้จ่าย $36/ปี 15 วันที่เหลือจึงมีค่าใช้จ่าย $1.50 ระบบจึงเรียกเก็บเงินส่วนต่าง $0.50 สำหรับการสมัครใช้บริการใหม่ ในวันที่ 1 พฤษภาคม ระบบจะเรียกเก็บเงิน Samwise 360 บาทสำหรับแพ็กเกจการสมัครใช้บริการใหม่ และเรียกเก็บอีก 360 บาทในวันที่ 1 พฤษภาคมของทุกปีหลังจากนั้น
คุณควรเรียกใช้ PurchasesUpdatedListener
ของแอปทันทีที่การซื้อสำเร็จ และคุณจะเรียกข้อมูลการซื้อใหม่เป็นส่วนหนึ่งของการเรียกใช้ queryPurchasesAsync()
ได้ ระบบแบ็กเอนด์ของคุณจะได้รับSUBSCRIPTION_PURCHASED
การแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอปทันที
WITHOUT_PRORATION
ระบบจะอัปเกรดการสมัครใช้บริการระดับ 1 ของ Samwise เป็นระดับ 2 ทันทีโดยไม่มีค่าใช้จ่ายเพิ่มเติม และในวันที่ 1 พฤษภาคม ระบบจะเรียกเก็บเงิน $36 สำหรับระดับการสมัครใช้บริการใหม่และอีก $36 ในวันที่ 1 พฤษภาคมของทุกปีต่อจากนี้
คุณควรเรียกใช้ PurchasesUpdatedListener
ของแอปทันทีที่การซื้อสำเร็จ และคุณจะเรียกข้อมูลการซื้อใหม่เป็นส่วนหนึ่งของการเรียกใช้ queryPurchasesAsync()
ได้ ระบบแบ็กเอนด์ของคุณจะได้รับSUBSCRIPTION_PURCHASED
การแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอปทันที
DEFERRED
การสมัครใช้บริการระดับ 1 ของ Samwise จะยังคงดำเนินต่อไปจนกว่าจะหมดอายุในวันที่ 30 เมษายน ในวันที่ 1 พฤษภาคม การสมัครใช้บริการระดับ 2 จะมีผล และระบบจะเรียกเก็บเงิน Samwise เป็นจำนวน $36 สำหรับแพ็กเกจการสมัครใช้บริการใหม่
คุณควรเรียกใช้ PurchasesUpdatedListener
ของแอปทันทีที่การซื้อสำเร็จ และคุณจะเรียกข้อมูลการซื้อใหม่เป็นส่วนหนึ่งของการเรียกใช้ queryPurchasesAsync()
ได้ ระบบแบ็กเอนด์ของคุณจะได้รับSUBSCRIPTION_PURCHASED
การแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอปทันที คุณควรดำเนินการซื้อในลักษณะเดียวกับที่ดำเนินการซื้อใหม่อื่นๆ ทั้งหมด ณ จุดนั้น โดยเฉพาะอย่างยิ่ง โปรดตรวจสอบว่าคุณรับทราบการซื้อใหม่ โปรดทราบว่าstartTime
ของการสมัครใช้บริการใหม่จะสร้างขึ้นทันทีที่การแทนที่มีผล ซึ่งจะเกิดขึ้นเมื่อการสมัครใช้บริการเก่าหมดอายุ เมื่อถึงจุดนั้น คุณจะได้รับ SUBSCRIPTION_RENEWED
RTDN สำหรับแพ็กเกจการสมัครใช้บริการใหม่ อ่านเพิ่มเติมเกี่ยวกับลักษณะการทํางานของ ReplacementMode.DEFERRED
ในจัดการการเปลี่ยนทดแทนที่เลื่อน
CHARGE_FULL_PRICE
การสมัครใช้บริการ Tier 1 ของ Samwise จะสิ้นสุดลงทันที การสมัครใช้บริการระดับ 2 ของเขาจึงเริ่มต้นขึ้นในวันนี้และระบบเรียกเก็บเงินจากเขาเป็นจำนวน $36 เนื่องจากเขาชำระเงินสำหรับทั้งเดือนแต่ใช้ไปเพียงครึ่งเดือน ระบบจึงหักค่าสมัครใช้บริการครึ่งเดือน ($1) ไปใช้กับการสมัครใช้บริการใหม่ เนื่องจากการสมัครใช้บริการใหม่มีค่าใช้จ่าย $36/ปี เขาจะได้รับเวลาเพิ่ม 1/36 ของปีในระยะเวลาการสมัครใช้บริการ (~10 วัน) ดังนั้น การเรียกเก็บเงินครั้งถัดไปของ Samwise จะเป็น 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 |
ผู้ใช้จะได้รับสิทธิ์เข้าถึงทันทีโดยยังคงใช้ระยะเวลาการเรียกเก็บเงินเดิม |
การดาวน์เกรดเป็นแพ็กเกจที่ราคาถูกลง | DEFERRED |
ผู้ใช้ชำระเงินสำหรับแพ็กเกจที่แพงกว่าแล้ว จึงมีสิทธิ์เข้าถึงต่อไปได้จนกว่าจะถึงวันที่เรียกเก็บเงินครั้งถัดไป |
การอัปเกรดขณะอยู่ในช่วงทดลองใช้ฟรีโดยคงช่วงทดลองใช้ไว้ | WITHOUT_PRORATION |
ผู้ใช้จะยังคงมีสิทธิ์เข้าถึงช่วงทดลองใช้ฟรี แต่ระบบจะอัปเกรดเป็นแพ็กเกจที่สูงขึ้นในช่วงทดลองใช้ที่เหลือ |
การอัปเกรดขณะอยู่ในช่วงทดลองใช้ฟรี - การสิ้นสุดสิทธิ์เข้าถึงช่วงทดลองใช้ฟรี | CHARGE_PRORATED_PRICE |
ผู้ใช้จะได้รับสิทธิ์เข้าถึงระดับใหม่ทันที แต่จะไม่มีช่วงทดลองใช้ฟรีอีกต่อไป |
จัดการการซื้อการเปลี่ยนแปลงการสมัครใช้บริการ
การเปลี่ยนแปลงแพ็กเกจถือเป็นการซื้อใหม่สำหรับข้อกำหนดและวัตถุประสงค์ทั้งหมด และควรได้รับการประมวลผลและรับทราบเช่นนั้นหลังจากขั้นตอนการเรียกเก็บเงินเสร็จสมบูรณ์ นอกจากการประมวลผลการซื้อใหม่อย่างเหมาะสมแล้ว คุณยังต้องเลิกใช้งานการซื้อที่จะเปลี่ยนทดแทนด้วย
ลักษณะการทํางานในแอปจะเหมือนกับการซื้อใหม่ แอปของคุณจะได้รับผลลัพธ์ของการซื้อใหม่ใน PurchasesUpdatedListener
และการซื้อใหม่จะพร้อมใช้งานใน queryPurchasesAsync
Google Play Developer API จะแสดงผล linkedPurchaseToken
ในทรัพยากรการสมัครใช้บริการเมื่อการซื้อเข้ามาแทนที่การสมัครใช้บริการที่มีอยู่ อย่าลืมทำให้โทเค็นที่ระบุใน linkedPurchaseToken
ใช้งานไม่ได้เพื่อให้มั่นใจว่าจะไม่มีการใช้โทเค็นเก่าเพื่อเข้าถึงบริการของคุณ ดูข้อมูลเกี่ยวกับการจัดการการซื้อการอัปเกรดและการดาวน์เกรดที่หัวข้อการอัปเกรด การดาวน์เกรด และการสมัครใช้บริการอีกครั้ง
เมื่อได้รับโทเค็นการซื้อใหม่ ให้ทำตามกระบวนการยืนยันเดียวกับการยืนยันโทเค็นการซื้อใหม่ อย่าลืมรับทราบการซื้อเหล่านี้ด้วย BillingClient.acknowledgePurchase()
จาก Google Play Billing Library หรือ Purchases.subscriptions:acknowledge
จาก Google Play Developer API
จัดการการเปลี่ยนทดแทนที่เลื่อนออกไป
โหมดการเปลี่ยนทดแทนแบบเลื่อนเวลาช่วยให้คุณอนุญาตให้ผู้ใช้ใช้สิทธิ์ที่เหลือในแพ็กเกจเดิมจนหมดก่อนเริ่มต้นใช้งานแพ็กเกจใหม่
เมื่อคุณใช้ ReplacementMode.DEFERRED สำหรับการซื้อใหม่ queryPurchasesAsync()
จะแสดงโทเค็นการซื้อใหม่หลังจากขั้นตอนการซื้อซึ่งจะยังคงเชื่อมโยงกับผลิตภัณฑ์เก่าจนกว่าการเปลี่ยนทดแทนแบบเลื่อนเวลาจะเกิดขึ้นในวันที่ต่ออายุครั้งถัดไป หลังจากนั้นจะมีการส่งคืนผลิตภัณฑ์ใหม่
ก่อนหน้านี้คุณสร้างประสบการณ์ของผู้ใช้แบบนี้ได้โดยใช้ ProrationMode.DEFERRED
ที่เลิกใช้งานแล้ว แต่ ProrationMode.DEFERRED
เลิกใช้งานแล้วใน Play Billing Library 6 ดูตารางต่อไปนี้เพื่อทำความเข้าใจความแตกต่างของลักษณะการทำงาน
เวลา |
ProrationMode.DEFERRED (เลิกใช้งานแล้ว) |
ReplacementMode.DEFERRED |
ทันทีที่ขั้นตอนการซื้อเสร็จสมบูรณ์ (แอป) |
สิทธิ์ในแพ็กเกจเดิมจะยังคงอยู่จนถึงวันที่ต่ออายุครั้งถัดไป โทเค็นการซื้อใหม่ไม่แสดงขึ้น จึงดำเนินการไม่ได้ในขณะนี้ |
โทเค็นการซื้อใหม่จะแสดงขึ้น ดังนั้นจึงควรประมวลผล ณ จุดนี้โดยพิจารณาว่าควรเปลี่ยนทดแทนเมื่อใด |
ทันทีที่ขั้นตอนการซื้อเสร็จสมบูรณ์ (แบ็กเอนด์) |
ระบบไม่ส่ง RTDN ของ SUBSCRIPTION_PURCHASED หลังจากขั้นตอนการซื้อ แบ็กเอนด์ยังไม่ทราบเกี่ยวกับการซื้อใหม่ |
ระบบจะส่ง RTDN ประเภท SUBSCRIPTION_PURCHASED ที่มี product_id เดิมทันทีหลังจากขั้นตอนการซื้อสําหรับโทเค็นการซื้อใหม่ การเรียกใช้เมธอด purchases.subscriptionsv2.get ด้วยโทเค็นการซื้อใหม่จะแสดงผลการซื้อที่มี "startTime" ซึ่งระบุเวลาซื้อพร้อมรายการโฆษณา 2 รายการ ดังนี้
SUBSCRIPTION_EXPIRED ส่งสำหรับโทเค็นการซื้อเก่า เมื่อเรียกใช้เมธอด purchases.subscriptionsv2.get ด้วยโทเค็นการซื้อเก่า ระบบจะแสดงว่าโทเค็นหมดอายุ (สิทธิ์สำหรับแพ็กเกจเก่าจะโอนไปยังการซื้อใหม่ตามระยะเวลาที่เหลือ) |
ในการเปลี่ยนทดแทน - การต่ออายุครั้งแรกหลังจากขั้นตอนการซื้อ (แอป) |
ตอนนี้ระบบแสดงโทเค็นการซื้อใหม่แล้ว จึงควรประมวลผล |
การซื้อใหม่ควรได้รับการประมวลผลแล้วเมื่อขั้นตอนการซื้อเสร็จสมบูรณ์ ดังนั้นแอปไม่ควรดำเนินการพิเศษใดๆ นอกเหนือจากการตรวจสอบว่าได้ให้สิทธิ์ที่เหมาะสมแล้ว |
ในการขออุปกรณ์เปลี่ยนทดแทน - การต่ออายุครั้งแรกหลังจากขั้นตอนการซื้อ (แบ็กเอนด์) |
ตอนนี้ระบบจะประมวลผลและรับทราบการซื้อใหม่ได้เมื่อมีการส่ง RTDN รายการแรกที่มีสถานะ SUBSCRIPTION_RENEWED
|
ระบบประมวลผลและรับทราบการซื้อใหม่เมื่อมีการส่ง RTDN ของ SUBSCRIPTION_PURCHASED สำหรับโทเค็นการซื้อใหม่และบันทึกเป็น "startTime" เมื่อใช้ ReplacementMode.DEFERRED การต่ออายุครั้งแรกจะเป็นไปตามลักษณะการทํางานมาตรฐานของการต่ออายุอื่นๆ และคุณไม่จําเป็นต้องจัดการตรรกะพิเศษสําหรับการเปลี่ยนทดแทนเมื่อเกิดเหตุการณ์นี้ เมื่อเรียกใช้เมธอด purchases.subscriptionsv2.get ด้วยโทเค็นการซื้อใหม่ ระบบจะแสดงการซื้อที่มีรายการโฆษณา 2 รายการ ดังนี้
|
คุณควรใช้ ReplacementMode.DEFERRED ตั้งแต่นี้เป็นต้นไปแทน ProrationMode.DEFERRED ที่เลิกใช้งานแล้ว เนื่องจากมีการทำงานแบบเดียวกันเกี่ยวกับการเปลี่ยนแปลงการให้สิทธิ์ แต่มีวิธีจัดการการซื้อที่สอดคล้องกับลักษณะการทำงานสำหรับการซื้อใหม่อื่นๆ มากกว่า
การจัดการลูกค้า
เมื่อใช้การแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอป คุณจะตรวจจับได้แบบเรียลไทม์เมื่อผู้ใช้ตัดสินใจยกเลิก เมื่อผู้ใช้ยกเลิก แต่ก่อนที่การสมัครใช้บริการจะหมดอายุ คุณสามารถส่งข้อความ Push หรือข้อความในแอปเพื่อขอให้ผู้ใช้สมัครใช้บริการอีกครั้ง
หลังจากผู้ใช้ยกเลิกการสมัครใช้บริการแล้ว คุณสามารถลองดึงดูดผู้ใช้ให้กลับมาได้ไม่ว่าจะในแอปหรือผ่าน Play Store ตารางต่อไปนี้อธิบายสถานการณ์การสมัครใช้บริการต่างๆ พร้อมกับการดึงดูดผู้ใช้ให้กลับมาที่เกี่ยวข้องและข้อกําหนดของแอป
ก่อนการสมัครใช้บริการจะหมดอายุ | หลังจากการสมัครใช้บริการหมดอายุ | |||
ในแอป | ใน Play Store | ในแอป | ใน Play Store | |
ฟีเจอร์การดึงดูดผู้ใช้กลับมา | การสมัครใช้บริการในแอป | คืนค่า | การสมัครใช้บริการในแอป | สมัครอีกครั้ง |
ผู้ใช้ทำตามขั้นตอนการชำระเงิน | ใช่ | ไม่ได้ | ได้ | ใช่ |
การสมัครใช้บริการของผู้ใช้จะยังคงเชื่อมโยงกับ 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 ใหม่ ซึ่งรวมถึงราคาช่วงแนะนำ (หากมี) ในวันที่หมดอายุเดิม หากการสมัครใช้บริการเดิมสร้างขึ้นโดยใช้รหัสบัญชีที่มีการสร้างความสับสน คุณควรส่งรหัสเดียวกันนั้นให้กับ
BillingFlowParams
เพื่ออัปเกรดและดาวน์เกรด - ตัวอย่างเช่น Achilles สมัครใช้บริการแอป Example Music และการสมัครใช้บริการจะหมดอายุในวันที่ 1 สิงหาคม ในวันที่ 10 กรกฎาคม เขาสมัครใช้บริการแบบรายปีในราคาช่วงแนะนำอีกครั้ง การสมัครใช้บริการใหม่จะใช้งานได้ทันที และระบบจะเรียกเก็บเงินจากผู้ใช้ในราคาช่วงแนะนำในวันที่ 1 สิงหาคม
- หากคุณตัดสินใจที่จะรวมช่วงทดลองใช้ฟรีหรือราคาช่วงแนะนำไว้ใน SKU สำหรับการดึงดูดผู้ใช้ให้กลับมา ให้ตรวจสอบว่าผู้ใช้มีสิทธิ์โดยยกเลิกการเลือกช่องอนุญาตให้ทดลองใช้ฟรีได้ 1 ครั้งต่อแอปใน Google Play Console ซึ่งจะจำกัดให้ผู้ใช้ทดลองใช้ฟรีได้ 1 ครั้งต่อแอป
เมื่อได้รับโทเค็นการซื้อแล้ว ให้ดำเนินการซื้อเช่นเดียวกับการสมัครใช้บริการใหม่ นอกจากนี้ Google Play Developer API จะแสดงผล linkedPurchaseToken
ในทรัพยากรการสมัครใช้บริการ อย่าลืมทำให้โทเค็นที่ระบุใน linkedPurchaseToken
ใช้งานไม่ได้ เพื่อให้มั่นใจว่าจะไม่มีการใช้โทเค็นเก่าเพื่อเข้าถึงบริการของคุณ
ก่อนการสมัครใช้บริการจะหมดอายุ - ใน Play Store
ขณะยกเลิกการสมัครใช้บริการแล้วแต่ยังใช้งานอยู่ ผู้ใช้สามารถคืนค่าการสมัครใช้บริการในศูนย์การสมัครใช้บริการของ Google Play ได้โดยคลิกสมัครใช้บริการอีกครั้ง (ก่อนหน้านี้คือกู้คืน) ซึ่งจะทำให้การสมัครใช้บริการและโทเค็นการซื้อเดิมอยู่เหมือนเดิม
ดูข้อมูลเพิ่มเติมเกี่ยวกับการคืนค่าการสมัครใช้บริการได้ที่การคืนค่า
หลังจากการสมัครใช้บริการหมดอายุ - ในแอป
คุณสามารถอนุญาตให้สมาชิกที่หมดอายุแล้วสมัครใช้บริการอีกครั้งภายในแอปได้โดยใช้ขั้นตอนการซื้อไอเทมที่ซื้อในแอปแบบเดียวกับที่ใช้สำหรับผู้สมัครใช้บริการใหม่ สิ่งที่ควรทราบมีดังนี้
- หากต้องการมอบส่วนลดให้ผู้ใช้ คุณอาจต้องระบุรหัสผลิตภัณฑ์ที่มีราคาพิเศษสำหรับการสมัครใช้บริการ ซึ่งเรียกอีกอย่างว่า SKU สำหรับการดึงดูดผู้ใช้กลับมา คุณสามารถแสดงข้อเสนอในแอป หรือแจ้งให้ผู้ใช้ทราบเกี่ยวกับข้อเสนอนอกแอป เช่น ในอีเมล
- หากต้องการเริ่มการสมัครใช้บริการเพื่อดึงดูดผู้ใช้ที่เลิกใช้งานให้กลับมา ให้เปิดขั้นตอนการซื้อในแอป Android โดยใช้ Google Play Billing Library กระบวนการนี้เหมือนกับการสมัครใช้บริการใหม่ แต่คุณกำหนด SKU ที่พร้อมให้บริการแก่ผู้ใช้ได้
- หากตัดสินใจที่จะรวมช่วงทดลองใช้ฟรีหรือราคาช่วงแนะนำไว้ใน SKU สำหรับการดึงดูดผู้ใช้กลับมา โปรดตรวจสอบว่าผู้ใช้มีสิทธิ์โดยยกเลิกการเลือกช่องอนุญาตให้ทดลองใช้ฟรีได้ 1 ครั้งต่อแอปใน Google Play Console ซึ่งจะจำกัดให้ผู้ใช้ทดลองใช้ฟรีได้ 1 ครั้งต่อแอป
- หากผู้ใช้สมัครใช้บริการ SKU เดียวกันอีกครั้ง ก็จะไม่มีสิทธิ์รับช่วงทดลองใช้ฟรีหรือราคาช่วงแนะนำอีกต่อไป ตรวจสอบว่า UI ของคุณแสดงข้อมูลนี้
เมื่อได้รับโทเค็นการซื้อแล้ว ให้ดำเนินการซื้อเช่นเดียวกับการสมัครใช้บริการใหม่ คุณจะไม่ได้รับ linkedPurchaseToken
ในทรัพยากรการสมัครใช้บริการ
หลังจากการสมัครใช้บริการหมดอายุ - ใน Play Store
หากเปิดใช้ ผู้ใช้จะสมัครใช้บริการ SKU เดิมอีกครั้งได้นานถึง 1 ปีหลังจากหมดอายุโดยคลิกสมัครใช้บริการอีกครั้งในศูนย์การสมัครใช้บริการของ Google Play ซึ่งจะสร้างโทเค็นการสมัครใช้บริการและการซื้อใหม่
การสมัครใช้บริการอีกครั้งถือเป็นการซื้อนอกแอป ดังนั้นโปรดปฏิบัติตามแนวทางปฏิบัติแนะนำสำหรับการจัดการการซื้อที่ดำเนินการนอกแอป
โปรโมตการสมัครใช้บริการ
คุณสร้างรหัสโปรโมชันเพื่อมอบช่วงทดลองใช้ฟรีที่ขยายเวลาให้แก่ผู้ใช้บางรายสำหรับการสมัครใช้บริการที่มีอยู่ได้ ดูข้อมูลเพิ่มเติมได้ที่รหัสโปรโมชัน
สำหรับช่วงทดลองใช้ฟรี Google Play จะตรวจสอบว่าผู้ใช้มีวิธีการชำระเงินที่ถูกต้องก่อนที่จะเริ่มช่วงทดลองใช้ฟรี ผู้ใช้บางรายอาจเห็นการยืนยันนี้เป็นการกันวงเงินหรือมีการเรียกเก็บเงินในวิธีการชำระเงิน การกันวงเงินบัตรเครดิต/บัตรเดบิตหรือการเรียกเก็บเงินนี้เป็นการกันวงเงินบัตรเครดิต/บัตรเดบิตชั่วคราวและจะมีการดึงเงินคืนหรือคืนเงินในภายหลัง
หลังจากสิ้นสุดระยะเวลาทดลองใช้ ระบบจะเรียกเก็บเงินค่าสมัครใช้บริการเต็มจำนวนจากวิธีการชำระเงินของผู้ใช้
หากผู้ใช้ยกเลิกการสมัครใช้บริการเมื่อใดก็ตามในระหว่างช่วงทดลองใช้ฟรี การสมัครใช้บริการจะยังคงมีผลต่อไปจนกว่าจะสิ้นสุดช่วงทดลองใช้และจะไม่มีการเรียกเก็บเงินเมื่อช่วงทดลองใช้ฟรีสิ้นสุดลง
ยกเลิก คืนเงิน หรือเพิกถอน
คุณสามารถใช้ Google Play Developer API เพื่อยกเลิก คืนเงิน หรือเพิกถอนการสมัครใช้บริการ ฟังก์ชันการทำงานนี้ยังใช้ได้ใน Google Play Console ด้วย
- ยกเลิก: ผู้ใช้ยกเลิกการสมัครใช้บริการใน Google Play ได้ นอกจากนี้ คุณยังระบุตัวเลือกให้ผู้ใช้ยกเลิกได้ในแอปหรือเว็บไซต์ แอปของคุณควรจัดการการยกเลิกเหล่านี้ตามที่อธิบายไว้ในการยกเลิก
- คืนเงิน: เมื่อคุณคืนเงิน ผู้ใช้จะยังใช้การสมัครใช้บริการต่อไปได้ คุณสามารถใช้การคืนเงินได้ในกรณีต่างๆ เช่น เกิดข้อผิดพลาดทางเทคนิคที่ทำให้ผู้ใช้เข้าถึงผลิตภัณฑ์ไม่ได้ แต่ข้อผิดพลาดดังกล่าวได้รับการแก้ไขแล้ว โปรดทราบว่าหากต้องการคืนเงินมากกว่าการชำระเงินครั้งล่าสุด หรือหากต้องการคืนเงินบางส่วน คุณจะต้องใช้ Google Play Console
- เพิกถอน: เมื่อคุณเพิกถอน ผู้ใช้จะเสียสิทธิ์เข้าถึงการสมัครใช้บริการนั้นทันที ตัวเลือกนี้ใช้ได้ในกรณี เช่น มีข้อผิดพลาดทางเทคนิคที่ทำให้ผู้ใช้เข้าถึงผลิตภัณฑ์ไม่ได้ และผู้ใช้ไม่ต้องการใช้บริการผลิตภัณฑ์ต่อ แอปของคุณควรจัดการการยกเลิกเหล่านี้ตามที่อธิบายไว้ในการเพิกถอน
ตารางต่อไปนี้แสดงความแตกต่างระหว่างการยกเลิก การคืนเงิน และการเพิกถอน
หยุดการต่ออายุ | คืนเงิน | เพิกถอนสิทธิ์เข้าถึง | |
ยกเลิก | มี | ไม่ได้ | ไม่ |
คืนเงิน | ไม่ | มี | ไม่ |
เพิกถอน | มี | มี | มี |
เลื่อนการเรียกเก็บเงินสำหรับผู้สมัครใช้บริการ
คุณสามารถเลื่อนวันที่เรียกเก็บเงินครั้งถัดไปสำหรับผู้สมัครใช้บริการที่ต่ออายุใหม่อัตโนมัติได้โดยใช้ Purchases.subscriptions:defer
จาก Google Play Developer API ในระหว่างระยะเวลาที่เลื่อนออกไป ผู้ใช้จะสมัครใช้บริการเนื้อหาของคุณโดยได้รับสิทธิ์เข้าถึงแบบเต็ม แต่ไม่มีการเรียกเก็บเงิน ระบบจะอัปเดตวันที่ต่ออายุการสมัครใช้บริการเพื่อให้ตรงกับวันที่ใหม่
สำหรับแพ็กเกจแบบชำระเงินล่วงหน้า คุณสามารถใช้การเรียกเก็บเงินที่รอตัดบัญชี API เพื่อเลื่อนเวลาหมดอายุ
การเรียกเก็บเงินที่เลื่อนเวลาช่วยให้คุณทำสิ่งต่อไปนี้ได้
- ให้สิทธิ์เข้าถึงฟรีแก่ผู้ใช้เป็นข้อเสนอพิเศษ เช่น ให้สิทธิ์เข้าถึงฟรี 1 สัปดาห์สำหรับการซื้อภาพยนตร์
- ให้สิทธิ์เข้าถึงฟรีแก่ลูกค้าเพื่อเป็นการแสดงความมีน้ำใจ
การเรียกเก็บเงินสามารถเลื่อนได้ตั้งแต่ 1 วันไปจนถึง 1 ปีต่อการเรียก API 1 ครั้ง หากต้องการเลื่อนการเรียกเก็บเงินออกไปอีก ให้เรียก API อีกครั้งก่อนวันที่เรียกเก็บเงินใหม่
ตัวอย่างเช่น Darcy สมัครใช้บริการเนื้อหาออนไลน์สำหรับแอป Fishing Quarterly รายเดือน โดยปกติระบบจะเรียกเก็บเงินจากเธอเป็นจำนวน £1.25 ในวันแรกของเดือน ในเดือนมีนาคม เธอได้เข้าร่วมแบบสํารวจออนไลน์สําหรับผู้เผยแพร่โฆษณาแอป ผู้เผยแพร่โฆษณาจึงตอบแทนเธอด้วยการให้สิทธิ์ใช้ฟรี 6 สัปดาห์โดยเลื่อนการชำระเงินครั้งถัดไปไปจนถึงวันที่ 15 พฤษภาคม ซึ่งเป็นเวลา 6 สัปดาห์หลังจากวันที่เรียกเก็บเงินที่กำหนดไว้ก่อนหน้านี้ของวันที่ 1 เมษายน ระบบจะไม่เรียกเก็บเงินจาก Darcy สำหรับเดือนเมษายนหรือต้นเดือนพฤษภาคม และ Darcy จะยังคงเข้าถึงเนื้อหาได้ ในวันที่ 15 พฤษภาคม ระบบจะเรียกเก็บค่าสมัครใช้บริการตามปกติเป็นจํานวนเงิน ฿40.00 ของเดือนนั้น วันที่ต่ออายุครั้งถัดไปของเธอคือวันที่ 15 มิถุนายน
เมื่อเลื่อนการเรียกเก็บเงิน คุณอาจต้องการแจ้งให้ผู้ใช้ทราบทางอีเมลหรือภายในแอปเพื่อแจ้งให้ผู้ใช้ทราบว่าวันที่เรียกเก็บเงินมีการเปลี่ยนแปลง
การจัดการการปฏิเสธการชำระเงิน
หากมีปัญหาการชำระเงินเกี่ยวกับการต่ออายุการสมัครใช้บริการ Google จะพยายามต่ออายุการสมัครใช้บริการเป็นระยะๆ ก่อนที่จะยกเลิก ระยะเวลาการกู้คืนนี้อาจประกอบด้วยระยะเวลาผ่อนผัน ตามด้วยช่วงการระงับบัญชี ในระหว่างนี้ Google จะส่งอีเมลและการแจ้งเตือนให้ผู้ใช้เพื่อแจ้งให้อัปเดตวิธีการชำระเงิน
เมื่อการชำระเงินถูกปฏิเสธ การสมัครใช้บริการจะเข้าสู่ระยะเวลาผ่อนผัน หากมีการกําหนดค่าไว้ ในระหว่างระยะเวลาผ่อนผัน คุณควรตรวจสอบว่าผู้ใช้ยังคงมีสิทธิ์เข้าถึงการสมัครใช้บริการ
หลังจากระยะเวลาผ่อนผันสิ้นสุดลง การสมัครใช้บริการจะเข้าสู่ช่วงการระงับบัญชี ในระหว่างการระงับบัญชี คุณควรตรวจสอบว่าผู้ใช้ไม่มีสิทธิ์เข้าถึงสิทธิ์ต่างๆ ของการสมัครใช้บริการ
คุณสามารถระบุระยะเวลาผ่อนผันและการระงับบัญชีของแพ็กเกจเริ่มต้นแบบต่ออายุใหม่อัตโนมัติแต่ละรายการใน Google Play Console การระบุระยะเวลาน้อยกว่าค่าเริ่มต้นอาจลดจำนวนการสมัครใช้บริการที่กู้คืนได้จากการปฏิเสธการชำระเงิน
คุณสามารถแจ้งให้ผู้ใช้ทราบถึงปัญหาการชำระเงินและขอให้ผู้ใช้แก้ไขปัญหาดังกล่าวเพื่อเพิ่มโอกาสในการกู้คืนการสมัครใช้บริการได้สูงสุดเมื่อการชำระเงินถูกปฏิเสธ
คุณดำเนินการนี้ด้วยตนเองได้ตามที่อธิบายไว้ในส่วนระยะเวลาผ่อนผันและการระงับบัญชี หรือจะใช้ API การรับส่งข้อความในแอปก็ได้ โดย Google จะแสดงข้อความต่อผู้ใช้ในแอป
การรับส่งข้อความในแอป
หากคุณเปิดใช้การรับส่งข้อความในแอปด้วย InAppMessageCategoryId.TRANSACTIONAL
Google Play จะแสดงการรับส่งข้อความแก่ผู้ใช้ในช่วงระยะเวลาผ่อนผันและช่วงที่มีการระงับบัญชี 1 ครั้งต่อวัน รวมถึงให้โอกาสผู้ใช้แก้ไขการชำระเงินโดยไม่ต้องออกจากแอป
เราขอแนะนำให้คุณเรียกใช้ API นี้ทุกครั้งที่ผู้ใช้เปิดแอปเพื่อพิจารณาว่าควรแสดงข้อความหรือไม่
หากผู้ใช้กู้คืนการสมัครใช้บริการได้สำเร็จ คุณจะได้รับรหัสการตอบกลับ SUBSCRIPTION_STATUS_UPDATED
พร้อมกับโทเค็นการซื้อ จากนั้นคุณควรใช้โทเค็นการซื้อนี้เพื่อเรียกใช้ Google Play Developer API และรีเฟรชสถานะการสมัครใช้บริการในแอป
ผสานรวมการรับส่งข้อความในแอป
หากต้องการแสดงการรับส่งข้อความในแอปต่อผู้ใช้ ให้ใช้
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 ในกรณีเช่นนี้ ผู้ใช้ควรยังคงเข้าถึงเนื้อหาของการสมัครใช้บริการเดิมได้