บทความทั้งหมด
คู่มือปฏิบัติใช้เวลาอ่าน 9 นาที

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

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

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

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

  • Apple ลองส่ง App Store Server Notifications V2 ที่ล้มเหลวซ้ำห้าครั้ง ที่ 1, 12, 24, 48 และ 72 ชั่วโมงหลังความพยายามครั้งก่อน ดังนั้นการส่งซ้ำครั้งที่สองจะมาถึงราว 13 ชั่วโมงหลังการส่งครั้งแรก
  • Apple ขอให้นักพัฒนาตอบ CONSUMPTION_REQUEST ภายใน 12 ชั่วโมงหลังได้รับ ดังนั้นเซิร์ฟเวอร์ที่พลาดการส่งครั้งแรกและการส่งซ้ำหลังหนึ่งชั่วโมง อาจเห็นคำขอก็ต่อเมื่อกรอบเวลานั้นน่าจะหมดไปแล้ว
  • endpoint Get Notification History ของ Apple ส่งคืนการแจ้งเตือน V2 ย้อนหลัง 180 วันใน production หน้าละ 20 รายการ และแฟล็ก onlyFailures จำกัดผลลัพธ์ไว้ที่การแจ้งเตือนที่ไม่เคยไปถึงเซิร์ฟเวอร์ของคุณ รวมถึงรายการที่ยังอยู่ระหว่างการส่งซ้ำ
  • Google Play ส่งคำขอพิจารณา chargeback ผ่าน PendingRefundReviewNotification เท่านั้น และ pendingRefundToken ที่ต้องใช้เรียก orders.reviewrefund ภายใน 24 ชั่วโมงก็มากับการแจ้งเตือนนั้น Google ไม่ได้ระบุ API แยกที่แสดงรายการคำขอพิจารณาที่รอดำเนินการ
  • Google Cloud Pub/Sub เก็บข้อความที่ยังไม่ได้รับการ acknowledge ไว้ 7 วันโดยค่าเริ่มต้น สูงสุด 31 วัน และจะลบ subscription หลังไม่มีกิจกรรมจาก subscriber เป็นเวลา 31 วัน เว้นแต่คุณจะเปลี่ยนระยะเวลาหมดอายุ
  • Voided Purchases API ของ Google Play กู้คืนการคืนเงิน การเพิกถอน และ chargeback ย้อนหลัง 30 วัน ด้วยโควตา 6,000 คำค้นต่อวันและ 30 คำค้นในทุกช่วง 30 วินาที แต่ไม่สามารถกู้คืนคำขอพิจารณา chargeback ที่คุณไม่เคยตอบได้
  • sandbox ของ Apple ส่งการแจ้งเตือนแต่ละรายการเพียงครั้งเดียวโดยไม่มีการส่งซ้ำ ดังนั้นขั้นตอนการกู้คืนที่เคยรันแค่ใน sandbox จึงไม่เคยถูกทดสอบกับตารางการส่งซ้ำจริงของ Apple เลย

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

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

แต่ละสโตร์ส่งการแจ้งเตือนการคืนเงินอย่างไร

Apple ส่ง App Store Server Notifications ตรงไปยัง URL แบบ HTTPS ที่คุณตั้งไว้ใน App Store Connect ส่วน Google ไม่ได้เรียกเซิร์ฟเวอร์ของคุณโดยตรง Google เผยแพร่ Real-time developer notifications ไปยัง topic ของ Google Cloud Pub/Sub แล้ว subscription ของคุณบน topic นั้นจะ push ข้อความไปยัง endpoint ของคุณ หรือรอให้เซิร์ฟเวอร์ของคุณ pull ไป

คำถามApp StoreGoogle Play
ช่องทางการส่งHTTPS POST ไปยัง URL ของคุณtopic ของ Cloud Pub/Sub แบบ push หรือ pull
อะไรนับว่าสำเร็จHTTP 200 ถึง 206การ acknowledge ข้อความ Pub/Sub หรือรหัสสำเร็จจาก endpoint แบบ push
การส่งซ้ำ5 ครั้งสำหรับ V2 ที่ 1, 12, 24, 48 และ 72 ชั่วโมงหลังความพยายามครั้งก่อนPub/Sub ส่งซ้ำจนกว่าจะได้รับการ acknowledge หรือหมดระยะเวลาเก็บรักษา
ข้อความที่พลาดไปอยู่ได้นานแค่ไหน180 วันใน Get Notification History7 วันโดยค่าเริ่มต้นใน subscription สูงสุด 31 วัน
การคืนเงินที่ขอหลักฐานจากคุณCONSUMPTION_REQUEST ตอบภายใน 12 ชั่วโมงPendingRefundReviewNotification ตอบภายใน 24 ชั่วโมง
ช่องทางสำรองแบบ pull สำหรับการคืนเงินที่อนุมัติแล้วGet Notification History, Get Refund HistoryVoided Purchases API ย้อนหลัง 30 วัน
พฤติกรรมใน sandbox หรือการทดสอบส่งครั้งเดียว ไม่มีการส่งซ้ำSend Test Message จาก Play Console

