บทความทั้งหมด
Deep diveใช้เวลาอ่าน 9 นาที

อ่านรหัสเหตุผลการคืนเงินที่เซิร์ฟเวอร์ของคุณได้รับอยู่แล้ว แล้วมันจะบอกคุณว่าควรแก้แอปหรือควรสู้กับลูกค้า

การคืนเงินทุกครั้งที่ Apple และ Google ส่งมายังเซิร์ฟเวอร์ของคุณมีรหัสเหตุผลติดมาด้วย Google Play ประทับหนึ่งในเก้าเหตุผลและแหล่งที่มาบนการยกเลิกทุกครั้ง ส่วน Apple ระบุว่าการคืนเงินนั้นโทษแอปของคุณหรือไม่ นี่คือความหมายของแต่ละรหัส วิธีจัดกลุ่มออกเป็นแก้ สู้ หรือยอมรับ และมูลค่าของมันในรูปตัวเงิน

รอยประทับรหัสด้วยตรายางบนป้ายกระดาษข้างแว่นขยาย แทนรหัสเหตุผลการคืนเงินที่เซิร์ฟเวอร์ของคุณได้รับในการคืนเงินทุกครั้ง

ประเด็นสำคัญ

  • การคืนเงินทุกครั้งที่ Apple หรือ Google ส่งมายังเซิร์ฟเวอร์ของคุณมีรหัสเหตุผลการคืนเงินติดมาด้วย และมันคือส่วนเดียวของการคืนเงินที่คุณอ่านได้หลังจากเงินถูกโอนไปแล้ว มันบอกว่าทำไมการคืนเงินจึงเกิดขึ้น ซึ่งบอกคุณว่าต้องทำอะไรต่อ
  • Voided Purchases API ของ Google Play ประทับตัวเลขสองตัวบนการยกเลิกทุกครั้ง คือ voidedReason ตั้งแต่ 0 ถึง 8 (อื่นๆ, เปลี่ยนใจ, ไม่ได้รับสินค้า, ชำรุด, ซื้อโดยไม่ตั้งใจ, ฉ้อโกง, ฉ้อโกงโดยคนรู้จัก, การปฏิเสธการชำระเงิน, การซื้อที่ไม่ได้รับการยืนยัน) และ voidedSource เป็น 0 ผู้ใช้, 1 นักพัฒนา, หรือ 2 Google
  • Apple ให้สัญญาณที่แคบกว่าแต่คมชัด บนธุรกรรมที่คืนเงิน revocationReason จะเป็น 1 เมื่อ App Store คืนเงินเพราะปัญหาจริงหรือปัญหาที่รับรู้ภายในแอปของคุณ และเป็น 0 เมื่อคืนเงินด้วยเหตุผลอื่น เช่น การซื้อโดยไม่ตั้งใจ
  • รหัสจัดออกเป็นสามกอง ชำรุด, ไม่ได้รับสินค้า, ไม่ได้รับการยืนยัน และรหัสปัญหาในแอปของ Apple ชี้ไปที่ผลิตภัณฑ์ของคุณ ดังนั้นคุณต้องแก้ ฉ้อโกง, ฉ้อโกงโดยคนรู้จัก และการปฏิเสธการชำระเงินคือข้อพิพาทที่คุณต้องสู้หรือป้องกัน ส่วนการเปลี่ยนใจและการซื้อโดยไม่ตั้งใจไม่เคยเป็นสิ่งที่คุณหยุดได้
  • voidedReason 8 การซื้อที่ไม่ได้รับการยืนยัน คือการคืนเงินที่คุณออกใบเรียกเก็บให้ตัวเอง Google คืนเงินและเพิกถอนอัตโนมัติสำหรับการซื้อใดก็ตามที่แอปของคุณไม่ยืนยันภายในสามวัน และรหัสนี้คือวิธีที่คุณค้นพบบั๊กนั้นในการเชื่อมต่อของคุณเอง
  • voidedReason 7 การปฏิเสธการชำระเงิน คือรหัสที่แพง สำหรับคำสั่งซื้อ Google Play ที่วางตั้งแต่วันที่ August 3, 2026 เป็นต้นไป การแพ้การปฏิเสธการชำระเงินทำให้นักพัฒนาเสียราคาซื้อหักค่าบริการของ Play บวกค่าธรรมเนียมการปฏิเสธการชำระเงินของธนาคาร ดังนั้นการนับการยกเลิกที่มีรหัสการปฏิเสธการชำระเงินคือการนับต้นทุนที่เพิ่มขึ้นจริง
  • Voided Purchases API ย้อนดูได้เพียง 30 วัน และกรองตามเวลาที่ Google เห็นการยกเลิก ไม่ใช่เวลาที่ซื้อ ดังนั้นรหัสเหตุผลที่คุณไม่เก็บภายในหน้าต่างนั้นคือรหัสเหตุผลที่คุณเสียไปตลอดกาล

