คุณอาจต้องดำเนินการจัดการกับการสมัครใช้บริการหรือการซื้อแบบครั้งเดียวซึ่งเป็นส่วนหนึ่งของการดำเนินธุรกิจประจำวัน เช่น ฝ่ายบริการลูกค้าอาจต้องออกเงินคืนเต็มจำนวนหรือบางส่วนให้แก่ผู้ใช้ หรือคุณอาจต้องเพิกถอนสิทธิ์ในบางกรณี คุณสามารถจัดการคำสั่งซื้อจาก Play Console หรือหาก ต้องการจัดการจากระบบของคุณเอง ก็ทำได้โดยใช้ Google Play Developer API
ยกเลิกการสมัครใช้บริการ
ผู้ใช้หรือนักพัฒนาแอปสามารถเริ่มการยกเลิกการสมัครใช้บริการได้
การยกเลิกที่เริ่มโดยผู้ใช้
ผู้ใช้สามารถยกเลิกการสมัครใช้บริการ Google Play ได้ทุกเมื่อโดยใช้ Play Store นอกจากนี้ คุณต้องมีตัวเลือกให้ผู้ใช้ยกเลิกการสมัครใช้บริการในแอปและบนเว็บไซต์ด้วย (หากมี)
วิธีที่ง่ายที่สุดในการเปิดให้ผู้ใช้ยกเลิกด้วยตนเองคือการระบุ ลิงก์ในแอปไปยัง Play Store ซึ่งผู้ใช้จะดู และจัดการการสมัครใช้บริการได้
การยกเลิกที่เริ่มโดยนักพัฒนาแอป
ในฐานะนักพัฒนาแอป คุณอาจต้องเริ่มการยกเลิกจากแบ็กเอนด์ด้วย
API purchases.subscriptions.cancel
ช่วยให้คุณยกเลิกการซื้อการสมัครใช้บริการได้
เช่น คุณสามารถใช้วิธีนี้เพื่อยกเลิกบริการเดิม
การยกเลิกการสมัครใช้บริการจะไม่คืนเงิน และผู้ใช้จะยังคงเข้าถึงได้จนถึงวันสิ้นสุดช่วงเวลาที่เรียกเก็บเงินปัจจุบัน
วิธีนี้ช่วยให้คุณระบุการยกเลิกประเภทต่อไปนี้ในพารามิเตอร์เนื้อหาของคำขอ cancellationType ได้
USER_REQUESTED_STOP_RENEWALS: ยกเลิกการสมัครใช้บริการเสมือนว่าผู้ใช้ ยกเลิกจาก Play Store การชำระเงินแบบผ่อนจะดำเนินการต่อไปในช่วงเวลาที่เหลืออยู่ของระยะเวลาผูกมัดปัจจุบัน ผู้ใช้สามารถกู้คืนการสมัครใช้บริการจาก Play Store ก่อนที่จะหมดอายุ หรือสมัครใช้บริการอีกครั้งหลังจากหมดอายุแล้ว หากเปิดใช้ไว้สำหรับแพ็กเกจพื้นฐาน
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 จะรับพารามิเตอร์ revoke ซึ่งระบุว่าควรเพิกถอนสิทธิ์เข้าถึงด้วยหรือไม่ นอกเหนือจากการคืนเงิน
หากคุณออกการเพิกถอนสิทธิ์ด้วยการเรียกคืนเงินสำหรับการซื้อการสมัครใช้บริการ ระบบจะยกเลิกการสมัครใช้บริการทันทีและเริ่มการแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอป SUBSCRIPTION_REVOKED อ่านส่วนการเพิกถอนสิทธิ์ในคู่มือการจัดการวงจรชีวิตของการสมัครใช้บริการ
เพื่อดูวิธีจัดการเหตุการณ์เหล่านี้
ตัวอย่าง
เพื่อเป็นการเฉลิมฉลองการเริ่มต้นการแข่งขันฟุตบอลโลกครั้งใหม่ แอปอีสปอร์ต Football-Not-Soccer ตัดสินใจจับฉลากเสื้อแข่งเสมือนจริงฟรีสำหรับผู้ใช้ทุกคนที่ซื้อชุดทีมใหม่ภายใน 24 ชั่วโมงแรก
Football-Not-Soccer ใช้
orders.refundAPI โดยไม่ส่งพารามิเตอร์ revoke เพื่อคืนเงินค่าเสื้อแข่งให้แก่ ผู้ชนะ
เพิกถอนสิทธิ์และคืนเงินสำหรับการสมัครใช้บริการตามโทเค็นการซื้อ
ในบางกรณีการใช้งาน คุณอาจต้องเพิกถอนสิทธิ์เข้าถึงการสมัครใช้บริการของผู้ใช้และคืนเงิน 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": {} เป็นประเภทเงินคืน
ตัวอย่าง
มาเรียสมัครใช้บริการสตรีมมิง SuperMovies แบบแพ็กเกจรายเดือนที่ต่ออายุอัตโนมัติ 30 วัน เธอใช้บริการนี้อย่างมีความสุขมาสักพักแล้ว มาเรียติดต่อฝ่ายบริการลูกค้าในวันที่ 15 ของรอบการเรียกเก็บเงิน โดยแจ้งว่ากำลังจะย้ายไปอยู่ต่างประเทศและจะไม่สามารถใช้บริการได้อีกต่อไปตั้งแต่วันถัดไป
ฝ่ายบริการลูกค้าค้นหารายละเอียดการซื้อการสมัครใช้บริการของมาเรียใน ระบบและเริ่มการเรียก
purchases.subscriptionsv2.revokeเพื่อขอเงินคืนตามสัดส่วนฝ่ายบริการลูกค้าแจ้งให้มาเรียทราบว่าเธอจะได้รับเงินคืนประมาณ 50% ของราคาการสมัครใช้บริการ และสิทธิ์เข้าถึงบริการจะสิ้นสุดลงทันที