คุณอาจต้องดำเนินการจัดการกับการสมัครใช้บริการหรือการซื้อแบบครั้งเดียว ซึ่งเป็นส่วนหนึ่งของธุรกิจในแต่ละวัน เช่น ฝ่ายบริการลูกค้าอาจต้อง คืนเงินเต็มจำนวนหรือบางส่วนให้แก่ผู้ใช้ หรือคุณอาจต้องเพิกถอน สิทธิ์ในบางกรณี คุณจัดการคำสั่งซื้อจาก Play Console ได้ หรือหากต้องการจัดการจากระบบของคุณเอง ก็ทำได้โดยใช้ Google Play Developer API
ยกเลิกการสมัครใช้บริการ
ผู้ใช้หรือนักพัฒนาแอปสามารถเริ่มการยกเลิกการสมัครใช้บริการได้
การยกเลิกที่ผู้ใช้เริ่มต้น
ผู้ใช้ยกเลิกการสมัครใช้บริการ Google Play ได้ทุกเมื่อโดยใช้ Play Store หากมี คุณต้องมีตัวเลือกให้ผู้ใช้ยกเลิกการสมัครใช้บริการในแอปและบนเว็บไซต์ด้วย
วิธีที่ง่ายที่สุดในการช่วยให้ผู้ใช้ยกเลิกได้โดยสมัครใจคือการระบุ Deep Link ในแอปไปยัง Play Store ซึ่งผู้ใช้จะดู และจัดการการสมัครใช้บริการได้
การยกเลิกที่นักพัฒนาแอปเป็นผู้เริ่ม
ในฐานะนักพัฒนาแอป คุณอาจต้องเรียกใช้การยกเลิกจากแบ็กเอนด์ด้วย
API ของ purchases.subscriptions.cancel
ช่วยให้คุณยกเลิกการซื้อการสมัครใช้บริการได้
เช่น คุณอาจใช้วิธีนี้เพื่อปิดบริการเดิม
การยกเลิกการสมัครใช้บริการจะไม่ทำให้มีการคืนเงิน และผู้ใช้จะยังคงเข้าถึงเนื้อหาได้จนถึงสิ้นสุดช่วงเวลาที่เรียกเก็บเงินปัจจุบัน
วิธีนี้ช่วยให้คุณระบุการยกเลิกประเภทต่อไปนี้ใน
cancellationType พารามิเตอร์เนื้อหาคำขอได้
USER_REQUESTED_STOP_RENEWALS: ยกเลิกการสมัครใช้บริการราวกับว่าผู้ใช้ ยกเลิกจาก Play Store การชำระเงินแบบผ่อน จะยังคงดำเนินต่อไปจนกว่าจะสิ้นสุดระยะเวลาผูกมัดปัจจุบัน จาก Play Store ผู้ใช้สามารถกู้คืนการสมัครใช้บริการก่อนที่จะหมดอายุ หรือสมัครใช้บริการอีกครั้งหลังจากที่หมดอายุแล้วได้หากเปิดใช้สำหรับ Base Plan
DEVELOPER_REQUESTED_STOP_PAYMENTS: ยกเลิกการสมัครใช้บริการและป้องกัน การชำระเงินเพิ่มเติม ผู้ใช้จะกู้คืนหรือสมัครใช้บริการอีกครั้งจาก Play Store ไม่ได้ แต่คุณสามารถเปิดให้ผู้ใช้สมัครใช้บริการอีกครั้งภายในแอปได้
เปิดให้ผู้ใช้คืนค่าการสมัครใช้บริการที่ยังไม่หมดอายุ
ในบางสถานการณ์ คุณอาจเห็นว่าการอนุญาตให้ผู้ใช้กู้คืนการสมัครใช้บริการที่ยังไม่หมดอายุจากศูนย์การสมัครใช้บริการของ Play หลังจากที่คุณเป็นผู้เรียกใช้การยกเลิกในฐานะนักพัฒนาแอปเป็นสิ่งที่มีประโยชน์ เช่น คุณอาจต้องการระบุขั้นตอนการยกเลิกในแอปที่ปรับแต่งเอง คุณสามารถตัดสินใจได้ว่าการยกเลิกใดที่ทริกเกอร์จากแบ็กเอนด์ ที่ผู้ใช้สามารถกู้คืนได้ โดยอิงตาม ตรรกะทางธุรกิจ
หากต้องการระบุว่าผู้ใช้สามารถกู้คืนการยกเลิกได้ ให้ส่งคำขอ POST
ไปยัง API ของ purchases.subscriptions.cancel แล้วตั้งค่าพารามิเตอร์คำขอ cancellationType
เป็นค่า USER_REQUESTED_STOP_RENEWALS
ตัวอย่าง
- โทเค็นการซื้อของการสมัครใช้บริการ
1a2b3c4d5e6f7g8h9i0j - ชื่อแพ็กเกจของแอปพลิเคชัน
com.your.app - รหัสการสมัครใช้บริการ
your-subscription-product
คำขอ HTTP POST:
https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptions/your-subscription-product/tokens/1a2b3c4d5e6f7g8h9i0j:cancel
เนื้อหาคำขอ
{
"cancellationType": "USER_REQUESTED_STOP_RENEWALS"
}
เปิดให้ผู้ใช้สมัครใช้บริการที่หมดอายุแล้วอีกครั้ง
หากต้องการอนุญาตให้สมัครใช้บริการที่หมดอายุอีกครั้ง คุณต้องเปิดใช้
ตัวเลือกสมัครอีกครั้ง
ในแพ็กเกจเริ่มต้นของการสมัครใช้บริการ แล้วยกเลิกการสมัครใช้บริการโดยตั้งค่า
พารามิเตอร์ cancellationType เป็นค่า USER_REQUESTED_STOP_RENEWALS
อนุญาตให้ผู้ใช้สมัครอีกครั้งได้ในแอปพลิเคชันของคุณเท่านั้น
หากคุณตั้งค่าพารามิเตอร์ cancellationType เป็น
DEVELOPER_REQUESTED_STOP_PAYMENTS หรือไม่ได้ตั้งค่าพารามิเตอร์ cancellationType
ผู้ใช้จะกู้คืนการสมัครใช้บริการจากศูนย์การสมัครใช้บริการ Play ไม่ได้
อย่างไรก็ตาม ผู้ใช้สามารถ
ลงชื่อสมัครใช้บริการอีกครั้งผ่านแอปของคุณได้หากจำเป็น
การดำเนินการนี้จะทริกเกอร์SUBSCRIPTION_CANCELEDการแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอป
จัดการการยกเลิกเหล่านี้ตามที่อธิบายไว้ในการยกเลิก
เลื่อนการเรียกเก็บเงิน
คุณขยายระยะเวลาให้สิทธิ์สำหรับการสมัครใช้บริการได้โดย
ใช้วิธี subscriptionsv2.defer เมื่อเลื่อนการสมัครใช้บริการที่มีส่วนเสริม ระบบจะเลื่อนรายการทั้งหมดในการสมัครใช้บริการ
เป็นระยะเวลาเดียวกัน ในระหว่างระยะเวลาที่เลื่อนออกไป ผู้ใช้จะยังคงสมัครใช้บริการเนื้อหาของคุณ แต่จะไม่มีการเรียกเก็บเงินสำหรับระยะเวลาเพิ่มเติม เมื่อเลื่อนการเรียกเก็บเงินสำหรับการสมัครใช้บริการ ข้อมูลสถานะจะได้รับการอัปเดตตามนั้น และคุณจะเห็นข้อมูลดังกล่าวในช่อง expiryTime ใน
ข้อมูลสถานะการซื้อ
- สำหรับการสมัครใช้บริการแบบเรียกเก็บเงินตามรอบที่ใช้งานอยู่ การเรียกเก็บเงินที่เลื่อนออกไปจะขยายวันที่ต่ออายุครั้งถัดไป
- สำหรับแพ็กเกจแบบชำระเงินล่วงหน้า การเรียกเก็บเงินที่เลื่อนเวลาจะขยายเวลาหมดอายุ
ตัวอย่างวิธีใช้การเรียกเก็บเงินที่เลื่อนออกไปมีดังนี้
- ให้สิทธิ์เข้าถึงแก่ผู้ใช้โดยไม่มีค่าใช้จ่ายเป็นข้อเสนอพิเศษ เช่น ให้สิทธิ์เข้าถึงฟรี 1 สัปดาห์แก่สมาชิกปัจจุบันที่กรอกแบบสำรวจความคิดเห็น
- ให้สิทธิ์เข้าถึงแก่ลูกค้าโดยไม่มีค่าใช้จ่ายเพื่อเป็นการดูแลลูกค้า เช่น หลังจาก การหยุดทำงานเป็นเวลานานซึ่งอาจส่งผลต่อความสามารถของลูกค้าในการใช้บริการของคุณ
การเรียกเก็บเงินสามารถเลื่อนได้ตั้งแต่ 1 วันไปจนถึง 1 ปีต่อการเรียก API 1 ครั้ง หากต้องการเลื่อนการสิ้นสุดสิทธิ์ให้ไกลออกไปอีก ให้เรียกใช้ API อีกครั้ง ก่อนถึงวันที่หมดอายุใหม่
การดำเนินการนี้จะทริกเกอร์SUBSCRIPTION_DEFERREDการแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอป
ดูวิธีจัดการเหตุการณ์เหล่านี้ได้ที่เลื่อนการเรียกเก็บเงินสำหรับผู้ติดตามในเกี่ยวกับการสมัครใช้บริการ
ตัวอย่าง
บริการสตรีมมิง FitnessGoals ต้องการจัดโปรโมชันเพื่อ กระตุ้นให้ผู้ใช้ได้ออกกำลังกายเป็นประจำในเดือนกุมภาพันธ์
จึงตัดสินใจมอบบริการเพิ่มเติมอีก 1 เดือนให้แก่สมาชิกที่ออกกำลังกายด้วย FitnessGoals อย่างน้อย 10 ครั้งในเดือนกุมภาพันธ์
โดยจะติดตามผลลัพธ์ของชาเลนจ์ และในวันที่ 1 มีนาคม จะเรียกใช้เมธอด subscriptionsv2.defer สำหรับการซื้อการสมัครสมาชิกที่ใช้งานอยู่ทั้งหมดซึ่งเป็นของผู้ใช้ที่ทำชาเลนจ์สำเร็จในเดือนกุมภาพันธ์
ผู้ใช้เหล่านี้จะได้รับประโยชน์จากวิดีโอออกกำลังกายปกติเพิ่มเติมอีก 1 เดือนเต็มโดยไม่มีค่าใช้จ่าย และผู้ใช้จะบอกต่อเพื่อนๆ ทุกคนว่า FitnessGoals ช่วยให้พวกเขามีสุขภาพดีได้อย่างไร
ออกเงินคืนและเพิกถอน
มีหลายกรณีที่คุณอาจต้องการคืนเงินหรือเพิกถอนสิทธิ์เข้าถึงการสมัครใช้บริการหรือการซื้อครั้งเดียว
คืนเงินเต็มจำนวนสำหรับคำสั่งซื้อตามรหัสคำสั่งซื้อ
orders.refund
API ช่วยให้คุณคืนเงินเต็มจำนวนสำหรับคำสั่งซื้อใดก็ได้ภายใน 3 ปีนับจากวันที่ซื้อ
orders.refund method จะรับพารามิเตอร์การเพิกถอนซึ่งระบุว่าควรเพิกถอนสิทธิ์เข้าถึงหรือไม่
นอกเหนือจากการคืนเงิน
หากคุณออกการเพิกถอนด้วยการเรียกคืนเงินสำหรับการซื้อการสมัครใช้บริการ ระบบจะสิ้นสุดการสมัครใช้บริการทันทีและทริกเกอร์SUBSCRIPTION_REVOKED
การแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอป อ่านคู่มือการจัดการวงจรการสมัครใช้บริการ
ส่วนการเพิกถอน
เพื่อดูวิธีจัดการเหตุการณ์เหล่านี้
ตัวอย่าง
เพื่อเป็นการเฉลิมฉลองการเริ่มต้นฟุตบอลโลกครั้งใหม่ แอปอีสปอร์ต Football-Not-Soccer ตัดสินใจจับฉลากเสื้อแข่งเสมือนจริงฟรีสำหรับผู้ใช้ทุกคน ที่ซื้อชุดทีมใหม่ในช่วง 24 ชั่วโมงแรก
Football-Not-Soccer ใช้
orders.refundAPI โดยไม่ส่งพารามิเตอร์การเพิกถอนเพื่อคืนเงินสำหรับการซื้อเสื้อแข่งให้แก่ผู้ชนะ
เพิกถอนและคืนเงินสำหรับการสมัครใช้บริการตามโทเค็นการซื้อ
ในบางกรณี คุณอาจต้องเพิกถอนสิทธิ์เข้าถึงการสมัครใช้บริการของผู้ใช้
และคืนเงิน Play Billing มีวิธีการเพิกถอนซึ่งรวมถึงการคืนเงินเต็มจำนวนและการคืนเงินตามสัดส่วนผ่าน subscriptionsv2.revoke
API โดยปลายทางนี้จะช่วยให้คุณระบุ revocationContext
เพื่อกำหนดวิธีคำนวณการคืนเงินได้
การดำเนินการนี้จะทริกเกอร์SUBSCRIPTION_REVOKEDการแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอป
แอปของคุณควรจัดการการยกเลิกเหล่านี้ตามที่อธิบายไว้ใน
การเพิกถอน
ตัวอย่าง
- ซื้อด้วยโทเค็นการซื้อ
1a2b3c4d5e6f7g8h9i0j - แอปพลิเคชันที่มีชื่อแพ็กเกจ
com.your.app - จุดประสงค์ของการคืนเงินตามสัดส่วน
คำขอ HTTP POST:
https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptionsv2/tokens/1a2b3c4d5e6f7g8h9i0j:revoke
เนื้อหาคำขอ
{
"revocationContext": {
"proratedRefund": {}
}
}
การคืนเงินเต็มจำนวน
หากต้องการสิ้นสุดการสมัครใช้บริการและคืนเงินเต็มจำนวนของ
รอบการเรียกเก็บเงินปัจจุบัน ให้คืนเงินเต็มจำนวน ใช้ฟังก์ชัน
purchases.subscriptionsv2.revoke
และตั้งค่า "fullRefund": {} เป็นประเภทการคืนเงิน
ตัวอย่าง
มาเรียสมัครใช้บริการสตรีมมิง SuperMovies แบบแพ็กเกจรายเดือนเป็นเวลา 30 วันซึ่งต่ออายุใหม่อัตโนมัติ มาเรียพบปัญหาทางเทคนิคบางอย่างที่ทำให้เธอเข้าถึงเนื้อหาไม่ได้ เธอติดต่อฝ่ายบริการลูกค้าในวันที่ 3 ของรอบการเรียกเก็บเงิน โดยแจ้งว่าเธอไม่เคยได้รับสิทธิ์เข้าถึงการสมัครใช้บริการ
ฝ่ายบริการลูกค้าจะค้นหารายละเอียดการซื้อการสมัครใช้บริการของมาเรียในระบบ และเริ่มการเรียกใช้
purchases.subscriptionsv2.revokeเพื่อขอเงินคืนเต็มจำนวนฝ่ายบริการลูกค้าแจ้งให้มาเรียทราบว่าเธอควรได้รับเงินคืน 100% ของราคาการสมัครใช้บริการ และเธอไม่ได้สมัครใช้แพ็กเกจดังกล่าวอีกต่อไป
คืนเงินตามสัดส่วน
หากต้องการสิ้นสุดการสมัครใช้บริการและคืนเงินบางส่วนสำหรับเวลาการให้สิทธิ์ที่เหลือ
อยู่ ให้คืนเงินตามสัดส่วน ใช้ฟังก์ชัน
purchases.subscriptionsv2.revoke
และตั้งค่า "proratedRefund": {} เป็นประเภทการคืนเงิน
ระบบรองรับการคืนเงินตามสัดส่วนสำหรับการสมัครใช้บริการแบบต่ออายุใหม่อัตโนมัติและแพ็กเกจแบบชำระเงินล่วงหน้าที่มีระยะเวลาอย่างน้อย 1 สัปดาห์
ตัวอย่าง
มาเรียสมัครใช้บริการสตรีมมิง SuperMovies แบบแพ็กเกจรายเดือนเป็นเวลา 30 วันซึ่งต่ออายุใหม่อัตโนมัติ เธอใช้บริการนี้อย่างมีความสุขมาสักระยะหนึ่งแล้ว มนฤดีติดต่อฝ่ายบริการลูกค้าในวันที่ 15 ของรอบการเรียกเก็บเงิน โดยแจ้งว่าเธอจะย้ายไปอยู่ต่างประเทศและจะใช้บริการต่อไม่ได้ตั้งแต่วันถัดไป
ฝ่ายบริการลูกค้าจะค้นหารายละเอียดการซื้อการสมัครใช้บริการของมาเรียในระบบและเริ่มการเรียกใช้
purchases.subscriptionsv2.revokeเพื่อขอเงินคืนตามสัดส่วนฝ่ายบริการลูกค้าแจ้งให้มาเรียทราบว่าเธอควรได้รับเงินคืนประมาณ 50% ของราคา การสมัครใช้บริการ และสิทธิ์เข้าถึงบริการจะถูกยกเลิก ทันที