เมื่อ Apple หรือ Google คืนเงินให้ลูกค้าของคุณคนหนึ่ง เงินมักจะหายไปก่อนที่คุณจะได้ออกเสียง สิ่งที่มาถึงเซิร์ฟเวอร์ของคุณหลังจากนั้นดูเหมือนใบเสร็จ และทีมส่วนใหญ่ก็ปฏิบัติกับมันแบบนั้น แต่มันมากกว่านั้น การคืนเงินทุกครั้งมีรหัสเหตุผลการคืนเงินติดมา และมันคือส่วนเดียวของการคืนเงินที่คุณยังได้อ่านหลังจากตัดสินใจไปแล้ว Google Play บอกคุณว่าการคืนเงินนั้นเป็นการปฏิเสธการชำระเงิน หรือคำขอเพราะเปลี่ยนใจ หรือการซื้อที่แอปของคุณเองไม่เคยยืนยัน Apple บอกคุณว่าการคืนเงินนั้นโทษบางอย่างภายในแอปของคุณหรือไม่ อ่านรหัสนั้นแล้วการคืนเงินจะไม่ใช่แค่บรรทัดในรายงานอีกต่อไป แต่กลายเป็นคำสั่ง แก้อันนี้ สู้อันนี้ หรือปล่อยอันนี้ไป นี่คือความหมายของทุกรหัส วิธีคัดแยก และต้นทุนของแต่ละอัน

รหัสเหตุผลการคืนเงินคืออะไรจริงๆ

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

Google Play ประทับเหตุผลและแหล่งที่มาบนการยกเลิกทุกครั้ง

Voided Purchases API ของ Google Play คืนหนึ่งระเบียนต่อการซื้อที่ถูกยกเลิกหนึ่งรายการ และแต่ละระเบียนมีจำนวนเต็มสองตัวที่สำคัญ voidedReason บอกว่าทำไมการซื้อจึงถูกยกเลิก voidedSource บอกว่าใครเป็นคนเริ่ม เมื่อรวมกันมันเปลี่ยนการคืนเงินเปล่าๆ ให้เป็นประโยค คำสั่งซื้อนี้ถูกยกเลิกเพราะการปฏิเสธการชำระเงิน เริ่มโดย Google หรือถูกยกเลิกเพราะเปลี่ยนใจ เริ่มโดยผู้ใช้ คุณอ่านค่าเหล่านี้ได้โดยการ poll API หรือสมัครรับการแจ้งเตือนนักพัฒนาแบบเรียลไทม์ที่ยิงเมื่อการยกเลิกมาถึง ไม่ว่าทางไหน ตัวเลขสองตัวนี้คือ payload ที่ควรเก็บไว้

Apple ให้สัญญาณที่แคบกว่า แต่คมชัด

Apple ไม่ได้ให้เหตุผลเก้าทางแก่คุณ บนธุรกรรมที่คืนเงิน Apple ตั้งค่า revocationReason เป็นหนึ่งในสองค่า ค่า 1 หมายความว่า App Store คืนเงินธุรกรรมเพราะปัญหาจริงหรือปัญหาที่รับรู้ภายในแอปของคุณ ค่า 0 หมายความว่าคืนเงินด้วยเหตุผลอื่น เช่น การซื้อโดยไม่ตั้งใจ ฟิลด์นี้ปรากฏเฉพาะบนธุรกรรมที่ถูกคืนเงินหรือเพิกถอน พร้อมกับ revocationDate ภายในข้อมูลธุรกรรมที่ลงนามของ REFUND App Store Server Notification สองค่าอาจไม่มาก แต่ค่าที่สำคัญคือ 1 ซึ่งเป็น Apple ที่บอกคุณว่าการคืนเงินเกี่ยวกับผลิตภัณฑ์ของคุณ ไม่ใช่การเปลี่ยนใจของลูกค้า