สิ่งที่ Apple ถือว่าล้มเหลว

เอกสารของ Apple ระบุไว้ชัดเจน ส่งคืนสถานะใดก็ได้ตั้งแต่ 200 ถึง 206 แล้วการส่งถือว่าเสร็จสิ้น ส่งคืน 40x หรือ 50x แล้ว Apple จะส่งซ้ำ Apple ยังถือว่ารหัสอื่นทั้งหมดไม่สำเร็จด้วย ความพยายามแต่ละครั้งจะถูกบันทึกพร้อม sendAttemptResult และค่าต่างๆ อ่านแล้วเหมือนรายการตรวจสอบเหตุขัดข้องจริง ได้แก่ TIMED_OUT, TLS_ISSUE, CIRCULAR_REDIRECT, NO_RESPONSE, PREMATURE_CLOSE, UNSUCCESSFUL_HTTP_RESPONSE_CODE และอีกบางค่า สำหรับ TIMED_OUT คำแนะนำของ Apple เองคือให้ตรวจสอบว่าเซิร์ฟเวอร์ของคุณไม่ได้ประมวลผลข้อความก่อนตอบกลับ

สิ่งที่ Google ถือว่าล้มเหลว

สำหรับ subscription แบบ push รหัสตอบกลับที่สำเร็จจาก endpoint ของคุณคือการ acknowledge สำหรับ subscription แบบ pull เซิร์ฟเวอร์ของคุณต้อง acknowledge ทุกข้อความที่ pull มา มิฉะนั้น Pub/Sub จะส่งข้อความนั้นอีกครั้ง กำหนดเวลา acknowledge เริ่มต้นคือ 10 วินาที และสูงสุดคือ 600 วินาที คู่มือ RTDN ของ Google เพิ่มกฎอีกข้อที่ควรย้ำ คือการแจ้งเตือนบอกเพียงว่ามีบางอย่างเปลี่ยนไป คุณจึงยังต้องเรียก Google Play Developer API เพื่อดูสถานะการซื้อแบบครบถ้วน

ทำไมตารางการส่งซ้ำของ Apple ไม่เข้ากับกรอบเวลา 12 ชั่วโมง

ช่วงเวลาการส่งซ้ำของ Apple นับจากความพยายามครั้งก่อน ไม่ใช่จากครั้งแรก เมื่อรวมกันแล้ว คุณจะได้ไทม์ไลน์นี้สำหรับการแจ้งเตือน V2 หนึ่งรายการที่เซิร์ฟเวอร์ของคุณรับไม่สำเร็จต่อเนื่อง

ความพยายามระยะรอหลังความพยายามครั้งก่อนชั่วโมงนับจากความพยายามครั้งแรก
การส่งครั้งแรกไม่มี0
ส่งซ้ำครั้งที่ 11 ชั่วโมง1
ส่งซ้ำครั้งที่ 212 ชั่วโมง13
ส่งซ้ำครั้งที่ 324 ชั่วโมง37
ส่งซ้ำครั้งที่ 448 ชั่วโมง85
ส่งซ้ำครั้งที่ 572 ชั่วโมง157

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

Apple ส่งซ้ำหลังได้รับ HTTP 400 หรือไม่

ส่งซ้ำ ตามที่เอกสารระบุ Apple ระบุว่า 40x และ 50x คือรหัสที่ทำให้เกิดการส่งซ้ำ ในเดือนมีนาคม 2026 นักพัฒนารายหนึ่งรายงานในฟอรัมของ Apple ว่าการส่งซ้ำหลังการตอบกลับ 400 ดูเหมือนจะหยุดไป จากนั้นบอกว่าการส่งกลับมาทำงานอีกครั้งในหนึ่งหรือสองวันต่อมา และ Apple ขอให้ส่งรายงานผ่าน Feedback Assistant ให้ถือพฤติกรรมตามเอกสารเป็นกฎ และให้การเฝ้าติดตามของคุณเองเป็นหลักฐาน

