ทุกคำขอคืนเงินของ Apple มาพร้อมเหตุผลแล้ว และ consumptionRequestReason คือวิธีที่คุณอ่านมัน
ตั้งแต่ WWDC24 ทุก CONSUMPTION_REQUEST ของ Apple จะมี consumptionRequestReason ติดมาด้วย ซึ่งเป็นเหตุผลที่ลูกค้าระบุเองว่าทำไมจึงต้องการคืนเงิน มีอยู่ห้าค่า ตั้งแต่ UNINTENDED_PURCHASE ไปจนถึง LEGAL และแต่ละค่าควรเปลี่ยนสิ่งที่คุณส่งกลับภายในกรอบเวลา 12 ชั่วโมงของคุณ นี่คือวิธีอ่านทุกค่า

ประเด็นสำคัญ
- ตั้งแต่ App Store Server Notifications เวอร์ชัน 2.11 ที่ประกาศใน WWDC24 ทุกการแจ้งเตือน CONSUMPTION_REQUEST จะมี consumptionRequestReason ซึ่งเป็นสตริงที่ระบุว่าทำไมลูกค้าจึงขอคืนเงิน
- มีอยู่ห้าค่าพอดี ได้แก่ UNINTENDED_PURCHASE, FULFILLMENT_ISSUE, UNSATISFIED_WITH_PURCHASE, LEGAL และ OTHER โดย Apple ส่งมาหนึ่งค่าต่อหนึ่งคำขอ
- เหตุผลไม่ได้ตัดสินการคืนเงิน มันคือบริบทที่คุณใช้เลือก refundPreference และข้อมูลการใช้งานของคุณก่อนที่กรอบเวลา 12 ชั่วโมงจะปิดลง
- ตอนนี้ CONSUMPTION_REQUEST เกิดขึ้นกับการสมัครสมาชิกแบบต่ออายุอัตโนมัติด้วย ไม่ใช่แค่สินค้าแบบใช้แล้วหมดไป ดังนั้น consumptionRequestReason จึงเข้าถึงการคืนเงินของคุณได้มากกว่าเดิมมากเมื่อเทียบกับก่อน WWDC24
- เหตุผล FULFILLMENT_ISSUE เป็นสัญญาณว่าการส่งมอบของคุณเองอาจล้มเหลว การโต้แย้งมันจะเผากรอบเวลาทิ้งและเชื้อเชิญให้เกิด chargeback ในภายหลัง การอนุมัติมักเป็นคำตอบที่ถูกกว่า
- คุณตอบกลับด้วยการเรียก Send Consumption Information ภายใน 12 ชั่วโมง โดยตั้ง customerConsented เป็น true และ refundPreference เป็น GRANT_FULL, GRANT_PRORATED หรือ DECLINE Apple ถือว่าความต้องการของคุณเป็นเพียงข้อมูลนำเข้าหนึ่งอย่าง ไม่ใช่คำสั่ง
- การคืนเงินยังคงทำให้คุณเสียค่าประมวลผล การเรียก API พื้นที่จัดเก็บ และเงินจ่ายออกที่การซื้อได้ใช้ไปแล้ว ช่องเหตุผลคือวิธีที่คุณทุ่มการปกป้องเฉพาะกับเคสที่คุ้มค่าแก่การปกป้อง
Apple เปลี่ยนวิธีที่คำขอคืนเงินมาถึงเซิร์ฟเวอร์ของคุณ และนักพัฒนาจำนวนมากไม่เคยสังเกตเห็น ตั้งแต่การอัปเดต App Store Server Notifications 2.11 ที่ประกาศใน WWDC24 ทุกการแจ้งเตือน CONSUMPTION_REQUEST จะมีช่องที่ชื่อว่า consumptionRequestReason ติดมาด้วย มันคือเหตุผลที่ลูกค้าระบุเองในการขอเงินคืน เป็นสตริงธรรมดาหนึ่งค่า มีค่าที่เป็นไปได้ห้าค่า ส่งมาภายใน payload เดียวกับที่คุณมีเวลาสิบสองชั่วโมงในการตอบอยู่แล้ว
เหตุผลคำขอคืนเงินของ Apple ไม่ได้ตัดสินอะไรด้วยตัวมันเอง สิ่งที่มันทำคือบอกคุณว่าคุณกำลังอยู่ในสถานการณ์ไหนจากห้าสถานการณ์ที่แตกต่างกันมาก เพื่อให้คุณเลิกส่งข้อมูลการใช้งานทั่วไปแบบเดียวกันไปยังทั้งการคืนเงินที่ควรอนุมัติและการคืนเงินที่ควรสู้ นี่คือว่าช่องนี้คืออะไร ค่าที่แน่นอนที่ Apple ส่งได้ แต่ละค่าส่งสัญญาณอะไร และมันควรเปลี่ยนความต้องการและหลักฐานที่คุณส่งกลับอย่างไร
consumptionRequestReason คืออะไรกันแน่
consumptionRequestReason เป็นช่องแบบสตริงในอ็อบเจ็กต์ data ของการแจ้งเตือน CONSUMPTION_REQUEST Apple เพิ่มมันเข้ามาใน App Store Server Notifications เวอร์ชัน 2.11 พร้อมกับการเปลี่ยนแปลงกระบวนการคืนเงินใน WWDC24 ก่อนหน้านั้น คำขอมาถึงพร้อมธุรกรรมที่ลงนามแล้วและไม่มีอะไรบอกถึงแรงจูงใจ คุณตอบแบบมืดบอด ตอนนี้เหตุผลที่ลูกค้าระบุเดินทางมาพร้อมกับคำขอ
อ่านคำว่าระบุให้ดี นี่คือเหตุผลที่ลูกค้าเลือกตอนยื่นเรื่องกับ Apple ไม่ใช่ข้อเท็จจริงที่ Apple ตรวจสอบยืนยันแล้ว UNINTENDED_PURCHASE ไม่ได้พิสูจน์ว่าการซื้อไม่ถูกใช้งาน และ UNSATISFIED_WITH_PURCHASE ไม่ได้พิสูจน์ว่าสินค้าเสีย ค่านี้คือเลนส์ ไม่ใช่คำตัดสิน คุณยังต้องจับคู่มันกับบันทึกการส่งมอบและการใช้งานของคุณเอง
มันเดินทางมาในการแจ้งเตือนที่คุณจัดการอยู่แล้ว
CONSUMPTION_REQUEST เป็นกระบวนการเดียวของ Apple ที่ขอหลักฐานจากนักพัฒนาเลยจริงๆ คู่เทียบฝั่ง Google Play คือการรีวิว chargeback ผ่าน orders.reviewrefund เมื่อมีคำขอมาถึง คุณมีเวลา 12 ชั่วโมงในการตอบด้วยการเรียก Send Consumption Information ซึ่งเป็น PUT ไปยัง endpoint การใช้งานของธุรกรรม ตอนนี้ consumptionRequestReason เป็นส่วนหนึ่งของการแจ้งเตือนเดียวกันนั้น จึงไม่มีอะไรใหม่ให้สมัครรับ ถ้าคุณแยกวิเคราะห์ CONSUMPTION_REQUEST อยู่แล้ว เหตุผลก็เป็นแค่ช่องหนึ่งที่คุณอาจมองข้ามไป
ห้าเหตุผล และแต่ละค่ากำลังบอกอะไรคุณ
Apple ระบุไว้ในเอกสารว่ามีห้าค่าพอดี หนึ่งค่ามาต่อหนึ่งคำขอ นี่คือชุดค่าทั้งหมดและวิธีอ่านแต่ละค่าในทางปฏิบัติ
| ค่า | สิ่งที่ลูกค้าระบุ | สิ่งที่มันมักหมายถึงสำหรับคุณ |
|---|---|---|
| UNINTENDED_PURCHASE | พวกเขาไม่ได้ตั้งใจซื้อ | มักเป็นการแตะโดยบังเอิญหรือคนในครอบครัว ตรวจสอบการส่งมอบและการใช้งานก่อนตัดสินใจ |
| FULFILLMENT_ISSUE | พวกเขารับหรือใช้งานมันไม่ได้ | ชี้กลับมาที่การส่งมอบของคุณเอง ตรวจสอบบันทึกก่อนโต้แย้ง |
| UNSATISFIED_WITH_PURCHASE | พวกเขาไม่พอใจกับมัน | ความเสียดายของผู้ซื้อ หลักฐานการใช้งานของคุณมีน้ำหนักมากที่สุดตรงนี้ |
| LEGAL | พวกเขาอ้างเหตุผลทางกฎหมาย | ให้ถือว่าเป็นการอนุมัติ การโต้แย้งคำขอทางกฎหมายไม่คุ้มกับกรอบเวลา |
| OTHER | เหตุผลใดก็ตามที่ไม่ได้ระบุไว้ข้างต้น | ไม่มีสัญญาณด้วยตัวมันเอง ให้กลับไปใช้ข้อมูลการส่งมอบและการใช้งานของคุณ |
UNINTENDED_PURCHASE คือหมวดการแตะโดยบังเอิญ
นี่คือเหตุผลที่ผู้ปกครองเลือกหลังจากลูกซื้อเหรียญ 10,000 เหรียญ หรือผู้ใหญ่ที่กดยืนยันพลาด มันสัมพันธ์กับการซื้อที่ไม่เคยถูกเปิดหรือใช้งาน นั่นแหละคือเหตุผลที่ข้อมูลของคุณเองสำคัญ ถ้าบันทึกของคุณแสดงว่าสินค้าแบบใช้แล้วหมดไปถูกส่งมอบครบและถูกใช้ไปมาก การอ้างว่าซื้อโดยไม่ตั้งใจกับยอดคงเหลือที่ถูกใช้จนหมดย่อมไม่สอดคล้องกัน และช่องว่างนั้นคุ้มค่าที่จะรายงานผ่าน consumptionPercentage
FULFILLMENT_ISSUE ชี้กลับมาที่คุณ
FULFILLMENT_ISSUE เป็นเหตุผลเดียวที่ส่วนหนึ่งเกี่ยวกับแอปของคุณ ไม่ใช่ลูกค้า มันหมายความว่าพวกเขาบอกว่ารับหรือใช้งานสิ่งที่จ่ายเงินไปไม่ได้ ก่อนจะโต้แย้งโดยอัตโนมัติ ให้ดึงบันทึกการส่งมอบของคุณออกมา ถ้าเซิร์ฟเวอร์ของคุณเองแสดงว่าสิทธิ์ไม่เคยถูกเปิดใช้งาน หรือเครดิตไม่เคยถูกบันทึกเข้ามา ลูกค้าถูก และ DECLINE คือความต้องการที่ผิด การสู้กับความล้มเหลวในการส่งมอบที่เกิดขึ้นจริงเป็นการเสียกรอบเวลาไปเปล่าๆ และอาจผลักลูกค้าไปหาธนาคารของพวกเขา ซึ่ง chargeback มีต้นทุนสูงกว่าการคืนเงินเสียอีก
UNSATISFIED_WITH_PURCHASE คือที่ที่หลักฐานเป็นตัวตัดสิน
นี่คือความเสียดายของผู้ซื้อทั่วไป และเป็นเหตุผลที่ข้อมูลการใช้งานของคุณทำงานหนักที่สุด สินค้าใช้งานได้ ลูกค้าใช้มันไปบางส่วนหรือทั้งหมดและตอนนี้ต้องการเงินคืน consumptionPercentage ที่สูง deliveryStatus ที่ซื่อตรงเป็น DELIVERED และ refundPreference เป็น DECLINE หรือ GRANT_PRORATED คือรูปคดีที่ Apple กำลังขอให้คุณสร้างขึ้น ส่งตัวเลขไป ไม่ใช่ข้อโต้แย้ง
LEGAL และ OTHER
LEGAL หมายความว่าลูกค้าอ้างสิทธิ์ทางกฎหมายหรือทางกำกับดูแล คนที่มีเหตุผลอาจเห็นต่างกันได้ แต่ตามหลักแล้วนี่ไม่ใช่กรอบเวลาสำหรับการฟ้องร้อง จงอนุมัติแล้วไปต่อ OTHER คือช่องรวมทุกอย่างที่ Apple ใช้เมื่อเหตุผลที่ระบุไม่ตรงกับสี่ค่าข้างต้นเลย มันไม่มีสัญญาณด้วยตัวเอง ดังนั้นให้จัดการ OTHER เหมือนกับคำขอที่ไม่มีเหตุผลเลยทุกประการ นำด้วยสถานะการส่งมอบและหลักฐานการใช้งานของคุณ

