จัดการการสมัครใช้บริการและการซื้อครั้งเดียว

คุณอาจต้องดำเนินการจัดการกับการสมัครใช้บริการหรือการซื้อแบบครั้งเดียว ซึ่งเป็นส่วนหนึ่งของธุรกิจในแต่ละวัน เช่น ฝ่ายบริการลูกค้าอาจต้อง คืนเงินเต็มจำนวนหรือบางส่วนให้แก่ผู้ใช้ หรือคุณอาจต้องเพิกถอน สิทธิ์ในบางกรณี คุณจัดการคำสั่งซื้อจาก 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การแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอป ดูวิธีจัดการเหตุการณ์เหล่านี้ได้ที่เลื่อนการเรียกเก็บเงินสำหรับผู้ติดตามในเกี่ยวกับการสมัครใช้บริการ

ตัวอย่าง

  1. บริการสตรีมมิง FitnessGoals ต้องการจัดโปรโมชันเพื่อ กระตุ้นให้ผู้ใช้หันมาออกกำลังกายเป็นประจำในเดือนกุมภาพันธ์

  2. จึงตัดสินใจมอบบริการเพิ่มเติมอีก 1 เดือนให้แก่สมาชิกที่ออกกำลังกายด้วย FitnessGoals อย่างน้อย 10 ครั้งในเดือนกุมภาพันธ์

  3. โดยจะติดตามผลลัพธ์ของชาเลนจ์ และในวันที่ 1 มีนาคม จะเรียกใช้เมธอด subscriptionsv2.defer สำหรับการซื้อการสมัครใช้บริการที่ใช้งานอยู่ทั้งหมดซึ่งเป็นของผู้ใช้ที่ทำชาเลนจ์สำเร็จในเดือนกุมภาพันธ์

  4. ผู้ใช้เหล่านี้จะได้รับประโยชน์จากวิดีโอออกกำลังกายปกติเพิ่มเติมอีก 1 เดือนเต็มโดยไม่มีค่าใช้จ่าย และผู้ใช้จะบอกต่อเพื่อนๆ ทุกคนว่า FitnessGoals ช่วยให้พวกเขามีสุขภาพดีได้อย่างไร

ออกเงินคืนและเพิกถอน

คุณอาจต้องการคืนเงินหรือเพิกถอนสิทธิ์เข้าถึงการสมัครใช้บริการหรือการซื้อครั้งเดียวในหลายกรณี

คืนเงินเต็มจำนวนสำหรับคำสั่งซื้อตามรหัสคำสั่งซื้อ

orders.refund API ช่วยให้คุณคืนเงินเต็มจำนวนสำหรับคำสั่งซื้อใดก็ได้ภายใน 3 ปีนับจากวันที่ซื้อ orders.refund จะได้รับพารามิเตอร์การเพิกถอนซึ่งระบุว่าควรเพิกถอนสิทธิ์เข้าถึงหรือไม่ นอกเหนือจากการคืนเงิน

หากคุณออกการเพิกถอนด้วยการเรียกเงินคืนสำหรับการซื้อการสมัครใช้บริการ ระบบจะสิ้นสุดการสมัครใช้บริการทันทีและทริกเกอร์SUBSCRIPTION_REVOKED การแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอป อ่านคู่มือการจัดการวงจรการสมัครใช้บริการ ส่วนการเพิกถอน เพื่อดูวิธีจัดการเหตุการณ์เหล่านี้

ตัวอย่าง

  1. เพื่อเป็นการเฉลิมฉลองการเริ่มต้นฟุตบอลโลกครั้งใหม่ แอปอีสปอร์ต Football-Not-Soccer ตัดสินใจจับฉลากแจกเสื้อแข่งเสมือนจริงฟรีสำหรับผู้ใช้ทุกคน ที่ซื้อชุดทีมใหม่ภายใน 24 ชั่วโมงแรก

  2. Football-Not-Soccer ใช้ orders.refund API โดยไม่ต้องส่งพารามิเตอร์การเพิกถอนเพื่อคืนเงินสำหรับการซื้อเสื้อแข่งให้แก่ผู้ชนะ

เพิกถอนและคืนเงินสำหรับการสมัครใช้บริการตามโทเค็นการซื้อ

ในกรณีการใช้งานบางอย่าง คุณอาจต้องเพิกถอนสิทธิ์เข้าถึงการสมัครใช้บริการของผู้ใช้ และคืนเงิน 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": {} เป็นประเภทการคืนเงิน

ตัวอย่าง

  1. มาเรียมีการสมัครใช้บริการสตรีมมิง SuperMovies แบบรายเดือนที่ต่ออายุอัตโนมัติทุก 30 วัน มาเรียพบปัญหาทางเทคนิคบางอย่างที่ทำให้เธอเข้าถึงเนื้อหาไม่ได้ เธอติดต่อฝ่ายบริการลูกค้าในวันที่ 3 ของรอบการเรียกเก็บเงิน โดยแจ้งว่าเธอไม่เคยได้รับสิทธิ์เข้าถึงการสมัครใช้บริการ

  2. ฝ่ายบริการลูกค้าจะค้นหารายละเอียดการซื้อการสมัครใช้บริการของมาเรียในระบบและเริ่มการโทรไปยัง purchases.subscriptionsv2.revoke เพื่อขอเงินคืนเต็มจำนวน

  3. ฝ่ายบริการลูกค้าแจ้งให้มาเรียทราบว่าเธอควรได้รับเงินคืน 100% ของราคาการสมัครใช้บริการ และเธอไม่ได้สมัครใช้แพ็กเกจดังกล่าวอีกต่อไป

คืนเงินตามสัดส่วน

หากต้องการสิ้นสุดการสมัครใช้บริการและคืนเงินบางส่วนสำหรับเวลาการให้สิทธิ์ที่เหลือ อยู่ ให้คืนเงินตามสัดส่วน ใช้ฟังก์ชัน purchases.subscriptionsv2.revoke และตั้งค่า "proratedRefund": {} เป็นประเภทการคืนเงิน

ตัวอย่าง

  1. มาเรียมีการสมัครใช้บริการสตรีมมิง SuperMovies แบบรายเดือนที่ต่ออายุอัตโนมัติทุก 30 วัน เธอใช้บริการนี้อย่างมีความสุขมาสักระยะหนึ่งแล้ว มนฤดีติดต่อฝ่ายบริการลูกค้าในวันที่ 15 ของรอบการเรียกเก็บเงิน โดยแจ้งว่า เธอกำลังจะย้ายไปอยู่ต่างประเทศและจะไม่สามารถใช้บริการได้อีกต่อไปตั้งแต่วัน รุ่งขึ้น

  2. ฝ่ายบริการลูกค้าจะค้นหารายละเอียดการซื้อการสมัครใช้บริการของมาเรียในระบบ และเริ่มการโทรไปยัง purchases.subscriptionsv2.revoke เพื่อขอเงินคืนตามสัดส่วน

  3. ฝ่ายบริการลูกค้าแจ้งให้มาเรียทราบว่าเธอควรได้รับเงินคืนประมาณ 50% ของราคาการสมัครใช้บริการ และสิทธิ์เข้าถึงบริการจะสิ้นสุดลงทันที