เก้าเหตุผลที่ Google Play ให้คุณ

voidedReason ของ Google เป็นตัวที่ให้ข้อมูลมากกว่าในสองตัว และทุกค่าคุ้มที่จะรู้ทันทีเพราะแต่ละค่าชี้ไปคนละที่ นี่คือชุดเต็ม ตรงจากรีซอร์ส VoidedPurchase พร้อมกับสิ่งที่แต่ละรหัสบอกให้คุณทำจริงๆ

voidedReasonป้ายกำกับของ Googleรหัสนี้บอกอะไรคุณ
0อื่นๆไม่มีการบันทึกเหตุผลเฉพาะเจาะจง จัดลงกลุ่มและเฝ้าดูปริมาณ ไม่ใช่กรณีเดียว
1เปลี่ยนใจลูกค้าเปลี่ยนใจ ไม่มีอะไรผิดกับแอปของคุณ
2ไม่ได้รับสินค้าลูกค้าบอกว่าไม่เคยได้รับสิ่งที่จ่ายเงินไป ปัญหาการส่งมอบที่ต้องตรวจสอบ
3ชำรุดการซื้อใช้ไม่ได้ บั๊กของผลิตภัณฑ์ และเป็นรหัสที่ลงมือแก้ได้มากที่สุดในรายการนี้
4ซื้อโดยไม่ตั้งใจคลิกพลาดหรือซื้อโดยไม่ได้ตั้งใจ พิจารณาขั้นตอนยืนยันที่ชัดเจนขึ้น
5ฉ้อโกงGoogle ตั้งธงว่าธุรกรรมเป็นการฉ้อโกง ไม่ใช่ลูกค้าของคุณ และไม่ใช่รายได้ที่คุณจะเก็บไว้
6ฉ้อโกงโดยคนรู้จักผู้ซื้อโต้แย้งการเรียกเก็บที่ตัวเองทำและได้รับ หลักฐานยังพอแตะต้องอันนี้ได้
7การปฏิเสธการชำระเงินธนาคารกลับรายการเรียกเก็บ เส้นทางที่แพงที่สุด ตอนนี้มีค่าธรรมเนียมติดมาด้วย
8การซื้อที่ไม่ได้รับการยืนยันแอปของคุณไม่เคยยืนยันการซื้อ Google จึงคืนเงินอัตโนมัติ บั๊กในโค้ดของคุณ

voidedSource บอกคุณว่าใครเป็นคนลั่นไก

ข้างเหตุผลคือ voidedSource และมันตอบคำถามอีกข้อ ใครกลับรายการนี้ ค่า 0 หมายความว่าผู้ใช้ทำเอง ผ่านบริการตนเองหรือธนาคาร ค่า 1 หมายความว่านักพัฒนาทำ ซึ่งก็คือคุณหรือเครื่องมือของคุณเองที่ออกการคืนเงิน ค่า 2 หมายความว่า Google ทำ ตามวิจารณญาณของตัวเอง รวมถึงการคืนเงินอัตโนมัติสำหรับการซื้อที่ไม่ได้รับการยืนยัน เมื่อคุณเห็นการยกเลิกพุ่งขึ้น แหล่งที่มาคือการตัดกลุ่มแรก กำแพงของ source 2 คือ Google ที่ลงมือกับบัญชีของคุณ และนั่นมักเป็นสัญญาณที่ชี้กลับไปที่การเชื่อมต่อของคุณมากกว่าที่ลูกค้าของคุณ

คัดแยกการคืนเงินทุกครั้งออกเป็นแก้ สู้ หรือยอมรับ

