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

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

ตัวอย่าง

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

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

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

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

ออกเงินคืนและเพิกถอนสิทธิ์

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

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

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

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

ตัวอย่าง

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

  2. Football-Not-Soccer ใช้ orders.refund API โดยไม่ส่งพารามิเตอร์ 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": {} เป็นประเภทเงินคืน

ตัวอย่าง

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

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

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

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

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

ตัวอย่าง

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

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

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