ถ้าแอปของคุณยังใช้ App Store Server Notifications V1 อยู่ Apple จะไม่เคยถามคุณเรื่องการคืนเงินค่าสมัครสมาชิกเลย
Apple เลิกสนับสนุน App Store Server Notifications V1 ตั้งแต่เดือนมิถุนายน 2023 และเวอร์ชันนี้ไม่เคยได้รับ CONSUMPTION_REQUEST สำหรับการสมัครสมาชิก, REFUND_DECLINED หรือ REFUND_REVERSED บทความนี้อธิบายว่าเซิร์ฟเวอร์ V1 พลาดอะไรไปบ้าง สร้างความเสียหายเท่าไร และจะย้ายไป V2 อย่างไรโดยไม่พลาดการคืนเงินแม้แต่รายการเดียว

ประเด็นสำคัญ
- Apple เลิกสนับสนุน App Store Server Notifications V1 และ endpoint verifyReceipt เมื่อวันที่ 5 มิถุนายน 2023 ทั้งสองยังทำงานได้ ไม่ได้รับฟีเจอร์ใหม่ และยังไม่มีการประกาศวันสิ้นสุดการให้บริการ
- เอกสาร V1 ของ Apple ระบุ CONSUMPTION_REQUEST ไว้สำหรับการซื้อในแอปประเภท consumable เท่านั้น คำขอข้อมูลการใช้งานสำหรับการสมัครสมาชิกแบบต่ออายุอัตโนมัติถูกเพิ่มเข้ามาใน App Store Server Notifications V2 เมื่อเดือนเมษายน 2024
- REFUND_DECLINED และ REFUND_REVERSED มีอยู่ใน App Store Server Notifications V2 เท่านั้น เซิร์ฟเวอร์ V1 จึงไม่มีทางรู้เลยว่า Apple ปฏิเสธการคืนเงินหรือเรียกคืนเงินที่คืนไปแล้ว
- บน V1 การคืนเงินของ Apple สำหรับการสมัครสมาชิกแบบต่ออายุอัตโนมัติจะมาในรูปแบบ CANCEL ส่วนบน V2 จะมาเป็น REFUND พร้อม revocationDate และ revocationReason ในธุรกรรมที่ลงลายมือชื่อแล้ว
- Apple ส่งการแจ้งเตือน V2 ที่ล้มเหลวซ้ำห้าครั้งภายในราวหนึ่งสัปดาห์ หลังผ่านไป 1, 12, 24, 48 และ 72 ชั่วโมง ส่วนการแจ้งเตือน V1 ที่ล้มเหลวจะได้รับการส่งซ้ำเพียงสามครั้ง หลังผ่านไป 6, 24 และ 48 ชั่วโมง และไม่สามารถกู้คืนผ่าน Get Notification History ได้
- หลังจากแอปเปลี่ยนไปใช้ V2 ใน App Store Connect การแจ้งเตือนใหม่จะมาในรูปแบบ V2 ทันที ขณะที่การแจ้งเตือน V1 ที่อยู่ระหว่างส่งซ้ำอาจยังทยอยเข้ามาได้อีกประมาณ 78 ชั่วโมง
Version 1 ของ App Store Server Notifications ยังคงส่งข้อมูลการคืนเงิน แต่ขาดการแจ้งเตือนเพียงรายการเดียวที่ทำให้คุณได้โต้แย้งในกรณีการคืนเงินค่าสมัครสมาชิก Apple เลิกสนับสนุน V1 เมื่อวันที่ 5 มิถุนายน 2023 พร้อมกับ endpoint verifyReceipt และตั้งแต่นั้นมาก็เพิ่มฟีเจอร์ด้านการคืนเงินทุกอย่างให้ V2 เท่านั้น หากการตั้งค่าใน App Store Connect ของคุณยังแสดง Version 1 อยู่ Apple อาจตัดสินการคืนเงินค่าสมัครสมาชิกโดยไม่เคยส่ง CONSUMPTION_REQUEST มาที่เซิร์ฟเวอร์ของคุณเลย คุณไม่ได้แพ้ในการโต้แย้งนั้น คุณแค่ไม่เคยได้รับเชิญเข้าร่วมตั้งแต่แรก
การที่ Apple เลิกสนับสนุน App Store Server Notifications V1 หมายความว่าอย่างไร
การเลิกสนับสนุนไม่ได้แปลว่าปิดการทำงาน วิศวกรของ Apple เขียนไว้ในฟอรัมนักพัฒนาเมื่อเดือนมิถุนายน 2023 ว่า verifyReceipt และการแจ้งเตือน V1 จะยังทำงานต่อไปจนกว่าจะมีการประกาศวันสิ้นสุดการให้บริการ ว่าวันดังกล่าวยังไม่ได้กำหนด และนักพัฒนาจะได้รับแจ้งล่วงหน้า ผ่านไปกว่าสามปี App Store Connect ก็ยังมีตัวเลือก "Version 1 (deprecated)" ให้เลือกเมื่อคุณตั้งค่า URL ของเซิร์ฟเวอร์
สิ่งที่การเลิกสนับสนุนหมายถึงจริงๆ คือการหยุดพัฒนา ทุกการเปลี่ยนแปลงใน changelog การแจ้งเตือนของ Apple ตั้งแต่เดือนมิถุนายน 2023 เป็นการเปลี่ยนแปลงของ V2 ทั้งหมด ได้แก่ ฟิลด์ใหม่ในธุรกรรมที่ลงลายมือชื่อแล้ว ประเภทการแจ้งเตือนใหม่ และข้อมูลข้อผูกพัน 12 เดือนที่เพิ่มเข้ามาในเดือนเมษายน 2026 เซิร์ฟเวอร์ V1 ไม่เห็นสิ่งเหล่านี้เลย
สัญญาณการคืนเงินที่เซิร์ฟเวอร์ V1 ไม่เคยได้รับ
ตารางนี้แสดงว่าเหตุการณ์การคืนเงินเดียวกันเดินทางไปถึงเซิร์ฟเวอร์ V1 และเซิร์ฟเวอร์ V2 อย่างไร ตามเอกสารของ Apple สำหรับแต่ละเวอร์ชัน
| เหตุการณ์การคืนเงิน | Version 1 | Version 2 |
|---|---|---|
| ลูกค้าขอให้ Apple คืนเงินสินค้าประเภท consumable | CONSUMPTION_REQUEST | CONSUMPTION_REQUEST |
| ลูกค้าขอให้ Apple คืนเงินการสมัครสมาชิกแบบต่ออายุอัตโนมัติ | ไม่มีระบุในเอกสาร V1 | CONSUMPTION_REQUEST ตั้งแต่เมษายน 2024 |
| Apple คืนเงินการสมัครสมาชิกแบบต่ออายุอัตโนมัติ | CANCEL | REFUND |
| Apple คืนเงินสินค้า consumable, non-consumable หรือการสมัครสมาชิกแบบไม่ต่ออายุ | REFUND | REFUND |
| Apple ปฏิเสธการคืนเงินที่ลูกค้าเริ่มคำขอในแอปของคุณ | ไม่มี | REFUND_DECLINED |
| Apple เรียกคืนเงินที่เคยอนุมัติคืนไปแล้ว | ไม่มี | REFUND_REVERSED |
| คุณกู้คืนการแจ้งเตือนที่พลาดไประหว่างระบบขัดข้อง | ไม่มี | Get Notification History |
V1 ยังได้รับ CONSUMPTION_REQUEST อยู่หรือไม่
ได้ สำหรับสินค้าประเภท consumable เอกสารอ้างอิง V1 ของ Apple อธิบายว่า CONSUMPTION_REQUEST คือการแจ้งเตือนที่ส่งมาเมื่อลูกค้าเริ่มขอคืนเงินสำหรับการซื้อในแอปประเภท consumable วิศวกรของ Apple ยืนยันในฟอรัมเมื่อปี 2023 ว่าคำขอข้อมูลการใช้งานของ V1 จะส่งมาสำหรับการคืนเงินที่เข้าเกณฑ์ ช่องว่างอยู่ที่การสมัครสมาชิก changelog ของ Apple ระบุว่าคำขอข้อมูลการใช้งานสำหรับการสมัครสมาชิกเริ่มเมื่อวันที่ 11 เมษายน 2024 บน V2 และเอกสาร Send Consumption Information ระบุว่า Apple ส่งคำขอนี้ผ่าน endpoint V2 ของคุณ
ทำไม CANCEL บน V1 จึงตีความผิดได้ง่าย
บน V1 เมื่อ Apple คืนเงินการสมัครสมาชิก ประเภทการแจ้งเตือนจะเป็น CANCEL ซึ่งมักมาคู่กับ DID_CHANGE_RENEWAL_STATUS เซิร์ฟเวอร์จำนวนมากถือว่าการยกเลิกทุกครั้งคือการที่ลูกค้าปิดการต่ออายุอัตโนมัติ จึงปล่อยให้สิทธิ์การใช้งานคงอยู่จนหมดรอบ V2 ขจัดความกำกวมนี้ การคืนเงินจะมาเป็น REFUND ส่วนการที่ลูกค้าปิดการต่ออายุจะมาเป็น DID_CHANGE_RENEWAL_STATUS พร้อมประเภทย่อย AUTO_RENEW_DISABLED
การอยู่บน V1 ต่อทำให้เสียเงินเท่าไร
Apple เป็นผู้ตัดสินการคืนเงินทุกรายการบน App Store CONSUMPTION_REQUEST คือจุดเดียวที่ข้อมูลการใช้งานของคุณจะไปถึงการตัดสินใจนั้น และ Apple ขอให้คุณตอบภายใน 12 ชั่วโมง บน V1 การคืนเงินค่าสมัครสมาชิกจะข้ามขั้นตอนนี้ไป
นี่คือตัวอย่างที่ใช้ตัวเลขสมมติ สมมติว่าแอปของคุณขายการสมัครสมาชิกรายเดือนราคา $9.99 ที่รวมการสร้างภาพด้วย AI ผู้สมัครสมาชิกรายหนึ่งสร้างภาพ 400 ครั้งในหนึ่งเดือน และแต่ละครั้งทำให้คุณเสียเงินจริงไปกับการประมวลผลโมเดล จากนั้นเขาขอคืนเงินจาก Apple
| รายการต้นทุน | เซิร์ฟเวอร์ V1 | เซิร์ฟเวอร์ V2 |
|---|---|---|
| ส่วนแบ่งรายได้ของคุณ | ถูกคืนให้ลูกค้าหาก Apple อนุมัติ | ถูกคืนให้ลูกค้าหาก Apple อนุมัติ |
| ค่าประมวลผล การเรียก API และพื้นที่จัดเก็บที่ใช้ในเดือนนั้น | จ่ายไปแล้ว เรียกคืนไม่ได้ | จ่ายไปแล้ว เรียกคืนไม่ได้ |
| โอกาสแสดงให้ Apple เห็นการสร้างภาพ 400 ครั้ง | ไม่มี | CONSUMPTION_REQUEST หนึ่งครั้ง 12 ชั่วโมง |
| รู้ว่า Apple ปฏิเสธการคืนเงิน | ไม่เคยรู้ | REFUND_DECLINED |
| รู้ว่าการคืนเงินถูกเรียกคืน | ไม่เคยรู้ | REFUND_REVERSED |
เงินที่คุณเสียไปคือส่วนแบ่งของคุณ ไม่ใช่ราคาขาย Apple จ่าย 70% ของราคาการสมัครสมาชิก หักภาษีที่เกี่ยวข้อง ในปีแรกที่ผู้สมัครใช้บริการแบบชำระเงิน และ 85% หลังจากนั้น หรือสำหรับสมาชิก App Store Small Business Program แต่ค่าประมวลผลไม่ได้ลดลงตาม ค่าประมวลผลโมเดล ค่าเรียก API ของบุคคลที่สาม และค่าจัดเก็บไฟล์ถูกจ่ายไปแล้วตั้งแต่ตอนที่ลูกค้าใช้งาน
การแจ้งเตือนผลลัพธ์สองรายการที่ขาดหายไปก็ทำให้เสียเงินเช่นกัน หากไม่มี REFUND_REVERSED เซิร์ฟเวอร์ที่เพิกถอนสิทธิ์เมื่อมีการคืนเงินจะไม่คืนสิทธิ์นั้นเลยเมื่อ Apple เรียกคืนเงินที่คืนไป ลูกค้าที่จ่ายเงินจึงยังถูกล็อกอยู่และต้องติดต่อฝ่ายสนับสนุน หากไม่มี REFUND_DECLINED คุณจะแยกไม่ออกว่าการคืนเงินรายการใดยังรอดำเนินการ และรายการใดที่ Apple ปฏิเสธไปแล้ว