เหตุผลที่รหัสมีประโยชน์คือมันบอกว่าการคืนเงินสมควรได้รับหนึ่งในสามการตอบสนอง ทีมส่วนใหญ่ปฏิบัติกับการคืนเงินทุกครั้งเหมือนกันและทุ่มแรงไปกับอันที่ไม่มีวันชนะ รหัสแบ่งออกอย่างชัดเจน

แก้ การคืนเงินที่ผลิตภัณฑ์ของคุณทำให้เกิด

บางรหัสคือรายงานบั๊กที่สวมเสื้อผ้าของการคืนเงิน ชำรุด (3) และไม่ได้รับสินค้า (2) บน Google และ revocationReason เป็น 1 บน Apple ล้วนบอกสิ่งเดียวกัน ลูกค้าจ่ายเงินและแอปของคุณไม่ส่งมอบ การซื้อที่ไม่ได้รับการยืนยัน (8) คมชัดที่สุดในกลุ่มนี้เพราะความผิดอยู่ในโค้ดการเรียกเก็บของคุณทั้งหมด นี่คือการคืนเงินที่กำจัดได้ถูกที่สุด เพราะคุณกำจัดมันด้วยการแก้สิ่งที่คุณเป็นเจ้าของ ไม่ใช่ด้วยการโน้มน้าวใคร จำนวนที่เพิ่มขึ้นในกองนี้คือข้อบกพร่องของผลิตภัณฑ์ที่มีมูลค่าเป็นตัวเงินติดมาด้วย

สู้ การคืนเงินที่มีคนกำลังจัดการ

ฉ้อโกง (5) ฉ้อโกงโดยคนรู้จัก (6) และการปฏิเสธการชำระเงิน (7) คือข้อพิพาท ฉ้อโกงล้วน (5) ไม่ใช่ลูกค้าของคุณและไม่ใช่รายได้ที่คุณจะเก็บไว้ได้ตั้งแต่แรก ฉ้อโกงโดยคนรู้จัก (6) ที่ผู้ซื้อได้รับสิ่งที่จ่ายเงินไปพอดีแล้วโต้แย้ง คือข้อพิพาทเดียวที่หลักฐานของคุณยังขยับได้ และการปฏิเสธการชำระเงิน (7) คือที่ที่หลักฐานนั้นถูกยื่น เมื่อหนึ่งในนี้มาถึง คุณเพิกถอนการเข้าถึงถ้ายังไม่ได้ทำ และที่ใดมีหน้าต่างการตรวจสอบเปิดอยู่ คุณตอบมันด้วยสิ่งที่คุณรู้เกี่ยวกับบัญชีนั้น

ยอมรับ การคืนเงินที่ไม่เคยเป็นของคุณที่จะหยุด

เปลี่ยนใจ (1) และซื้อโดยไม่ตั้งใจ (4) คือการเปลี่ยนใจของลูกค้าเอง revocationReason เป็น 0 ของ Apple อยู่ตรงนี้ด้วย ไม่มีฟีเจอร์ล้มเหลวและไม่มีการฉ้อโกงเกิดขึ้น คุณลดกลุ่มซื้อโดยไม่ตั้งใจได้ด้วยการยืนยันการซื้อที่ชัดเจนขึ้น แต่คุณโต้แย้งการคืนเงินเพราะเปลี่ยนใจให้หายไปไม่ได้ และเวลาที่ใช้พยายามคือเวลาที่แย่งมาจากกองแก้ที่เงินอยู่ตรงนั้นจริงๆ

กลุ่มรหัส Googleสัญญาณ Appleสิ่งที่คุณต้องทำ
แก้2 ไม่ได้รับสินค้า, 3 ชำรุด, 8 ไม่ได้รับการยืนยันrevocationReason 1หาสาเหตุรากของบั๊กผลิตภัณฑ์หรือการเรียกเก็บที่อยู่เบื้องหลัง
สู้5 ฉ้อโกง, 6 ฉ้อโกงโดยคนรู้จัก, 7 การปฏิเสธการชำระเงิน(ปรากฏผ่าน REFUND ไม่ใช่ผ่านเหตุผล)เพิกถอนการเข้าถึง ตอบหน้าต่างการตรวจสอบด้วยหลักฐาน
ยอมรับ1 เปลี่ยนใจ, 4 ซื้อโดยไม่ตั้งใจrevocationReason 0บันทึกไว้ ปรับกระบวนการซื้อ แล้วเดินต่อ
ถาดคัดแยกสามใบที่มีป้ายกำกับบนโต๊ะทำงานกำลังรับโทเคนโลหะที่ถูกคัดแยก ถาดหนึ่งสว่างกว่า แทนการคัดแยกการคืนเงินตามรหัสเหตุผลออกเป็นแก้ สู้ และยอมรับ

