เอกสารนี้อธิบายวิธีจัดการเหตุการณ์วงจรการใช้งานการสมัครใช้บริการ เช่น การต่ออายุและการหมดอายุ นอกจากนี้ ยังอธิบายฟีเจอร์การสมัครใช้บริการเพิ่มเติม เช่น การเสนอโปรโมชันและการอนุญาตให้ผู้ใช้จัดการการสมัครใช้บริการของตนเอง ได้
หากยังไม่ได้กำหนดค่าผลิตภัณฑ์การสมัครใช้บริการสำหรับแอป โปรดดู สร้างและกำหนดค่าผลิตภัณฑ์
ภาพรวมการสมัครใช้บริการ
การสมัครใช้บริการคือธุรกรรมที่เกิดซ้ำซึ่งให้สิทธิ์ที่เฉพาะเจาะจงแก่ผู้ใช้ สิทธิ์จะแสดงชุดสิทธิประโยชน์ที่ผู้ใช้เข้าถึงได้ในช่วงระยะเวลาที่กำหนด เช่น การสมัครใช้บริการอาจให้สิทธิ์ผู้ใช้ ในการเข้าถึงระดับพรีเมียม
คุณสามารถสร้างการกำหนดค่าหลายรายการสำหรับผลิตภัณฑ์การสมัครใช้บริการเดียวกันได้ผ่านแพ็กเกจเริ่มต้นและข้อเสนอ เช่น คุณสามารถสร้าง ข้อเสนอเริ่มต้นสำหรับผู้ใช้ที่ไม่เคยสมัครใช้บริการแอปของคุณได้ ในทำนองเดียวกัน คุณสามารถสร้างข้อเสนอให้อัปเกรดสำหรับผู้ใช้ที่สมัครใช้บริการอยู่แล้วได้
ดูภาพรวมโดยละเอียดของผลิตภัณฑ์การสมัครใช้บริการ แผนพื้นฐาน และข้อเสนอได้ในเอกสารประกอบในศูนย์ช่วยเหลือของ Play Console
Play Billing Library รองรับการสมัครใช้บริการประเภทต่อไปนี้
การสมัครใช้บริการแบบไอเทมเดียว - ในประเภทนี้ ไอเทม 1 รายการจะสอดคล้องกับสิทธิ์ 1 รายการ เช่น การสมัครใช้บริการสตรีมมิงเพลง
การสมัครใช้บริการที่มีส่วนเสริม - ในประเภทนี้ การซื้อ 1 ครั้งอาจมีสิทธิ์ที่แตกต่างกันหลายรายการรวมอยู่ในการซื้อครั้งเดียว เช่น การสมัครใช้บริการทั้งบริการสตรีมมิงเพลงและการสมัครใช้บริการวิดีโอ ดูข้อมูลเฉพาะเกี่ยวกับการสมัครใช้บริการที่มีส่วนเสริมได้ที่การสมัครใช้บริการที่มีส่วนเสริม
การผสานรวมแพ็กเกจแบบชำระเงินล่วงหน้า
แพ็กเกจแบบชำระเงินล่วงหน้าจะไม่ต่ออายุอัตโนมัติเมื่อหมดอายุ หากต้องการขยายสิทธิ์การสมัครใช้บริการโดยไม่หยุดชะงัก ผู้ใช้ต้องเติมเงินแพ็กเกจแบบชำระล่วงหน้าสำหรับการสมัครใช้บริการเดียวกัน
สำหรับการเติมเงิน ให้เปิดขั้นตอนการเรียกเก็บเงินเหมือนกับการซื้อครั้งแรก คุณไม่จำเป็นต้องระบุว่าการซื้อเป็นการเติมเงิน
การเติมเงินแพ็กเกจแบบชำระเงินล่วงหน้าจะใช้CHARGE_FULL_PRICE
โหมดการแทนที่เสมอ และคุณไม่จำเป็นต้องตั้งค่าโหมดนี้อย่างชัดเจน
ระบบจะเรียกเก็บเงินจากผู้ใช้ทันทีสำหรับช่วงเวลาที่เรียกเก็บเงินเต็ม
และจะขยายสิทธิ์ของผู้ใช้ตามระยะเวลาที่ระบุในการเติมเงิน
หลังจากเติมเงินแล้ว ระบบจะอัปเดตช่องต่อไปนี้ในออบเจ็กต์ผลลัพธ์ของ
Purchase
เพื่อให้แสดงการซื้อการเติมเงินล่าสุด
- รหัสคำสั่งซื้อ
- เวลาที่ซื้อ
- ลายเซ็น
- โทเค็นการซื้อ
- รับทราบแล้ว
Purchase
ฟิลด์ต่อไปนี้จะมีข้อมูลเดียวกันกับที่พบในการซื้อครั้งแรกเสมอ
- ชื่อแพ็กเกจ
- สถานะการซื้อ
- ผลิตภัณฑ์
- การต่ออายุใหม่อัตโนมัติ
การรับทราบการซื้อแบบชำระล่วงหน้า
คุณต้องรับทราบแพ็กเกจแบบชำระเงินล่วงหน้าหลังการซื้อเช่นเดียวกับการสมัครใช้บริการต่ออายุใหม่อัตโนมัติ ทั้งการซื้อครั้งแรกและการเติมเงินจะต้องได้รับการ รับทราบ ดูข้อมูลเพิ่มเติมได้ที่การประมวลผลการซื้อ
เนื่องจากแพ็กเกจแบบชำระล่วงหน้าอาจมีระยะเวลาสั้นๆ คุณจึงควร รับทราบการซื้อโดยเร็วที่สุด
คุณต้องรับทราบแพ็กเกจแบบชำระล่วงหน้าที่มีระยะเวลา 1 สัปดาห์ขึ้นไป ภายใน 3 วัน
แพ็กเกจแบบชำระเงินล่วงหน้าที่มีระยะเวลาน้อยกว่า 1 สัปดาห์ต้องได้รับการรับทราบ ภายในครึ่งหนึ่งของระยะเวลาแพ็กเกจ ตัวอย่างเช่น นักพัฒนาแอปมีเวลา 1.5 วันในการ รับทราบแพ็กเกจแบบชำระเงินล่วงหน้า 3 วัน
การผสานรวมการสมัครใช้บริการแบบผ่อนชำระ
การสมัครใช้บริการแบบผ่อนชำระคือการสมัครใช้บริการประเภทหนึ่งที่ผู้ใช้ชำระค่า สมัครใช้บริการเป็นงวดๆ ในช่วงระยะเวลาหนึ่ง แทนที่จะชำระ ค่าสมัครใช้บริการทั้งหมดล่วงหน้า
ข้อควรพิจารณาเพิ่มเติมสำหรับการสมัครใช้บริการแบบผ่อนชำระ
- ความพร้อมให้บริการในประเทศ: ฟีเจอร์การสมัครใช้บริการแบบผ่อนชำระพร้อมให้บริการเฉพาะในบราซิล ฝรั่งเศส อิตาลี และสเปน (ตรวจสอบความพร้อมให้บริการล่าสุดใน Console)
- การตั้งราคา: เมื่อตั้งราคาสำหรับการสมัครใช้บริการแบบผ่อนชำระ ใน Console ราคาจะแสดงถึงจำนวนเงินที่ชำระรายเดือน ซึ่งเมื่อรวมกับระยะเวลาผูกมัดที่ตั้งไว้ จะสร้างจำนวนเงินทั้งหมด สำหรับการสมัครใช้บริการในหน้าจอการซื้อ
- ระยะเวลาผูกมัด: ระยะเวลาทั้งหมดของการสมัครใช้บริการเริ่มต้น ซึ่งต้องมีการชำระเงินรายเดือน เช่น หากแพ็กเกจเริ่มต้นมีระยะผูกมัด 15 เดือน ผู้ใช้จะชำระเงินรายเดือน 15 ครั้งในช่วงระยะเวลานี้
- การต่ออายุ: ในบริบทของการสมัครใช้บริการแบบผ่อนชำระ "การต่ออายุ" หมายถึง การสิ้นสุดระยะเวลาสัญญาผูกมัด ไม่ว่าจะเป็นระยะเวลาสัญญาผูกมัดเริ่มต้นหรือ ระยะเวลาสัญญาผูกมัดในภายหลัง หลังจากลงชื่อสมัครใช้ครั้งแรก การต่ออายุครั้งแรก จะเกิดขึ้นเมื่อสิ้นสุดระยะเวลาผูกมัดเริ่มต้นทั้งหมด การต่ออายุครั้งถัดไปจะเกิดขึ้นหลังจากระยะเวลาคอมมิตครั้งถัดไปสิ้นสุดลง ประเภทการต่ออายุสำหรับการสมัครใช้บริการแบบผ่อนชำระอาจเป็น "ต่ออายุใหม่อัตโนมัติแบบรายเดือน" หรือ "ต่ออายุใหม่อัตโนมัติในระยะเวลาเดิม" สำหรับ "ต่ออายุอัตโนมัติรายเดือน" จะไม่มี ข้อผูกมัดในภายหลัง และแพ็กเกจจะทำงานเหมือนการสมัครใช้บริการรายเดือน ซึ่ง การเรียกเก็บเงินสำหรับการสมัครใช้บริการรายเดือนแต่ละครั้งถือเป็นการต่ออายุ
- รอบการเรียกเก็บเงิน: ในบริบทของการสมัครใช้บริการแบบผ่อนชำระ คำนี้หมายถึง ช่วงเวลาที่เกิดซ้ำซึ่งมีการชำระเงินแต่ละครั้งตามที่ระบุ ไว้ในแพ็กเกจเริ่มต้น
- ลักษณะการเปลี่ยนแพ็กเกจเทียบกับการเปลี่ยนแปลงราคา: สำหรับการเปลี่ยนแปลงราคาและการยกเลิก ข้อผูกมัดจะคงเดิม ซึ่งหมายความว่าหากผู้ใช้ต้องการยกเลิกหรือนักพัฒนาแอปต้องการเปลี่ยนราคา การเปลี่ยนแปลงจะมีผลเมื่อสิ้นสุดระยะเวลาผูกมัด สำหรับการเปลี่ยนแพ็กเกจ สัญญาผูกมัดจะไม่แน่นอน ซึ่งหมายความว่าการเปลี่ยนแพ็กเกจไม่จำเป็นต้องรอจนกว่าจะสิ้นสุดระยะเวลา สัญญา โดยจะมีผลทันทีหรือในวันที่ชำระเงินครั้งถัดไป ตามโหมดการแทนที่ที่ตั้งไว้
- การเปลี่ยนแพ็กเกจการสมัครใช้บริการเดียวกัน: ระบบไม่อนุญาตให้เปลี่ยนแพ็กเกจจากแพ็กเกจเริ่มต้นแบบผ่อนชำระ เป็นแพ็กเกจเริ่มต้นแบบไม่ผ่อนชำระของผลิตภัณฑ์การสมัครใช้บริการเดียวกัน
การแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอป (RTDN): A
SUBSCRIPTION_CANCELLATION_SCHEDULED
ระบบจะส่ง RTDN ทันทีเมื่อ ผู้ใช้ยกเลิกการสมัครใช้บริการด้วยตนเองในกรณีที่ยังมีการชำระเงินสำหรับระยะเวลาตามข้อตกลง การยกเลิกอยู่ระหว่างรอดำเนินการและจะมีผลเมื่อสิ้นสุดระยะเวลา สัญญาเท่านั้น จากนั้นหากผู้ใช้ไม่กู้คืน ระบบจะส่ง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 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 |
|
ระบบจะอัปเกรดหรือดาวน์เกรดการสมัครใช้บริการเมื่อต่ออายุการสมัครใช้บริการเท่านั้น แต่จะออกการซื้อใหม่ทันทีพร้อมกับรายการต่อไปนี้
หมายเหตุ: สำหรับการสมัครใช้บริการแบบผ่อนชำระ การเปลี่ยนแพ็กเกจจะมีผลในวันที่เริ่มต้นการชำระเงินครั้งถัดไป |
ดาวน์เกรดเป็นแพ็กเกจที่ราคาถูกกว่า |
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 เมษายน แซมไวส์เลือกอัปเกรดเป็นเวอร์ชันรายปีของแพ็กเกจการติดตามระดับ 2 ซึ่งรวมการอัปเดตวิดีโอและมีค่าใช้จ่าย $36 ต่อปี
เมื่ออัปเกรดการสมัครใช้บริการ นักพัฒนาแอปจะเลือกโหมดการปันส่วนตามสัดส่วน รายการต่อไปนี้อธิบายว่าโหมดการปันส่วนตามสัดส่วนแต่ละโหมดส่งผลต่อการสมัครใช้บริการของ Samwise อย่างไร
WITH_TIME_PRORATION
การสมัครใช้บริการระดับที่ 1 ของ Samwise จะสิ้นสุดลงทันที เนื่องจากเขาชำระเงินสำหรับทั้งเดือน (1-30 เมษายน) แต่อัปเกรดในช่วงกลางของระยะเวลาการสมัครใช้บริการ ระบบจึงนำค่าสมัครใช้บริการครึ่งเดือน ($1) ไปใช้กับการสมัครใช้บริการใหม่ของเขา อย่างไรก็ตาม เนื่องจาก การสมัครใช้บริการใหม่มีค่าใช้จ่าย $36 ต่อปี ยอดเครดิตคงเหลือ $1 จึงชำระค่าบริการได้เพียง 10 วัน (16-25 เมษายน) ดังนั้นในวันที่ 26 เมษายน ระบบจะเรียกเก็บเงิน $36 จากเขาสำหรับการสมัครใช้บริการใหม่ และ อีก $36 ในวันที่ 26 เมษายนของแต่ละปีหลังจากนั้น
คุณควรเรียกใช้ PurchasesUpdatedListener
ของแอปทันทีที่การซื้อสำเร็จและคุณสามารถเรียกข้อมูลการซื้อใหม่เป็นส่วนหนึ่งของการเรียกใช้ queryPurchasesAsync()
ได้ แบ็กเอนด์จะได้รับ
SUBSCRIPTION_PURCHASED
การแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอปทันที
CHARGE_PRORATED_PRICE
คุณใช้โหมดนี้ได้เนื่องจากราคาการสมัครใช้บริการระดับ 2 ต่อหน่วยเวลา (360 บาท/ปี = 30 บาท/เดือน) สูงกว่าราคาการสมัครใช้บริการระดับ 1 ต่อหน่วยเวลา (20 บาท/เดือน) การสมัครใช้บริการระดับที่ 1 ของ Samwise จะสิ้นสุดลงทันที เนื่องจากเขา ชำระเงินสำหรับทั้งเดือนแต่ใช้เพียงครึ่งเดือน ระบบจึงนำค่าสมัครใช้บริการครึ่งเดือน ($1) ไปใช้กับการสมัครใช้บริการใหม่ของเขา อย่างไรก็ตาม เนื่องจากค่าสมัครใช้บริการใหม่ อยู่ที่ $36/ปี ดังนั้นค่าสมัครใช้บริการที่เหลืออีก 15 วันจึงอยู่ที่ $1.50 ระบบจึงเรียกเก็บเงินจากเขา ส่วนต่าง $0.50 สำหรับการสมัครใช้บริการใหม่ ในวันที่ 1 พฤษภาคม ระบบจะเรียกเก็บเงินจากแซมไวส์ 1,080 บาท สำหรับระดับการสมัครใช้บริการใหม่ และเรียกเก็บเงินอีก 1,080 บาทในวันที่ 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
การสมัครใช้บริการระดับที่ 1 ของ Samwise จะสิ้นสุดลงทันที การสมัครใช้บริการระดับ 2 เริ่มตั้งแต่วันนี้และระบบจะเรียกเก็บเงิน $36 เนื่องจากเขาชำระเงินสำหรับทั้งเดือน แต่ใช้ไปเพียงครึ่งเดือน ระบบจึงนำค่าสมัครใช้บริการครึ่งเดือน (30 บาท) ไปใช้กับการสมัครใช้บริการใหม่ของเขา เนื่องจากการสมัครใช้บริการใหม่มีค่าใช้จ่าย $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 อื่นได้ | ใช่ | ผู้ใช้สามารถลงชื่อสมัครใช้ SKU เดียวกันหรือ SKU อื่นได้ | ใช่ |
สร้างโทเค็นการซื้อใหม่ | ใช่ | ไม่ใช่ | ได้ | ใช่ |
เปิดใช้โดยค่าเริ่มต้น | ไม่ | ใช่ นักพัฒนาแอปทุกคนต้องได้รับการสนับสนุน | ไม่ |
แอปที่ไม่มี Billing Library 2.0 ขึ้นไป: ไม่ แอปที่มี Billing Library 2.0 ขึ้นไป: ได้ นักพัฒนาแอปเลือกไม่ใช้ใน Console ได้ |
เมื่อมีการเรียกเก็บเงินจากผู้ใช้ |
หากใช้ SKU เดียวกัน: สิ้นสุดช่วงเวลาที่เรียกเก็บเงินปัจจุบัน หากใช้ SKU อื่น: ขึ้นอยู่กับโหมดการคิดตามสัดส่วน |
สิ้นสุดช่วงเวลาที่เรียกเก็บเงินปัจจุบัน | ทันที | ทันที |
ต้องติดตั้งใช้งาน | ระบุ UI การลงชื่อสมัครใช้อีกครั้งในแอป |
ตรวจหาการเปลี่ยนแปลงสถานะการสมัครใช้บริการ Deep Link ไปยัง Play Store |
ระบุ UI การลงชื่อสมัครใช้อีกครั้งในแอป | จัดการการซื้อนอกแอป |
ก่อนการสมัครใช้บริการจะหมดอายุ - ในแอป
สำหรับการสมัครใช้บริการที่ถูกยกเลิกแต่ยังไม่หมดอายุ คุณสามารถ อนุญาตให้สมาชิกคืนค่าการสมัครใช้บริการภายในแอปได้โดยใช้ ขั้นตอนการซื้อไอเทมเดียวกันในแอปกับสมาชิกใหม่ ตรวจสอบว่า UI แสดงให้เห็นว่าผู้ใช้มีการสมัครใช้บริการอยู่แล้ว เช่น คุณอาจต้องการแสดงวันที่หมดอายุปัจจุบันและราคาแบบเรียกเก็บเงินซ้ำของผู้ใช้พร้อมปุ่มเปิดใช้งานอีกครั้ง
ส่วนใหญ่แล้ว คุณจะต้องการเสนอราคาและ SKU เดียวกันกับที่ผู้ใช้สมัครใช้บริการอยู่แล้ว ดังนี้
- เริ่มการซื้อการสมัครใช้บริการใหม่ด้วย SKU เดียวกัน
- การสมัครใช้บริการใหม่จะแทนที่การสมัครใช้บริการเก่าและจะต่ออายุในวันหมดอายุเดียวกัน ระบบจะทำเครื่องหมายการสมัครใช้บริการเดิมว่าหมดอายุทันที
- ตัวอย่างเช่น อคิลลิสสมัครใช้บริการแอป Example Music และ การสมัครใช้บริการจะหมดอายุในวันที่ 1 สิงหาคม ในวันที่ 10 กรกฎาคม เขาได้สมัครใช้บริการอีกครั้ง โดยสมัครใช้บริการแบบ 1 เดือนในราคาต่อเดือนเท่าเดิม การสมัครใช้บริการใหม่ จะคิดตามสัดส่วนของเครดิตที่เหลือ โดยจะใช้งานได้ทันทีและยังคง ต่ออายุในวันที่ 1 สิงหาคม
หากต้องการเสนอราคาอื่น เช่น ช่วงทดลองใช้ฟรีใหม่หรือส่วนลดสำหรับดึงดูดลูกค้าที่เลิกใช้บริการกลับมา คุณสามารถเสนอ SKU อื่นให้ผู้ใช้แทนได้โดยทำดังนี้
- เริ่มอัปเกรดหรือดาวน์เกรดด้วย SKU อื่น
โดยใช้โหมดการแทนที่
WITHOUT_PRORATION
- การสมัครใช้บริการใหม่จะแทนที่การสมัครใช้บริการเก่าและจะต่ออายุในวันหมดอายุเดียวกัน
ระบบจะเรียกเก็บเงินจากผู้ใช้ในราคาของ SKU ใหม่ ซึ่งรวมถึงราคาช่วงแนะนำ (หากมี) ในวันที่การสมัครใช้บริการเดิมหมดอายุ หากการสมัครใช้บริการเดิม
สร้างขึ้นโดยใช้รหัสบัญชีที่ผ่านการปกปิด
คุณควรส่งรหัสเดียวกันนั้น
ไปยัง
BillingFlowParams
เพื่ออัปเกรดและดาวน์เกรด - ตัวอย่างเช่น อคิลลิสสมัครใช้บริการแอป 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 ได้ นอกจากนี้ คุณยัง ให้ตัวเลือกแก่ผู้ใช้ในการยกเลิกในแอปหรือบนเว็บไซต์ได้ด้วย แอปของคุณควรจัดการการยกเลิกเหล่านี้ตามที่อธิบายไว้ในการยกเลิก
เพิกถอน: เมื่อเพิกถอน ผู้ใช้จะเสียสิทธิ์เข้าถึงการสมัครใช้บริการทันที ซึ่งใช้ได้ในกรณีที่เกิดข้อผิดพลาดทางเทคนิคที่ทำให้ผู้ใช้เข้าถึงผลิตภัณฑ์ของคุณไม่ได้ และผู้ใช้ไม่ต้องการใช้ผลิตภัณฑ์ต่อ แอปของคุณควรจัดการการยกเลิกเหล่านี้ตามที่อธิบายไว้ใน การเพิกถอน
ตารางต่อไปนี้แสดงความแตกต่างระหว่างการยกเลิกและการเพิกถอน
หยุดการต่ออายุ | เพิกถอนสิทธิ์เข้าถึง | |
ยกเลิก | มี | ไม่ |
เพิกถอน | มี | มี |
เลื่อนการเรียกเก็บเงินสำหรับผู้ติดตาม
คุณสามารถเลื่อนวันที่เรียกเก็บเงินครั้งถัดไปสำหรับผู้สมัครใช้บริการที่ต่ออายุอัตโนมัติได้โดยใช้
Purchases.subscriptions:defer
จาก Google Play Developer API ในระหว่างระยะเวลาที่เลื่อนออกไป ผู้ใช้จะ
สมัครใช้บริการเนื้อหาของคุณโดยมีสิทธิ์เข้าถึงแบบเต็ม แต่จะไม่มีการเรียกเก็บเงิน ระบบจะอัปเดตวันที่ต่ออายุการสมัครใช้บริการเพื่อให้ตรงกับวันที่ใหม่
สำหรับแพ็กเกจแบบชำระเงินล่วงหน้า คุณสามารถใช้ API การเรียกเก็บเงินที่รอตัดบัญชีเพื่อเลื่อนเวลาหมดอายุได้
การเรียกเก็บเงินที่เลื่อนออกไปช่วยให้คุณทำสิ่งต่อไปนี้ได้
- ให้สิทธิ์เข้าถึงแก่ผู้ใช้โดยไม่มีค่าใช้จ่ายเป็นข้อเสนอพิเศษ เช่น ให้สิทธิ์เข้าถึงฟรี 1 สัปดาห์สำหรับ การซื้อภาพยนตร์
- ให้สิทธิ์เข้าถึงแก่ลูกค้าโดยไม่มีค่าใช้จ่ายเพื่อแสดงความปรารถนาดี
การเรียกเก็บเงินสามารถเลื่อนได้ตั้งแต่ 1 วันไปจนถึง 1 ปี ต่อการเรียก API 1 ครั้ง หากต้องการเลื่อนการเรียกเก็บเงินออกไปอีก คุณสามารถเรียก API อีกครั้ง ก่อนถึงวันที่เรียกเก็บเงินใหม่
ตัวอย่างเช่น ดาร์ซีสมัครใช้บริการเนื้อหาออนไลน์รายเดือนสำหรับแอป Fishing Quarterly โดยปกติแล้วระบบจะเรียกเก็บเงินจากเธอ £1.25 ในวันที่ 1 ของทุกเดือน ในเดือนมีนาคม เธอได้เข้าร่วมตอบแบบสำรวจออนไลน์สำหรับผู้เผยแพร่แอป สำนักพิมพ์ให้รางวัลเธอด้วยการให้ใช้บริการฟรี 6 สัปดาห์โดยเลื่อนการชำระเงินครั้งถัดไป จนถึงวันที่ 15 พฤษภาคม ซึ่งเป็นเวลา 6 สัปดาห์หลังจากวันที่เรียกเก็บเงินที่กำหนดไว้ก่อนหน้านี้ คือวันที่ 1 เมษายน ดาร์ซีจะไม่ถูกเรียกเก็บเงินในเดือนเมษายนหรือช่วงต้นเดือนพฤษภาคม และยังคงมีสิทธิ์เข้าถึงเนื้อหา ในวันที่ 15 พฤษภาคม ระบบจะเรียกเก็บค่าธรรมเนียมการสมัครใช้บริการตามปกติที่ £1.25 สำหรับเดือนนั้น ตอนนี้วันที่ต่ออายุครั้งถัดไปของเธอคือวันที่ 15 มิถุนายน
เมื่อเลื่อน คุณอาจต้องแจ้งให้ผู้ใช้ทราบทางอีเมลหรือภายในแอป เพื่อแจ้งให้ทราบว่าวันที่เรียกเก็บเงินมีการเปลี่ยนแปลง
การจัดการการชำระเงินที่ถูกปฏิเสธ
หากพบปัญหาการชำระเงินสำหรับการต่ออายุการสมัครใช้บริการ Google จะ พยายามต่ออายุการสมัครใช้บริการเป็นระยะๆ สักระยะหนึ่งก่อนที่จะยกเลิก ระยะเวลาการกู้คืนนี้อาจประกอบด้วยระยะเวลาผ่อนผัน ตามด้วยช่วงการระงับบัญชี ในระหว่างนี้ Google จะส่งอีเมลและการแจ้งเตือนให้ผู้ใช้อัปเดตวิธีการชำระเงิน
เมื่อการชำระเงินถูกปฏิเสธ การสมัครใช้บริการจะเข้าสู่ระยะเวลาผ่อนผันหากมีการกำหนดค่าไว้ ในช่วงระยะเวลาผ่อนผัน คุณควรตรวจสอบว่าผู้ใช้ยังคงมีสิทธิ์เข้าถึง สิทธิ์ในการสมัครใช้บริการ
หลังจากระยะเวลาผ่อนผันสิ้นสุดลง การสมัครใช้บริการจะเข้าสู่ช่วงการระงับบัญชี ในระหว่างการระงับบัญชี คุณควรตรวจสอบว่าผู้ใช้ไม่มีสิทธิ์เข้าถึงสิทธิ์ต่างๆ ของการสมัครใช้บริการ
คุณสามารถระบุระยะเวลาผ่อนผันและการระงับบัญชีของแพ็กเกจเริ่มต้นแบบต่ออายุใหม่อัตโนมัติแต่ละรายการได้ใน Google Play Console การระบุระยะเวลาน้อยกว่าค่าเริ่มต้นอาจลดจำนวนการสมัครใช้บริการที่กู้คืนได้จากการปฏิเสธการชำระเงิน
หากต้องการเพิ่มโอกาสในการกู้คืนการสมัครใช้บริการระหว่างที่การชำระเงินถูกปฏิเสธ คุณสามารถแจ้งให้ผู้ใช้ทราบถึงปัญหาการชำระเงินและขอให้ผู้ใช้แก้ไขปัญหาดังกล่าวได้
คุณสามารถดำเนินการนี้ด้วยตนเองตามที่อธิบายไว้ในส่วนระยะเวลาผ่อนผัน และส่วนการระงับบัญชี หรือจะใช้ API การรับส่งข้อความในแอปก็ได้ ซึ่ง Google จะแสดงข้อความต่อผู้ใช้ในแอปของคุณ
การรับส่งข้อความในแอป
หากคุณเปิดใช้การรับส่งข้อความในแอปด้วย
InAppMessageCategoryId.TRANSACTIONAL
Google Play จะแสดงข้อความแก่ผู้ใช้ในระหว่างระยะเวลาผ่อนผันและการระงับบัญชีวันละครั้ง และให้โอกาสผู้ใช้ในการแก้ไขการชำระเงินโดยไม่ต้องออกจากแอป

เราขอแนะนำให้คุณเรียก 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 ของคุณ ในกรณีเช่นนี้ ผู้ใช้ควรยังคงมีสิทธิ์เข้าถึงเนื้อหาของการสมัครใช้บริการเก่า