วิธีย้ายจาก V1 ไป V2 โดยไม่พลาดการคืนเงินแม้แต่รายการเดียว
การย้ายไป V2 คือการเปลี่ยนแปลงฝั่งเซิร์ฟเวอร์หนึ่งอย่างกับการตั้งค่าหนึ่งรายการ คำแนะนำของ Apple เองในฟอรัม จาก App Store Commerce Engineer เมื่อเดือนธันวาคม 2025 อธิบายว่าจะเกิดอะไรขึ้นในวันที่คุณเปลี่ยน
สร้าง endpoint V2 ให้เสร็จก่อนเปลี่ยนการตั้งค่า
- รับคำขอ POST ที่ body มี signedPayload เพย์โหลดของ V2 อยู่ในรูปแบบ JWS ที่ Apple ลงลายมือชื่อไว้ จึงต้องตรวจสอบลายมือชื่อก่อนเชื่อถือข้อมูลใดๆ ข้างใน App Store Server Library ของ Apple ทำขั้นตอนนี้ให้คุณได้
- เปลี่ยนการจัดการ CANCEL ให้เป็น REFUND และจัดการ REFUND_DECLINED กับ REFUND_REVERSED เป็นกรณีใหม่
- ตอบ CONSUMPTION_REQUEST สำหรับการสมัครสมาชิกด้วย Send Consumption Information และทำเฉพาะเมื่อลูกค้ายินยอมให้แชร์ข้อมูลกับ Apple เท่านั้น Apple ระบุว่าหากไม่ได้รับความยินยอม คุณไม่ควรตอบกลับ
- ส่งกลับ HTTP 200 ถึง 206 เมื่อสำเร็จ รหัส 40x หรือ 50x ใดๆ จะทำให้ Apple ส่งซ้ำ
เปลี่ยนการตั้งค่าใน App Store Connect
ใน App Store Connect ให้เปิดแอปของคุณ เลือก App Information ใต้หัวข้อ General หา App Store Server Notifications แล้วตั้ง Production Server URL เป็น endpoint V2 ของคุณโดยเลือก Version 2 หากต้องการทดสอบ ให้ทำแบบเดียวกันกับ URL ของ sandbox ก่อน และใช้ Request a Test Notification เพื่อยืนยันว่าเซิร์ฟเวอร์ของคุณตอบกลับได้
เปิดตัวจัดการ V1 ทิ้งไว้ประมาณสามวัน
หลังจากเปลี่ยน การแจ้งเตือนใหม่จะมาในรูปแบบ V2 ทันที สำหรับการสมัครสมาชิกทุกรายการ ทั้งเก่าและใหม่ การแจ้งเตือน V1 ที่อยู่ระหว่างส่งซ้ำจะยังทยอยมาในรูปแบบ V1 จนกว่าจะสำเร็จหรือหมดจำนวนครั้ง Apple ระบุว่าการส่งซ้ำ V1 ครั้งสุดท้ายที่เป็นไปได้อยู่ที่ประมาณ 78 ชั่วโมง ซึ่งก็คือ 6 บวก 24 บวก 48 ให้ตัวจัดการเดิมทำงานต่อไปจนพ้นช่วงนั้น แล้วจึงลบออก
เปลี่ยน verifyReceipt ไปพร้อมกันเลย
verifyReceipt ถูกเลิกสนับสนุนในวันเดียวกัน ยังคงตอบกลับได้ แต่ Apple แนะนำให้เซิร์ฟเวอร์ใช้ App Store Server API แทน Get Transaction Info ส่งคืนธุรกรรมที่ลงลายมือชื่อแล้วหนึ่งรายการ Get Transaction History ส่งคืนประวัติของลูกค้า และ Get Refund History แสดงรายการการซื้อทั้งหมดที่ได้รับเงินคืนของลูกค้ารายหนึ่ง เมื่อใช้ร่วมกับการแจ้งเตือน V2 ก็ครอบคลุมสิ่งที่เซิร์ฟเวอร์ส่วนใหญ่เคยใช้ใบเสร็จทำ รวมถึงฟิลด์ cancellation_date ที่เคยใช้ระบุการคืนเงินในใบเสร็จ
RefundHalt เชื่อมต่อกับ App Store Server Notifications V2 และตอบทุก CONSUMPTION_REQUEST ภายในกรอบเวลา 12 ชั่วโมง โดยใช้ข้อมูลการใช้งานที่แอปของคุณบันทึกไว้อยู่แล้ว หากคุณยังใช้ V1 อยู่ การเปลี่ยนเวอร์ชันคือขั้นตอนที่ทำให้ทั้งหมดนี้เป็นไปได้
คำถามที่พบบ่อย
- App Store Server Notifications V1 กำลังจะถูกปิดหรือไม่
- ยังไม่ปิด Apple เลิกสนับสนุน V1 และ verifyReceipt เมื่อวันที่ 5 มิถุนายน 2023 และทั้งสองยังทำงานได้ Apple ระบุว่ายังไม่มีวันสิ้นสุดการให้บริการ และจะแจ้งนักพัฒนาล่วงหน้า ระหว่างนี้ V1 จะไม่ได้รับฟีเจอร์ใหม่
- ฉันจะได้รับการแจ้งเตือน CONSUMPTION_REQUEST บน V1 หรือไม่
- ได้เฉพาะสินค้าประเภท consumable ตามเอกสาร V1 ของ Apple คำขอข้อมูลการใช้งานสำหรับการสมัครสมาชิกแบบต่ออายุอัตโนมัติถูกเพิ่มเข้ามาใน V2 เมื่อเดือนเมษายน 2024 และ Apple ส่งผ่าน endpoint V2 ของคุณ หากคุณขายการสมัครสมาชิกและยังอยู่บน V1 คุณจะตอบคำขอคืนเงินเหล่านั้นไม่ได้
- การคืนเงินค่าสมัครสมาชิกบน V1 ต่างจาก V2 อย่างไร
- บน V1 จะมาเป็น CANCEL ซึ่งมักมาพร้อม DID_CHANGE_RENEWAL_STATUS บน V2 จะมาเป็น REFUND พร้อม revocationDate และ revocationReason ในธุรกรรมที่ลงลายมือชื่อแล้ว นอกจากนี้ V2 ยังส่ง REFUND_DECLINED เมื่อ Apple ปฏิเสธการคืนเงินที่เริ่มในแอปของคุณ และ REFUND_REVERSED เมื่อ Apple เรียกคืนเงินที่เคยอนุมัติคืนไปแล้ว
- จะเกิดอะไรขึ้นกับการแจ้งเตือนเมื่อฉันเปลี่ยนจาก V1 เป็น V2
- การแจ้งเตือนใหม่จะมาในรูปแบบ V2 ไม่นานหลังจากที่คุณเปลี่ยน สำหรับการสมัครสมาชิกทุกรายการ การแจ้งเตือน V1 ที่อยู่ระหว่างส่งซ้ำจะยังมาในรูปแบบ V1 จนกว่าจะสำเร็จหรือหมดจำนวนครั้งการส่งซ้ำ ซึ่ง Apple ระบุว่าประมาณ 78 ชั่วโมงหลังการเปลี่ยน ให้เปิดตัวจัดการทั้งสองไว้ตลอดช่วงเวลานั้น
- ฉันกลับไปใช้ V1 หลังจากเปลี่ยนเป็น V2 แล้วได้หรือไม่
- ได้ ผ่าน endpoint Modify an App ของ App Store Connect API ตามที่ technote TN3180 ของ Apple อธิบายไว้ Apple เรียกกรณีนี้ว่าเป็นกรณีที่ไม่ปกติ และยังคงระบุว่า V1 เลิกสนับสนุนแล้ว การย้อนกลับจึงหมายถึงการเสียคำขอข้อมูลการใช้งานสำหรับการสมัครสมาชิกและการแจ้งเตือนการคืนเงินแบบใหม่ไป
แหล่งข้อมูลและเนื้อหาเพิ่มเติม
- Apple Developer Documentation: App Store Server Notifications changelog
- Apple Developer Documentation: notification_type (Version 1)
- Apple Developer Documentation: notificationType (Version 2)
- Apple Developer Documentation: Responding to App Store Server Notifications
- Apple Developer Documentation: Send Consumption Information V1
- Apple Developer Documentation: App Store Receipts (verifyReceipt deprecated)
- Apple Developer Documentation: TN3180, Reverting to App Store Server Notifications V1
- App Store Connect Help: Enter server URLs for App Store Server Notifications
- Apple Developer Forums: When will the verifyReceipt API be deprecated? (Apple staff reply, June 2023)
- Apple Developer Forums: Switching App Store Server Notifications from V1 to V2 (Apple staff reply, December 2025)
- Apple Developer: Auto-renewable subscriptions (net revenue after one year of paid service)
RefundHalt
ระบบอัตโนมัติสำหรับการคืนเงินบน App Store และ Google Play
อ่านต่อ
การคืนเงินบนการสมัครสมาชิกรายเดือนแบบผูกพัน 12 เดือนของ Apple อาจยุติทั้งปี หรือแค่เดือนเดียว
การสมัครสมาชิกรายเดือนแบบผูกพัน 12 เดือนของ Apple แบ่งการคืนเงินออกเป็นสองกรณี คืนเงินเดือนที่ผ่านมาแล้ว การเรียกเก็บเงินยังเดินต่อ คืนเงินเดือนปัจจุบัน ข้อผูกพันสิ้นสุดทันที บทความนี้อธิบายว่าแต่ละกรณีมาถึงเซิร์ฟเวอร์ของคุณอย่างไร มีต้นทุนเท่าไร และควรส่งอะไรให้ Apple
นโยบายคืนเงินของแอปคุณไม่อาจอยู่เหนือ Apple หรือ Google ได้ จึงควรเขียนให้ตรงกับสิ่งที่เกิดขึ้นจริง
นโยบายคืนเงินของแอปผูกพันคุณเฉพาะในส่วนที่คุณเป็นผู้คืนเงินจริงเท่านั้น Apple คืนเงินทุกรายการซื้อใน App Store เอง ส่วน Google Play จะส่งต่อการคืนเงินมาให้คุณหลังผ่านไป 48 ชั่วโมง บทความนี้สรุปว่าข้อตกลงแต่ละฉบับระบุไว้อย่างไร คำสัญญาที่ไม่รอบคอบทำให้คุณเสียอะไร และข้อกำหนดใดที่ควรเขียนไว้