กู้คืนการแจ้งเตือน App Store ที่พลาดไปด้วย Get Notification History

Get Notification History ส่งคืนการแจ้งเตือนเวอร์ชัน 2 ที่ Apple พยายามส่งไปยังเซิร์ฟเวอร์ของคุณในช่วงเวลาที่คุณเลือก แต่ละรายการมี payload ที่มีลายเซ็นแบบเต็ม คุณจึงส่งเข้า handler ตัวเดียวกับการแจ้งเตือนสดได้ แต่ละรายการยังมีอาร์เรย์ sendAttempts สูงสุดหกรายการ หนึ่งรายการสำหรับการส่งครั้งแรก และอีกหนึ่งรายการสำหรับการส่งซ้ำแต่ละครั้งจากทั้งห้าครั้ง

  • startDate และ endDate เป็นค่าที่ต้องระบุ และ startDate ต้องอยู่ภายใน 180 วันที่ผ่านมาใน production หรือ 30 วันที่ผ่านมาใน sandbox
  • ตั้ง onlyFailures เป็น true เพื่อรับเฉพาะการแจ้งเตือนที่ยังไม่ถึงเซิร์ฟเวอร์ของคุณ รวมถึงรายการที่ Apple ยังส่งซ้ำอยู่
  • กรองด้วย notificationType หนึ่งค่า เช่น CONSUMPTION_REQUEST หรือ REFUND หรือด้วย transactionId สำหรับลูกค้ารายเดียว แต่ใช้ทั้งสองอย่างในคำขอเดียวกันไม่ได้
  • การเรียกแต่ละครั้งส่งคืนได้สูงสุด 20 รายการ ให้เรียกต่อด้วย paginationToken ตราบที่ hasMore ยังเป็น true และส่ง request body เดิมทุกครั้ง

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

การแจ้งเตือน V1 กู้คืนด้วยวิธีนี้ไม่ได้

Get Notification History ครอบคลุมเฉพาะเวอร์ชัน 2 Apple ส่งการแจ้งเตือน V1 ซ้ำสามครั้ง ที่ 6, 24 และ 48 ชั่วโมงหลังความพยายามครั้งก่อน และหากล้มเหลวทั้งหมดก็จะไม่มีประวัติให้เล่นซ้ำ นี่คืออีกเหตุผลหนึ่งที่ควรย้ายแอปที่ยังใช้ V1 ไปใช้ V2

กู้คืนการแจ้งเตือนการคืนเงินของ Google Play ที่พลาดไป

ตาข่ายนิรภัยของ Google ก็คือ Pub/Sub นั่นเอง ตราบใดที่ subscription ของคุณยังอยู่ ข้อความที่ยังไม่มีใคร acknowledge จะคงอยู่ตลอดระยะเวลาเก็บรักษา คือ 7 วันโดยค่าเริ่มต้น และสูงสุด 31 วันหากคุณเพิ่มค่า เมื่อ endpoint ของคุณกลับมาทำงาน การส่งก็จะดำเนินต่อ มีการตั้งค่าสองอย่างที่อาจทำให้กลไกนี้ล้มเหลวโดยไม่รู้ตัว

  • dead-letter topic จะย้ายข้อความออกจาก subscription ของคุณหลังการส่งล้มเหลวครบตามจำนวนที่กำหนด ค่าเริ่มต้นคือ 5 และด้วยนโยบายการส่งซ้ำเริ่มต้นที่ส่งซ้ำทันที ห้าครั้งอาจผ่านไปอย่างรวดเร็ว หากคุณใช้ ให้เฝ้าดู dead-letter topic เหมือนเป็นกล่องจดหมายที่สอง
  • subscription ที่ไม่มีกิจกรรมจาก subscriber เช่น การเชื่อมต่อที่เปิดอยู่ การ pull ที่ทำงานอยู่ หรือการ push ที่สำเร็จ จะหมดอายุหลัง 31 วันโดยค่าเริ่มต้น endpoint ที่เสียอยู่นานหนึ่งเดือนอาจทำให้เสีย subscription ไปด้วย พร้อมทุกอย่างที่รออยู่ในนั้น

การคืนเงินที่ถูกยกเลิกมีช่องทางสำรอง 30 วัน