กับดัก 30 วันที่ทำให้รหัสเหตุผลหายไปง่าย

มีขีดจำกัดที่เข้มงวดฝั่ง Google ที่เปลี่ยนสิ่งนี้จากฟีเจอร์การรายงานให้เป็นเส้นตาย ถ้าคุณไม่เก็บรหัสอย่างต่อเนื่อง คุณกำลังสูญเสียมัน

Voided Purchases API ย้อนดูได้เพียง 30 วัน

Google ระบุชัดว่า API แสดงได้เฉพาะการซื้อที่ถูกยกเลิกจาก 30 วันที่ผ่านมา การยกเลิกที่เก่ากว่าจะไม่ถูกคืนไม่ว่าคุณส่ง startTime อะไร และค่า startTime เองก็ตั้งให้เก่ากว่า 30 วันที่แล้วไม่ได้ ที่แย่กว่าสำหรับการเชื่อมต่อแบบไร้เดียงสา หน้าต่าง 30 วันวัดจากเวลาที่ระบบของ Google เห็นว่าการซื้อถูกยกเลิก ไม่ใช่จากเวลาที่ซื้อหรือแม้แต่จาก voidedTimeMillis ในระเบียน ดังนั้นรหัสเหตุผลการคืนเงินที่คุณไม่ดึงภายในหน้าต่างนั้นก็หายไป และงานส่งออกรายเดือนที่มีช่องว่างจะทิ้งการยกเลิกที่มันจับไม่ทันไปอย่างเงียบๆ

รหัสเหตุผลมีมูลค่าเท่าไรในรูปตัวเงิน

สองรหัสมีราคาที่เจาะจง และการอ่านมันคือวิธีที่คุณใส่ตัวเลขให้กับปัญหาที่มิฉะนั้นจะซ่อนอยู่ในอัตราการคืนเงินรวม

รหัสหนึ่งคือใบเรียกเก็บที่คุณเขียนให้ตัวเอง

voidedReason 8 การซื้อที่ไม่ได้รับการยืนยัน คือตัวอย่างที่ชัดที่สุดของการคืนเงินที่คุณทำให้เกิด Google Play กำหนดให้แอปของคุณยืนยันการซื้อภายในสามวันหลังจากมอบสิทธิ์ และถ้าคุณไม่ทำ Google จะคืนเงินคำสั่งซื้ออัตโนมัติและเพิกถอนรายการ ทุกการยกเลิกที่ประทับ 8 คือการขายจริงจากลูกค้าที่ต้องการผลิตภัณฑ์ ส่งคืนเพราะการเรียกยืนยันการซื้อไม่เคยถูกยิง จำนวนที่เสียคือราคาขายเต็มบวกการประมวลผล การเรียก API และพื้นที่จัดเก็บที่คุณจ่ายไปแล้วในการส่งมอบ นี่ไม่ใช่การคืนเงินที่คุณต่อรอง มันคือบั๊กที่คุณปิด และรหัสคือวิธีที่คุณค้นพบมัน

รหัสการปฏิเสธการชำระเงินตอนนี้มีค่าธรรมเนียมติดมา

