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