สำหรับการคืนเงินที่เกิดขึ้นแล้ว Voided Purchases API คือช่องทางสำรองแบบ pull API นี้แสดงรายการการซื้อที่ถูกยกเลิกย้อนหลัง 30 วัน สูงสุดหน้าละ 1,000 รายการ ด้วยโควตา 6,000 คำค้นต่อวันและ 30 คำค้นในทุกช่วง 30 วินาทีต่อแอป ส่ง type 1 เพื่อรวมการสมัครสมาชิกเข้ากับผลิตภัณฑ์แบบซื้อครั้งเดียว การรันทุกวันจะจับการคืนเงินที่ไปป์ไลน์การแจ้งเตือนของคุณทำหล่นได้ทั้งหมด ทำให้สิทธิ์การใช้งานและตัวเลขรายได้ถูกต้องเสมอ

คำขอพิจารณา chargeback ไม่มีช่องทางสำรอง

PendingRefundReviewNotification ต่างออกไป การแจ้งเตือนนี้มี pendingRefundToken ที่คุณต้องส่งให้ orders.reviewrefund และคุณมีเวลา 24 ชั่วโมงหลังได้รับเพื่อส่งความต้องการเรื่องการคืนเงินและหลักฐานการใช้งาน Google บันทึกการเรียกครั้งแรกของคุณและไม่สนใจครั้งต่อๆ ไป เอกสารของ Google ไม่ได้ระบุ endpoint ใดที่แสดงรายการคำขอพิจารณาที่รอดำเนินการ ดังนั้นหากข้อความ Pub/Sub นั้นหายไป หลักฐานของคุณสำหรับ chargeback นั้นก็หายไปด้วย

การแจ้งเตือนการคืนเงินที่พลาดไปทำให้เสียเงินเท่าไร

การพลาดการแจ้งเตือนของการคืนเงินที่สิ้นสุดแล้วทำให้เสียแค่งานด้านบัญชี คุณจะพบมันภายหลังใน Voided Purchases API หรือ Get Notification History เพิกถอนสิทธิ์การเข้าถึงหากนโยบายของคุณกำหนดไว้ แล้วรายงานของคุณก็จะตามทัน น่ารำคาญ แต่ไม่แพง

การพลาดการแจ้งเตือนในหนึ่งในสองกระบวนการที่โต้แย้งได้ทำให้เสียเงินจริง เพราะสโตร์ตัดสินใจโดยไม่มีหลักฐานของคุณ สำหรับ Apple หมายความว่าการตัดสินใจคืนเงินเกิดขึ้นโดยไม่มีข้อมูลการใช้งานของคุณ สำหรับ Google Play คำสั่งซื้อที่เกิดขึ้นหลังวันที่ 3 สิงหาคม 2026 หากแพ้ chargeback คุณจะเสียราคาซื้อหักค่าบริการของ Play บวกค่าธรรมเนียม chargeback ที่ธนาคารของผู้ซื้อเรียกเก็บ Google รับผิดชอบเฉพาะค่าบริการของตัวเองเท่านั้น

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

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

ไม่มีสิ่งใดในนั้นกลับคืนมาเมื่อการคืนเงินได้รับอนุมัติ หลักฐานที่คุณส่งภายใน 12 หรือ 24 ชั่วโมงนั้นคือเครื่องมือเดียวที่คุณมี และการแจ้งเตือนที่พลาดไปจะพรากมันไป

ขั้นตอนการกู้คืนที่ไว้ใจได้

  • acknowledge ก่อน เก็บ payload ดิบ ส่งคืนรหัสสำเร็จ แล้วค่อยประมวลผลในคิว
  • polling Get Notification History ของ Apple ด้วย onlyFailures ทุกไม่กี่นาทีสำหรับ CONSUMPTION_REQUEST เพื่อให้ระบบล่มกินเวลาในกรอบ 12 ชั่วโมงเพียงไม่กี่นาที
  • รันการกวาด Get Notification History รายวันด้วย onlyFailures ย้อนหลังไม่กี่วันสำหรับทุกประเภท แล้วเล่นซ้ำสิ่งที่พบ
  • เรียก Voided Purchases API ทุกวันด้วย type 1 สำหรับแต่ละแอปบน Google Play แล้วกระทบยอดกับการคืนเงินที่คุณบันทึกไว้แล้ว
  • บน Pub/Sub ให้ตั้งการเก็บรักษาข้อความไว้ 7 วันขึ้นไป ตั้งการแจ้งเตือนสำหรับ dead-letter topic หากมี และแจ้งเตือนเมื่อข้อความที่ส่งไม่สำเร็จสะสมมากขึ้น
  • ทดสอบเส้นทางทั้งหมดใน production ด้วย sandbox ของ Apple ส่งการแจ้งเตือนแต่ละรายการครั้งเดียวโดยไม่มีการส่งซ้ำ ส่วน Request a Test Notification ร่วมกับ Get Test Notification Status จะแสดงให้เห็นอย่างชัดเจนว่าเซิร์ฟเวอร์ของคุณตอบกลับอย่างไร