voidedReason 7 การปฏิเสธการชำระเงิน เปลี่ยนต้นทุนเมื่อวันที่ August 3, 2026 สำหรับคำสั่งซื้อ Google Play ที่วางตั้งแต่วันนั้นเป็นต้นไป การแพ้การปฏิเสธการชำระเงินทำให้นักพัฒนาเสียราคาซื้อหักค่าบริการของ Play บวกค่าธรรมเนียมการปฏิเสธการชำระเงินของธนาคาร ขณะที่ Google รับผิดชอบเฉพาะค่าบริการของตัวเอง เพราะค่าธรรมเนียมการปฏิเสธการชำระเงินเป็นแบบคงที่และราคาผลิตภัณฑ์ไม่ใช่ บนการซื้อในแอปราคาถูก ค่าธรรมเนียมอย่างเดียวอาจมากกว่าที่ลูกค้าจ่าย การนับการยกเลิกรหัส 7 ของคุณตอนนี้คือการนับรายการต้นทุน ไม่ใช่แค่การขายที่เสียไป ซึ่งเป็นเหตุผลว่าทำไมกลุ่มการปฏิเสธการชำระเงินสมควรมีแถวของตัวเองในรายงานการคืนเงินใดก็ตามที่คุณสร้าง

รหัสเหตุผลมันทำให้คุณเสียอะไรทำไมรหัสจึงสำคัญ
8 การซื้อที่ไม่ได้รับการยืนยันราคาขายเต็มบวกต้นทุนการส่งมอบ บนการขายที่ลูกค้าต้องการมันเกิดจากตัวเอง รหัสจึงเป็นตัวติดตามบั๊ก
7 การปฏิเสธการชำระเงิน (คำสั่งซื้อตั้งแต่ Aug 3, 2026)ราคาขายหักค่าบริการของ Play บวกค่าธรรมเนียมการปฏิเสธการชำระเงินของธนาคารรหัสเดียวที่เพิ่มค่าธรรมเนียมบนการขายที่เสียไป
3 ชำรุดราคาขายบวกต้นทุนการส่งมอบ ซ้ำสำหรับลูกค้าทุกคนที่เจอบั๊กปริมาณในรหัสนี้วัดขนาดข้อบกพร่องของผลิตภัณฑ์เป็นตัวเงิน
1 เปลี่ยนใจราคาขาย และต้นทุนการส่งมอบที่คุณจ่ายไปแล้วต้นทุนจริง แต่ไม่ใช่อันที่การเปลี่ยนรหัสจะกู้คืนได้

Apple และ Google เทียบกันอย่างไร

สองสโตร์ตอบคำถามเดียวกันที่ความละเอียดต่างกัน ดังนั้นรายงานการคืนเงินข้ามสโตร์ต้องทำให้เป็นมาตรฐานเดียวกัน แทนที่จะคาดหวังให้มันตรงกัน

คำถามApp StoreGoogle Play
รหัสอยู่ที่ไหนrevocationReason ในธุรกรรมที่ลงนามของการแจ้งเตือน REFUNDvoidedReason ใน Voided Purchases API และการแจ้งเตือนของมัน
มีกี่เหตุผลสอง คือ 1 ปัญหาในแอปของคุณ, 0 อื่นๆเก้า จาก 0 อื่นๆ ถึง 8 การซื้อที่ไม่ได้รับการยืนยัน
ใครทำไม่ได้แยกออกมาvoidedSource: 0 ผู้ใช้, 1 นักพัฒนา, 2 Google
ย้อนอ่านได้ไกลแค่ไหนมีอยู่บนธุรกรรมทุกครั้งที่คุณ queryเฉพาะการยกเลิกใน 30 วันที่ผ่านมา
สัญญาณที่คมชัดที่สุดค่า 1 หมายความว่าการคืนเงินเกี่ยวกับผลิตภัณฑ์ของคุณรหัส 3, 8 และ 7 แต่ละตัวชี้ไปที่ต้นทุนที่แก้ได้แตกต่างกัน

สองสโตร์จะไม่มีวันให้รหัสเดียวกันแก่คุณสำหรับการคืนเงินเดียวกัน และนั่นก็ไม่เป็นไร สิ่งที่สำคัญคือทั้งคู่มอบเหตุผลที่เครื่องอ่านได้ให้คุณ และทั้งคู่ให้รางวัลกับทีมที่อ่านมัน บิตเดียวของ Apple บอกคุณว่าเมื่อไรการคืนเงินเป็นความผิดของผลิตภัณฑ์ของคุณ เก้าเหตุผลและธงแหล่งที่มาของ Google บอกคุณว่าบั๊กผลิตภัณฑ์ตัวไหน ข้อพิพาทอันไหน และช่องว่างการเรียกเก็บที่เกิดจากตัวเองอันไหนที่คุณกำลังมองอยู่ ไม่มีรหัสไหนหยุดการคืนเงิน แต่ทั้งคู่บอกคุณว่าต้องทำอะไรเพื่อไม่ให้ครั้งต่อไปเกิดขึ้น

