หัวข้อนี้จะอธิบายวิธีจัดการเหตุการณ์ในวงจรการสมัครใช้บริการ เช่น การต่ออายุและวันหมดอายุ นอกจากนี้ยังอธิบายฟีเจอร์การสมัครใช้บริการเพิ่มเติม เช่น การนำเสนอโปรโมชัน และให้ผู้ใช้จัดการ การสมัครใช้บริการ
หากคุณยังไม่ได้กำหนดค่าผลิตภัณฑ์ที่ต้องสมัครใช้บริการสำหรับแอป โปรดดู สร้างและกำหนดค่าผลิตภัณฑ์
ภาพรวมการสมัครใช้บริการ
การสมัครใช้บริการแสดงชุดสิทธิประโยชน์ที่ผู้ใช้เข้าถึงได้ระหว่าง ระยะเวลาที่ระบุ เช่น การสมัครใช้บริการอาจให้สิทธิ์ผู้ใช้ เพื่อเข้าถึงบริการสตรีมมิงเพลง
คุณสามารถสมัครใช้บริการได้หลายรายการภายในแอปเดียวกัน ทั้งเพื่อทำสิ่งต่อไปนี้ แสดงถึงชุดของสิทธิประโยชน์ต่างๆ หรือระดับต่างๆ สำหรับ ชุดของสิทธิประโยชน์ (เช่น ระดับ "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
และ RTDNSUBSCRIPTION_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](https://developer.android.com/static/images/google/play/billing/sub_center_general.png?authuser=9&hl=th)
![แตะที่การสมัครใช้บริการเพื่อดูรายละเอียดเพิ่มเติม](https://developer.android.com/static/images/google/play/billing/sub_management_mock_general.png?authuser=9&hl=th)
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 ระดับ](https://developer.android.com/static/images/google/play/billing/plan_change_inapp.png?authuser=9&hl=th)
แอปของคุณอาจแสดงหน้าจอที่คล้ายกับรูปที่ 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 เมษายน 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 |
หลังจากขั้นตอนการซื้อสำเร็จ (แอป) |
มีการเรียกใช้ การให้สิทธิ์แพ็กเกจเดิมจะดำเนินต่อไปจนกว่าจะถึงวันที่ต่ออายุครั้งถัดไป เพื่อให้แน่ใจว่าแอปให้การให้สิทธิ์ที่ถูกต้อง โทเค็นการซื้อใหม่ยังไม่ปรากฏขึ้น จึงประมวลผลไม่ได้ในขณะนี้ |
ระบบจะเรียกใช้
โทเค็นการซื้อใหม่จะปรากฏขึ้น ดังนั้นจึงควรประมวลผลในขั้นนี้โดยพิจารณาถึงเวลาที่จะแทนที่ด้วย |
ทันทีหลังจากขั้นตอนการซื้อสำเร็จ (แบ็กเอนด์) |
ระบบจะไม่ส่ง RTDN SUBSCRIPTION_PURCHASED หลังขั้นตอนการซื้อ ระบบแบ็กเอนด์ยังไม่ทราบเกี่ยวกับการซื้อใหม่ |
ระบบจะส่ง RTDN SUBSCRIPTION_PURCHASED พร้อม product_id เก่าทันทีหลังขั้นตอนการซื้อสำหรับโทเค็นการซื้อใหม่ การเรียกใช้เมธอด purchases.subscriptionsv2.get ด้วยโทเค็นการซื้อแบบใหม่จะแสดงการซื้อที่มี "startTime" การระบุเวลาในการซื้อด้วยรายการโฆษณา 2 รายการ ดังนี้
ส่ง SUBSCRIPTION_EXPIRED สำหรับโทเค็นการซื้อเก่าแล้ว เมื่อเรียกใช้เมธอด purchases.subscriptionsv2.get ด้วยโทเค็นการซื้อเดิม ระบบจะแสดงว่าหมดอายุ (ระบบจะโอนการให้สิทธิ์สําหรับแพ็กเกจเดิมไปยังการซื้อครั้งใหม่ในช่วงเวลาที่เหลือ) |
เมื่อมีการเปลี่ยน - การต่ออายุครั้งแรกหลังจากขั้นตอนการซื้อ (แอป) |
ตอนนี้โทเค็นการซื้อใหม่แสดงแล้ว คุณจึงควรประมวลผล |
การซื้อใหม่ควรได้รับการประมวลผลแล้วเมื่อขั้นตอนการซื้อเสร็จสมบูรณ์ ดังนั้นแอปจึงไม่ควรดําเนินการใดๆ เพิ่มเติมนอกเหนือจากการตรวจสอบว่าได้ให้สิทธิ์ที่ถูกต้องแล้ว |
เมื่อมีการเปลี่ยนทดแทน - การต่ออายุครั้งแรกหลังจากขั้นตอนการซื้อ (แบ็กเอนด์) |
ตอนนี้ระบบสามารถประมวลผลและรับทราบการซื้อใหม่เมื่อมีการส่ง SUBSCRIPTION_RENEWED RTDN แรก
|
การซื้อใหม่ได้รับการประมวลผลและรับทราบแล้วเมื่อมีการส่ง SUBSCRIPTION_PURCHASED RTDN สำหรับโทเค็นการซื้อใหม่ และบันทึกเป็น "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 ขึ้นไป: ใช่ นักพัฒนาซอฟต์แวร์สามารถเลือกไม่ใช้ได้ในคอนโซล |
เมื่อมีการเรียกเก็บเงินจากผู้ใช้ |
หากใช้ 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 ที่แสดง
ยกเลิกการสมัครใช้บริการแล้วโดยใช้ปุ่มสมัครอีกครั้ง](https://developer.android.com/static/images/google/play/billing/resubscribe.jpg?authuser=9&hl=th)
ดูข้อมูลเพิ่มเติมเกี่ยวกับการกู้คืนการสมัครใช้บริการได้ที่การกู้คืน
หลังการสมัครใช้บริการหมดอายุ - ในแอป
คุณอนุญาตให้สมาชิกที่หมดอายุแล้วสมัครใช้บริการอีกครั้งภายในแอปได้โดยสมัคร ขั้นตอนการซื้อไอเทมในแอปเหมือนกับ ของสมาชิกใหม่ โปรดทราบ ดังต่อไปนี้:
- หากต้องการเสนอส่วนลดให้ผู้ใช้ คุณอาจต้องเสนอรหัสผลิตภัณฑ์ด้วย ราคาพิเศษสำหรับการสมัครใช้บริการ หรือที่เรียกว่า 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 ที่แสดง
การสมัครใช้บริการที่ยกเลิกและหมดอายุซึ่งมีการสมัครอีกครั้งและนำออก
ปุ่ม](https://developer.android.com/static/images/google/play/billing/resubscribe-remove.jpg?authuser=9&hl=th)
การสมัครใช้บริการใหม่ถือเป็นการซื้อนอกแอป ดังนั้นอย่าลืมดำเนินการต่อไปนี้ ปฏิบัติตามแนวทางปฏิบัติแนะนำสำหรับ จัดการกับการซื้อจากภายนอกแอป
โปรโมตการสมัครใช้บริการ
คุณสามารถสร้างรหัสโปรโมชันเพื่อมอบช่วงทดลองใช้ฟรีที่นานขึ้นให้กับผู้ใช้บางราย กับการสมัครใช้บริการที่มีอยู่ ดูข้อมูลเพิ่มเติมได้ที่ รหัสโปรโมชัน
สำหรับช่วงทดลองใช้ฟรี 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 จะแสดงข้อความแจ้งผู้ใช้ในช่วงระยะเวลาผ่อนผันและการระงับบัญชีครั้งเดียว
ต่อวัน และให้โอกาสผู้ใช้ในการแก้ไขการชำระเงินโดยไม่ต้องออกจากแอป
![แถบแสดงข้อความแจ้งเตือนผู้ใช้ให้แก้ไขการชำระเงิน](https://developer.android.com/static/images/google/play/billing/subscriptions-in-app-messaging-snackbar.png?authuser=9&hl=th)
เราขอแนะนำให้คุณเรียกใช้ 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 ของคุณแล้ว ในกรณีดังกล่าว
ผู้ใช้ควรจะยังเข้าถึงเนื้อหาของการสมัครใช้บริการเดิมได้อยู่