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