RefundHalt เก็บรหัสเหตุผลบนการคืนเงินทุกครั้งในทันทีที่มันมาถึง บนทั้งสองสโตร์ และเก็บไว้ภายในหน้าต่าง 30 วันของ Google อย่างสบายๆ เพื่อไม่ให้อะไรหลุดลอยไป มันคัดแยกการยกเลิกแต่ละครั้งออกเป็นแก้ สู้ หรือยอมรับ ดังนั้นการพุ่งขึ้นของรหัส 3 ชำรุด จะมาถึงคุณเป็นการแจ้งเตือนผลิตภัณฑ์ และการพุ่งขึ้นของรหัส 8 ไม่ได้รับการยืนยัน จะมาถึงคุณเป็นบั๊กการเชื่อมต่อ ไม่ใช่การลดลงของรายได้ที่คลุมเครือ มันตอบ CONSUMPTION_REQUEST ของ Apple ภายใน 12 ชั่วโมง และการตรวจสอบการปฏิเสธการชำระเงินของ Google Play ภายใน 24 และเพิกถอนการเข้าถึงในทันทีที่การคืนเงินหรือการปฏิเสธการชำระเงินมาถึง คุณเปลี่ยนรหัสที่สโตร์ประทับบนการคืนเงินไม่ได้ แต่คุณทำให้แน่ใจได้ว่าคุณอ่านทุกอันและลงมือกับอันที่เป็นของคุณที่จะแก้จริงๆ

คำถามที่พบบ่อย