สมาร์ทโฟนวางหงายอยู่ข้างแก้วกาแฟและสมุดโน้ตบนโต๊ะในแสงยามเช้า จุดเริ่มต้นอันสงบของการตรวจสอบการแจ้งเตือนการคืนเงินที่พลาดไปประจำวัน

RefundHalt รับการแจ้งเตือนจากทั้งสองสโตร์แทนคุณ และตอบ CONSUMPTION_REQUEST กับคำขอพิจารณา chargeback โดยอัตโนมัติภายในกรอบเวลา คุณจึงไม่ต้องคอยเฝ้านาฬิกาเอง

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

Apple ส่งการแจ้งเตือนเซิร์ฟเวอร์ App Store ที่ล้มเหลวซ้ำนานแค่ไหน
ประมาณหกวันครึ่งสำหรับเวอร์ชัน 2 Apple ส่งซ้ำห้าครั้ง ที่ 1, 12, 24, 48 และ 72 ชั่วโมงหลังความพยายามครั้งก่อน ดังนั้นการส่งซ้ำครั้งสุดท้ายจะมาถึง 157 ชั่วโมงหลังการส่งครั้งแรก การแจ้งเตือนเวอร์ชัน 1 ได้รับการส่งซ้ำสามครั้ง ที่ 6, 24 และ 48 ชั่วโมงหลังความพยายามครั้งก่อน
ฉันกู้คืนการแจ้งเตือนเซิร์ฟเวอร์ App Store ที่พลาดไปได้ย้อนหลังนานแค่ไหน
180 วันใน production endpoint Get Notification History ของ Apple ส่งคืนการแจ้งเตือนเวอร์ชัน 2 ย้อนหลัง 180 วัน หรือ 30 วันใน sandbox ครั้งละ 20 รายการ และแฟล็ก onlyFailures จำกัดผลลัพธ์ไว้ที่การแจ้งเตือนที่ไม่เคยไปถึงเซิร์ฟเวอร์ของคุณ
Apple ส่งการแจ้งเตือนซ้ำหรือไม่ หากเซิร์ฟเวอร์ของฉันส่งคืน HTTP 400
ส่งซ้ำ ตามเอกสารของ Apple Apple จะส่งซ้ำเมื่อเซิร์ฟเวอร์ของคุณส่งคืนสถานะ 40x หรือ 50x และถือว่า 200 ถึง 206 คือความสำเร็จ สถานะอื่นใดก็นับว่าไม่สำเร็จเช่นกัน
ฉันกู้คืนคำขอพิจารณา chargeback ของ Google Play ที่พลาดไปได้หรือไม่
ได้เฉพาะตอนที่ข้อความ Pub/Sub ยังอยู่ pendingRefundToken ที่คุณต้องใช้กับ orders.reviewrefund มากับ PendingRefundReviewNotification และ Google ไม่ได้ระบุ API ใดที่แสดงรายการคำขอพิจารณาที่รอดำเนินการ ดังนั้นข้อความที่ยังไม่ได้รับการ acknowledge ใน subscription ซึ่งเก็บไว้ 7 วันโดยค่าเริ่มต้น คือสำเนาเดียวที่คุณมี
ฉันจะหาการคืนเงินของ Google Play ที่เซิร์ฟเวอร์พลาดไปได้อย่างไร
เรียก Voided Purchases API ซึ่งส่งคืนการซื้อที่ถูกยกเลิกย้อนหลัง 30 วัน รวมถึงการคืนเงิน การเพิกถอน และ chargeback สูงสุดหน้าละ 1,000 รายการ ด้วยโควตา 6,000 คำค้นต่อวันต่อแอป ส่ง type 1 เพื่อรวมการสมัครสมาชิก

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

RefundHalt

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

อ่านต่อ

คู่มือปฏิบัติใช้เวลาอ่าน 8 นาที

คำขอคืนเงินที่มากเกินไปอาจทำให้คุณเสียมากกว่ายอดคืนเงิน เพราะทั้งสองสโตร์มองว่าเป็นสัญญาณด้านคุณภาพ

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

เจาะลึกใช้เวลาอ่าน 8 นาที

ตรวจสอบการแจ้งเตือนจากเซิร์ฟเวอร์ App Store ก่อนดำเนินการกับการคืนเงิน เพราะใครก็ส่งคำขอมายัง URL webhook ของคุณได้

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

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

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