เหตุผลเปลี่ยนคำตอบของคุณอย่างไร ทีละช่อง
คุณตอบกลับ CONSUMPTION_REQUEST ด้วยการเรียก Send Consumption Information พร้อม body แบบ ConsumptionRequest เหตุผลควรกำหนดรูปสามช่องใน body นั้น
customerConsented ต้องเป็น true
Apple ยอมรับการส่งข้อมูลเฉพาะเมื่อ customerConsented เป็น true เท่านั้น ซึ่งหมายความว่าลูกค้ายินยอมให้แบ่งปันข้อมูลการใช้งาน ถ้าคุณไม่มีความยินยอมนั้น คุณจะส่งข้อมูลไม่ได้เลย ไม่ว่าเหตุผลจะเป็นอะไร ไม่มีความยินยอม ไม่มีหลักฐาน และคำขอจะถูกตัดสินโดยไม่มีตัวเลขของคุณ
deliveryStatus และ consumptionPercentage คือตัวถือข้อเท็จจริง
deliveryStatus บอกว่าคุณได้ส่งมอบการซื้อที่ใช้งานได้หรือไม่ ถ้ามันเป็นอะไรก็ตามที่ไม่ใช่ DELIVERED Apple กำหนดให้ consumptionPercentage ต้องเป็น 0 เมื่อคุณส่งมอบจริง consumptionPercentage คือจำนวนเต็มในหน่วย milliunits ตั้งแต่ 0 ถึง 100,000 โดย 100,000 หมายความว่าลูกค้าใช้การซื้อทั้งหมดไปแล้ว คู่นี้คือแกนกลางเชิงข้อเท็จจริงของคุณ และเป็นสิ่งที่ควรถือคดี FULFILLMENT_ISSUE หรือ UNSATISFIED_WITH_PURCHASE ไม่ใช่ตัวเหตุผลเอง
refundPreference คือคันโยกหนึ่งเดียวของคุณ
refundPreference คือที่ที่คุณระบุสิ่งที่คุณต้องการ Apple ระบุไว้ในเอกสารสามค่า ได้แก่ GRANT_FULL, GRANT_PRORATED และ DECLINE อ่านเหตุผล ชั่งน้ำหนักมันกับข้อมูลของคุณ แล้วเลือก FULFILLMENT_ISSUE ที่มีการส่งมอบล้มเหลวในบันทึกของคุณเอนไปทาง GRANT_FULL UNSATISFIED_WITH_PURCHASE บนสินค้าที่ถูกใช้จนหมดเอนไปทาง DECLINE หรือ GRANT_PRORATED LEGAL เอนไปทาง GRANT_FULL
การคืนเงินทำให้คุณเสียอะไรจริงๆ
ช่องเหตุผลสำคัญเพราะการคืนเงินแทบไม่เคยเป็นแค่ยอดขายที่หลุดออกจากบัญชีแยกประเภทของคุณ สำหรับสินค้าแบบใช้แล้วหมดไปที่ทำงานจบไปแล้ว คุณได้จ่ายเงินเพื่อทำให้มันสำเร็จ แพ็กเครดิตที่เรียก API การอนุมานแบบเสียเงิน ชุดภาพที่สร้างขึ้นซึ่งเผาเวลา GPU ไฟล์ส่งออกที่จัดเก็บซึ่งกินค่าบิลพื้นที่จัดเก็บของคุณ เงินจ่ายให้ครีเอเตอร์ที่คุณส่งไปแล้ว ต้นทุนเหล่านั้นยังคงถูกใช้ไปเมื่อการซื้อถูกย้อนกลับ ร้านค้าคืนเงินให้ลูกค้า แต่มันไม่ได้คืนค่าประมวลผลของคุณ
นั่นคือเหตุผลว่าทำไมเหตุผลจึงคุ้มค่าแก่การอ่าน สมมติว่าลูกค้าซื้อเครดิต 5,000 เครดิตซึ่งแต่ละเครดิตกระตุ้นการเรียก API แบบเสียเงิน ใช้ไป 4,000 เครดิต แล้วยื่นเรื่องภายใต้ UNSATISFIED_WITH_PURCHASE deliveryStatus ของคุณคือ DELIVERED consumptionPercentage ของคุณคือ 80,000 milliunits และความต้องการแบบ DECLINE หรือ GRANT_PRORATED คือความต่างระหว่างการแบกค่าบิล API เองกับการเรียกคืนมันได้เกือบทั้งหมด ทีนี้พลิกเหตุผลเป็น FULFILLMENT_ISSUE ที่มีบันทึกแสดงว่าเครดิตไม่เคยถูกบันทึกเข้ามา การเดินหมากที่ซื่อตรงและถูกกว่าคือ GRANT_FULL ก่อนที่ลูกค้าจะยกระดับไปหาธนาคารของพวกเขา
การอ่านเหตุผลโดยไม่ตอบสนองเกินเหตุ
กับดักคือการปฏิบัติต่อเหตุผลราวกับเป็นหลักฐาน UNINTENDED_PURCHASE ไม่ใช่คำสารภาพว่าสินค้าไม่ถูกใช้งาน และ LEGAL ก็ไม่ได้เป็นการอ้างสิทธิ์ทางกฎหมายที่แท้จริงเสมอไป เหตุผลช่วยจำกัดขอบเขตของสถานการณ์ บันทึกการส่งมอบและข้อมูลการใช้งานของคุณต่างหากที่คลี่คลายมัน เมื่อทั้งสองสอดคล้องกับลูกค้า จงอนุมัติแต่เนิ่นๆ และในราคาถูก เมื่อทั้งสองขัดแย้งกับลูกค้า ความขัดแย้งนั้น ที่แสดงออกในรูปของ deliveryStatus และ consumptionPercentage คือสิ่งที่ทรงพลังที่สุดที่คุณส่งได้ RefundHalt อ่าน consumptionRequestReason ในทุก CONSUMPTION_REQUEST และจับคู่มันกับข้อมูลการใช้งานจริงของคุณโดยอัตโนมัติ เพื่อให้แต่ละเหตุผลได้รับการตอบสนองที่สมควรภายในกรอบเวลา 12 ชั่วโมง
การเปลี่ยนแปลงนี้เล็กและพลาดสังเกตได้ง่าย แต่มันขยับบทสนทนาเรื่องการคืนเงินมาอยู่ฝ่ายที่เป็นประโยชน์ต่อคุณ ตอนนี้ Apple กำลังบอกคุณว่าเพราะอะไร ก่อนที่คุณจะตอบ จงใช้มันให้เป็นประโยชน์
คำถามที่พบบ่อย
- consumptionRequestReason คืออะไร
- consumptionRequestReason เป็นช่องแบบสตริงที่ Apple ใส่ไว้ในทุกการแจ้งเตือน CONSUMPTION_REQUEST เพิ่มเข้ามาใน App Store Server Notifications เวอร์ชัน 2.11 ที่ WWDC24 มันระบุเหตุผลของลูกค้าเองในการขอคืนเงิน ให้บริบทแก่คุณก่อนที่จะตอบด้วยข้อมูลการใช้งานภายในกรอบเวลา 12 ชั่วโมง
- ค่าที่เป็นไปได้ของ consumptionRequestReason มีอะไรบ้าง
- มีห้าค่า ได้แก่ UNINTENDED_PURCHASE, FULFILLMENT_ISSUE, UNSATISFIED_WITH_PURCHASE, LEGAL และ OTHER Apple ส่งมาหนึ่งค่าพอดีต่อหนึ่งคำขอคืนเงิน แต่ละค่าชี้ไปยังสถานการณ์ที่ต่างกัน ตั้งแต่การแตะโดยบังเอิญไปจนถึงเหตุผลทางกฎหมายที่ระบุ และแต่ละค่าควรกำหนดรูป refundPreference และข้อมูลการใช้งานที่คุณส่งกลับ
- เหตุผลการคืนเงินตัดสินว่าฉันจะได้เก็บเงินไว้หรือไม่
- ไม่ consumptionRequestReason คือบริบท ไม่ใช่คำตัดสิน Apple ยังคงเป็นผู้ตัดสินการคืนเงิน โดยชั่งน้ำหนัก refundPreference ของคุณ deliveryStatus และ consumptionPercentage ของคุณ รวมถึงประวัติของลูกค้า เหตุผลบอกคุณว่าควรสร้างรูปคดีแบบไหน ข้อมูลการส่งมอบและการใช้งานของคุณต่างหากที่สร้างมันขึ้นมา
- ฉันมีเวลานานแค่ไหนในการตอบ CONSUMPTION_REQUEST
- คุณมีเวลา 12 ชั่วโมงนับจากที่ได้รับการแจ้งเตือน CONSUMPTION_REQUEST ในการเรียก Send Consumption Information การเรียกนั้นต้องตั้ง customerConsented เป็น true มิฉะนั้น Apple จะปฏิเสธ พลาดกรอบเวลาไปแล้วการคืนเงินจะถูกตัดสินโดยไม่มีข้อมูลใดๆ ของคุณ
- consumptionRequestReason ปรากฏกับการคืนเงินการสมัครสมาชิกด้วยหรือไม่
- ใช่ การอัปเดต WWDC24 เดียวกันที่เพิ่ม consumptionRequestReason ยังเริ่มส่ง CONSUMPTION_REQUEST สำหรับการสมัครสมาชิกแบบต่ออายุอัตโนมัติด้วย ไม่ใช่แค่สินค้าแบบใช้แล้วหมดไป สำหรับแอปส่วนใหญ่ นั่นหมายความว่าตอนนี้ช่องเหตุผลเข้าถึงการคืนเงินที่สำคัญที่สุดในเชิงการเงิน
แหล่งข้อมูลและเนื้อหาเพิ่มเติม
RefundHalt
ระบบอัตโนมัติสำหรับการคืนเงินบน App Store และ Google Play
อ่านต่อ
การตรวจสอบ chargeback ของ Google Play ให้เวลาคุณ 24 ชั่วโมงในการโต้กลับ นี่คือสิ่งที่ต้องส่ง
เมื่อธนาคารดึงค่าใช้จ่าย Google Play กลับคืน Google จะส่ง PendingRefundReviewNotification มายังเซิร์ฟเวอร์ของคุณและเริ่มนาฬิกานับ 24 ชั่วโมง ตอบกลับผ่าน ReviewRefund API ด้วยความชอบเรื่องการคืนเงินและหลักฐานการใช้งานจริง มิฉะนั้นข้อพิพาทจะถูกตัดสินโดยไม่มีคุณ นี่คือกระบวนการทั้งหมด ทีละฟิลด์
แนบ appAccountToken กับทุกการซื้อบน App Store ไม่เช่นนั้นคุณจะปกป้องการคืนเงินไม่ได้
Apple ส่ง CONSUMPTION_REQUEST ไปยังเซิร์ฟเวอร์ของคุณเมื่อลูกค้าขอคืนเงิน แต่ธุรกรรมไม่เคยบอกว่าพวกเขาเป็นใคร appAccountToken คือ UUID ที่เชื่อมโยงการซื้อกลับไปยังผู้ใช้ของคุณ ตั้งค่ามันแล้วคุณจะตอบ Apple ด้วยข้อมูลจริงได้ ข้ามมันไปแล้วคุณก็ได้แต่เดา