รหัสเหตุผลการคืนเงินบน App Store และ Google Play คืออะไร
มันคือป้ายกำกับของสโตร์เองที่บอกว่าทำไมการซื้อจึงถูกยกเลิก ส่งมายังเซิร์ฟเวอร์ของคุณพร้อมกับการคืนเงิน Voided Purchases API ของ Google Play คืน voidedReason ตั้งแต่ 0 ถึง 8 และ voidedSource เป็น 0 ผู้ใช้, 1 นักพัฒนา, หรือ 2 Google Apple ตั้งค่า revocationReason เป็น 1 เมื่อการคืนเงินเกิดจากปัญหาภายในแอปของคุณ หรือ 0 สำหรับเหตุผลอื่น เช่น การซื้อโดยไม่ตั้งใจ คุณไม่ได้ตั้งค่ารหัสและเปลี่ยนมันไม่ได้ แต่การอ่านมันบอกคุณว่าการคืนเงินชี้ไปที่ผลิตภัณฑ์ของคุณ ข้อพิพาท หรือการเปลี่ยนใจของลูกค้า
ค่า voidedReason ของ Google Play มีอะไรบ้าง
มีเก้าค่า 0 อื่นๆ, 1 เปลี่ยนใจ, 2 ไม่ได้รับสินค้า, 3 ชำรุด, 4 ซื้อโดยไม่ตั้งใจ, 5 ฉ้อโกง, 6 ฉ้อโกงโดยคนรู้จัก, 7 การปฏิเสธการชำระเงิน, และ 8 การซื้อที่ไม่ได้รับการยืนยัน แต่ละค่าถูกคืนต่อการซื้อที่ถูกยกเลิกโดย Voided Purchases API พร้อมกับ voidedSource ที่บอกว่าใครเริ่มการยกเลิก รหัส 2, 3 และ 8 ชี้ไปที่ปัญหาในแอปของคุณเอง รหัส 5, 6 และ 7 คือข้อพิพาท และรหัส 1 และ 4 คือการตัดสินใจของลูกค้าเอง
revocationReason เป็น 1 ของ Apple หมายความว่าอะไร
มันหมายความว่า App Store คืนเงินธุรกรรมเพราะปัญหาจริงหรือปัญหาที่รับรู้ภายในแอปของคุณ ตรงข้ามกับค่า 0 ซึ่งหมายความว่าการคืนเงินเกิดจากเหตุผลอื่น เช่น การซื้อโดยไม่ตั้งใจ ฟิลด์นี้ปรากฏเฉพาะบนธุรกรรมที่ถูกคืนเงินหรือเพิกถอน พร้อมกับ revocationDate ภายในข้อมูลธุรกรรมที่ลงนามของ REFUND App Store Server Notification ค่า 1 คือ Apple ที่บอกคุณว่าการคืนเงินเกี่ยวกับผลิตภัณฑ์ของคุณ
ทำไม Google จึงคืนเงินการซื้อด้วยรหัสเหตุผลไม่ได้รับการยืนยัน
เพราะแอปของคุณไม่ยืนยันการซื้อทันเวลา Google Play กำหนดให้คุณยืนยันการซื้อภายในสามวันหลังจากมอบสิทธิ์ และถ้าคุณไม่ทำ Google จะคืนเงินคำสั่งซื้ออัตโนมัติและเพิกถอนรายการ โดยประทับการยกเลิกด้วย voidedReason 8 มันคือการคืนเงินที่คุณทำให้เกิดด้วยบั๊กการเรียกเก็บ ไม่ใช่คำขอของลูกค้า ดังนั้นการแก้อยู่ในโค้ดประมวลผลการซื้อของคุณ ไม่ใช่ในการต่อรองใดๆ
ฉันย้อนอ่านรหัสเหตุผลการคืนเงินได้ไกลแค่ไหน
บน Google Play เพียง 30 วัน Voided Purchases API คืนการยกเลิกจาก 30 วันที่ผ่านมาและเพิกเฉยต่อ startTime ใดที่เก่ากว่านั้น และมันวัดหน้าต่างจากเวลาที่ Google เห็นการยกเลิก ไม่ใช่จากเวลาที่ซื้อ รหัสที่คุณไม่เก็บภายใน 30 วันจะหายไป ดังนั้นคุณควรสมัครรับการแจ้งเตือนการซื้อที่ถูกยกเลิกแบบเรียลไทม์หรือ poll ตามตารางที่อยู่ภายในหน้าต่างอย่างดี revocationReason ของ Apple ยังคงอยู่บนธุรกรรมทุกครั้งที่คุณ query

แหล่งข้อมูลและเนื้อหาเพิ่มเติม

RefundHalt

ระบบอัตโนมัติสำหรับการคืนเงินบน App Store และ Google Play

อ่านต่อ

Deep diveใช้เวลาอ่าน 8 นาที

การซื้อในแอปที่เด็กทำโดยไม่ได้รับอนุญาตแทบทุกครั้งจะถูกคืนเงินให้ผู้ปกครอง และคุณคือคนที่ต้องแบกรับต้นทุน

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

Deep diveใช้เวลาอ่าน 8 นาที

คุณไม่เคยเป็นเจ้าของภาษีในการคืนเงินของแอป ดังนั้นการคืนเงินจึงเสียเพียงส่วนแบ่งของคุณ ไม่ใช่ยอดรวมบนใบเสร็จ

คืนเงินการซื้อในแอปแล้วใบเสร็จจะแสดงราคาบวกภาษีที่ถูกส่งคืน ภาษีนั้นไม่เคยเป็นเงินของคุณ Apple และ Google เก็บและนำส่งภาษีในฐานะผู้ค้าที่รับผิดชอบตามกฎหมาย จากนั้นก็ย้อนกลับเมื่อมีการคืนเงินโดยไม่แตะต้องส่วนแบ่งของคุณ นี่คือต้นทุนที่แท้จริงของการคืนเงิน และการตั้งค่าแบบเดียวที่ทำให้ภาษีกลายเป็นของคุณ

คำขอคืนเงินครั้งต่อไปกำลังมา

ตั้งค่า RefundHalt ได้ในเวลาพอ ๆ กับการอ่านอีเมลฝ่ายช่วยเหลืออีกฉบับเกี่ยวกับการคืนเงินที่คุณไม่มีโอกาสโต้แย้ง