คุณอาจต้องดำเนินการจัดการการสมัครใช้บริการหรือการซื้อแบบครั้งเดียวเพื่อดำเนินธุรกิจในแต่ละวัน เช่น ฝ่ายบริการลูกค้าอาจต้องคืนเงินเต็มจำนวนหรือบางส่วนให้แก่ผู้ใช้ หรือคุณอาจต้องเพิกถอนสิทธิ์ในบางกรณี คุณสามารถจัดการคำสั่งซื้อจาก 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 ได้ก่อนที่การสมัครใช้บริการจะหมดอายุ หรือสมัครใช้บริการอีกครั้งหลังจากหมดอายุแล้วหากเปิดใช้สำหรับแพ็กเกจเริ่มต้น
DEVELOPER_REQUESTED_STOP_PAYMENTS: ยกเลิกการสมัครใช้บริการและป้องกันไม่ให้มีการชำระเงินเพิ่มเติม ผู้ใช้จะกู้คืนหรือสมัครใช้บริการอีกครั้งจาก Play Store ไม่ได้ แต่คุณสามารถอนุญาตให้ผู้ใช้สมัครใช้บริการอีกครั้งได้ภายในแอป
อนุญาตให้ผู้ใช้กู้คืนการสมัครใช้บริการที่ยังไม่หมดอายุ
ในบางสถานการณ์ คุณอาจพบว่าการอนุญาตให้ผู้ใช้กู้คืนการสมัครใช้บริการที่ยังไม่หมดอายุจากศูนย์การสมัครใช้บริการของ Play หลังจากที่คุณเรียกให้เกิดการยกเลิกในฐานะนักพัฒนาแอปนั้นมีประโยชน์ เช่น คุณอาจต้องการระบุขั้นตอนการยกเลิกในแอปที่ปรับแต่งเอง คุณตัดสินใจได้ว่าผู้ใช้จะกู้คืนการยกเลิกที่เรียกให้แสดงจากแบ็กเอนด์ได้หรือไม่ โดยอิงตามตรรกะทางธุรกิจ
หากต้องการระบุว่าผู้ใช้สามารถกู้คืนการยกเลิกได้ ให้ส่งคําขอ POST ไปยัง purchases.subscriptions.cancel
API และตั้งค่าพารามิเตอร์คําขอ 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
การแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอป
จัดการการยกเลิกเหล่านี้ตามที่อธิบายไว้ในการยกเลิก
เลื่อนการเรียกเก็บเงิน
ใช้ subscriptions.defer
เพื่อขยายระยะเวลาให้สิทธิ์ของการสมัครใช้บริการ ในระหว่างระยะเวลาที่เลื่อนออกไป ผู้ใช้จะยังคงสมัครใช้บริการเนื้อหาของคุณอยู่ แต่จะไม่ได้รับการเรียกเก็บเงินสำหรับระยะเวลาเพิ่มเติม เมื่อคุณเลื่อนการเรียกเก็บเงินสำหรับการสมัครใช้บริการ ระบบจะอัปเดตข้อมูลสถานะตามนั้นและคุณจะเห็นข้อมูลดังกล่าวแสดงในช่อง expiryTime
ในข้อมูลสถานะการซื้อ
- สำหรับการสมัครใช้บริการแบบตามรอบที่ยังไม่หมดอายุ การเรียกเก็บเงินที่เลื่อนเวลาออกไปจะขยายวันที่ต่ออายุครั้งถัดไป
- สําหรับแพ็กเกจแบบชําระเงินล่วงหน้า การเรียกเก็บเงินที่เลื่อนเวลาจะขยายเวลาหมดอายุ
ตัวอย่างวิธีใช้การเรียกเก็บเงินที่เลื่อนเวลาการชำระเงินมีดังนี้
- ให้สิทธิ์เข้าถึงแบบไม่มีค่าใช้จ่ายแก่ผู้ใช้เป็นข้อเสนอพิเศษ เช่น ให้สิทธิ์ทดลองใช้ฟรี 1 สัปดาห์แก่สมาชิกเดิมที่ตอบแบบสํารวจความคิดเห็น
- ให้สิทธิ์เข้าถึงแบบไม่มีค่าใช้จ่ายแก่ลูกค้าเพื่อเป็นการดูแลลูกค้า เช่น หลังจากการหยุดทำงานเป็นเวลานานซึ่งอาจส่งผลต่อความสามารถในการใช้บริการของคุณ
การเรียกเก็บเงินสามารถเลื่อนได้ตั้งแต่ 1 วันไปจนถึง 1 ปีต่อการเรียก API 1 ครั้ง หากต้องการเลื่อนเวลาสิ้นสุดการให้สิทธิ์ออกไปอีก ให้เรียกใช้ API อีกครั้งก่อนวันที่หมดอายุใหม่
การดำเนินการนี้จะทริกเกอร์SUBSCRIPTION_DEFERRED
การแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอป
ดูวิธีจัดการเหตุการณ์เหล่านี้ได้ที่เลื่อนการเรียกเก็บเงินสำหรับผู้สมัครใช้บริการในเกี่ยวกับการสมัครใช้บริการ
ตัวอย่าง
บริการสตรีมมิง FitnessGoals ต้องการจัดโปรโมชันเพื่อกระตุ้นให้ออกกำลังกายเป็นประจำในเดือนกุมภาพันธ์
บริษัทจึงตัดสินใจมอบบริการเพิ่มอีก 1 เดือนแก่ผู้สมัครใช้บริการทุกคนที่ออกกำลังกายด้วย FitnessGoals อย่างน้อย 10 ครั้งในเดือนกุมภาพันธ์
จากนั้นจะติดตามผลลัพธ์ของภารกิจ และในวันที่ 1 มีนาคม ทางบริษัทจะเรียกใช้
subscriptions.defer
API สําหรับการซื้อการสมัครใช้บริการที่ใช้งานอยู่ทั้งหมดของผู้ใช้ที่ผ่านภารกิจในเดือนกุมภาพันธ์ผู้ใช้เหล่านี้จะได้รับสิทธิประโยชน์จากวิดีโอออกกำลังกายแบบปกติเพิ่มอีก 1 เดือนโดยไม่มีค่าใช้จ่าย และผู้ใช้จะบอกเพื่อนๆ ทุกคนว่า FitnessGoals ช่วยดูแลสุขภาพให้พวกเขาได้อย่างไร
ออกเงินคืนและเพิกถอน
มีหลายสถานการณ์ที่คุณอาจต้องการคืนเงินหรือเพิกถอนสิทธิ์เข้าถึงการสมัครใช้บริการหรือการซื้อแบบครั้งเดียว
คืนเงินเต็มจำนวนสำหรับคำสั่งซื้อตามรหัสคำสั่งซื้อ
orders.refund
API จะช่วยให้คุณคืนเงินเต็มจำนวนสำหรับคำสั่งซื้อใดก็ได้ภายใน 3 ปีหลังจากซื้อ
เมธอด orders.refund
จะได้รับพารามิเตอร์การเพิกถอนซึ่งระบุว่าควรเพิกถอนสิทธิ์เข้าถึงหรือไม่ นอกเหนือจากการคืนเงิน
หากคุณเพิกถอนด้วยการเรียกคืนเงินสำหรับการซื้อการสมัครใช้บริการ การสมัครใช้บริการจะสิ้นสุดลงทันทีและจะทริกเกอร์SUBSCRIPTION_REVOKED
การแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอป อ่านคำแนะนำเกี่ยวกับการจัดการวงจรการสมัครใช้บริการส่วนการเพิกถอนเพื่อดูวิธีจัดการเหตุการณ์เหล่านี้
ตัวอย่าง
แอปอีสปอร์ต Football-Not-Soccer ตัดสินใจที่จะจับฉลากแจกเสื้อเวอร์ชวลฟรีให้กับผู้ใช้ทุกคนที่ซื้อชุดแข่งใหม่ของทีมภายใน 24 ชั่วโมงแรก เพื่อฉลองการเริ่มต้นการแข่งขันฟุตบอลโลกครั้งใหม่
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": {}
เป็นประเภทการคืนเงิน
ตัวอย่าง
Maria มีการสมัครใช้บริการแพ็กเกจรายเดือนแบบต่ออายุใหม่อัตโนมัติ 30 วันสำหรับสตรีมมิง SuperMovies Maria พบปัญหาทางเทคนิคที่ทำให้เข้าถึงเนื้อหาไม่ได้ เธอติดต่อฝ่ายบริการลูกค้าในวันที่ 3 ของรอบการเรียกเก็บเงิน โดยระบุว่าเธอไม่เคยได้รับสิทธิ์เข้าถึงการสมัครใช้บริการ
ฝ่ายบริการลูกค้าค้นหารายละเอียดการซื้อการสมัครใช้บริการของ Maria ในระบบและโทรหา
purchases.subscriptionsv2.revoke
เพื่อขอเงินคืนเต็มจำนวนฝ่ายบริการลูกค้าแจ้งว่า Maria ควรได้รับเงินคืนเต็มจำนวนจากค่าสมัครใช้บริการและเธอไม่ได้สมัครใช้บริการแพ็กเกจนั้นอีกต่อไป
การคืนเงินตามสัดส่วน
หากต้องการสิ้นสุดการสมัครใช้บริการและคืนเงินบางส่วนสำหรับระยะเวลาการมีสิทธิ์ที่เหลืออยู่ ให้คืนเงินตามสัดส่วน ใช้ฟังก์ชัน
purchases.subscriptionsv2.revoke
และตั้งค่า "proratedRefund": {}
เป็นประเภทการคืนเงิน
ตัวอย่าง
Maria มีการสมัครใช้บริการแพ็กเกจรายเดือนแบบต่ออายุใหม่อัตโนมัติ 30 วันสำหรับสตรีมมิง SuperMovies เธอใช้บริการมาอย่างมีความสุขมาระยะหนึ่งแล้ว Maria ติดต่อฝ่ายบริการลูกค้าในวันที่ 15 ของรอบการเรียกเก็บเงินเพื่อแจ้งว่าเธอจะย้ายไปต่างประเทศและจะใช้บริการไม่ได้อีกต่อไปนับจากวันถัดไปแล้ว
ฝ่ายบริการลูกค้าค้นหารายละเอียดการซื้อการสมัครใช้บริการของ Maria ในระบบและโทรหา
purchases.subscriptionsv2.revoke
เพื่อขอเงินคืนตามสัดส่วนฝ่ายบริการลูกค้าแจ้งว่า Maria ควรได้รับเงินคืนประมาณ 50% ของค่าสมัครใช้บริการ และสิทธิ์เข้าถึงบริการจะสิ้นสุดลงทันที