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

ประเด็นสำคัญ
- การซื้อที่ค้างอยู่คือคำสั่งซื้อจริงที่สโตร์รับไว้แล้วแต่ยังไม่ได้เรียกเก็บเงิน โค้ดของคุณเห็นการซื้อใหม่ แต่เงินยังมาไม่ถึง และอาจไม่มีวันมาถึงเลย
- มอบสิทธิ์การเข้าถึงเฉพาะเมื่อสถานะเป็น PURCHASED บน Google Play หรือเมื่อธุรกรรมเสร็จสมบูรณ์บน Apple อย่าปลดล็อกที่สถานะ PENDING หรือที่ผลลัพธ์แบบค้างของ Apple เด็ดขาด
- บน Google Play การชำระเงินสดที่ร้าน การโอนเงินผ่านธนาคาร และการเรียกเก็บผ่านผู้ให้บริการเครือข่ายบางแบบจะชำระนอกระบบ ดังนั้นการซื้อจึงกลับมาเป็น PENDING ไม่ใช่ PURCHASED จนกว่าลูกค้าจะจ่ายเงินจริง
- บน Apple การซื้อที่ค้างอยู่มักเป็น Ask to Buy ซึ่งผู้จัดการครอบครัวต้องอนุมัติ การอนุมัติอาจใช้เวลาหลายชั่วโมงหรือหลายวัน และธุรกรรมที่เสร็จสมบูรณ์จะมาถึงภายหลังผ่าน Transaction.updates
- หากคุณปลดล็อกที่คำสั่งซื้อค้างอยู่ที่ต่อมาถูกยกเลิก คุณได้ใช้จ่ายทั้งการประมวลผล การเรียก API พื้นที่จัดเก็บ หรือการจ่ายสินค้าแบบใช้แล้วหมดไปกับค่าบริการที่ไม่เคยสำเร็จ ต่างจากการคืนเงิน ตรงนี้ไม่มีเงินให้เรียกคืน เพราะไม่เคยเก็บได้เลย
- สโตร์จะบอกคุณเมื่อคำสั่งซื้อค้างอยู่ล้มเหลว Google จะส่ง ONE_TIME_PRODUCT_CANCELED ประเภท 2 หรือ SUBSCRIPTION_PENDING_PURCHASE_CANCELED ประเภท 20 ส่วน Apple เพียงแค่ไม่ส่งธุรกรรมที่เสร็จสมบูรณ์มาให้เลย
- คำสั่งซื้อค้างอยู่อาจกลายเป็นการขายจริงขณะที่แอปของคุณปิดอยู่ ดังนั้นให้ตรวจสอบซ้ำเมื่อกลับมา เรียก queryPurchasesAsync() ใน onResume() บน Google Play และคอยฟัง Transaction.updates ต่อไปบน Apple
มีคนแตะปุ่มซื้อในแอปของคุณ ล็อกของคุณแสดงคำสั่งซื้อใหม่ ตัวฟังการเรียกเก็บเงินของคุณทำงาน และคุณส่งมอบสินค้า สำหรับการซื้อส่วนใหญ่นั่นถูกต้องเป๊ะ แต่สำหรับการซื้อที่ค้างอยู่มันคือความผิดพลาด เพราะคำสั่งซื้อมีอยู่แต่เงินไม่มี ลูกค้าเลือกวิธีชำระเงินที่ชำระในภายหลัง สโตร์ยังคงรอรับเงินอยู่ และคุณเพิ่งส่งมอบฟีเจอร์แบบเสียเงินให้กับค่าบริการที่อาจไม่มีวันสำเร็จ นี่คือญาติเงียบๆ ของการคืนเงิน ตรงนี้ไม่มีอะไรถูกกลับรายการ เพราะไม่เคยเก็บเงินได้เลย คุณแค่ยกสินค้าให้ฟรี
การซื้อที่ค้างอยู่คือคำสั่งซื้อจริงในสถานะยังไม่ได้ชำระเงิน และทั้ง App Store และ Google Play ต่างก็มี ทั้งสองสโตร์บอกคุณตรงๆ ให้รอ กับดักคือคำสั่งซื้อค้างอยู่ดูแทบจะเหมือนคำสั่งซื้อที่เสร็จสมบูรณ์ในโค้ดของคุณ ดังนั้นการเชื่อมต่อที่ถือว่าการซื้อใหม่ทุกครั้งเป็นการขายจะส่งสินค้าให้กับคำสั่งซื้อที่สโตร์ยังพยายามเก็บเงินอยู่ จัดการให้ถูกต้องแล้วคุณจะไม่เสียอะไร จัดการผิดแล้วทุกการชำระเงินช้าที่ล้มเหลวกลางทางคือต้นทุนล้วนๆ ที่ส่งมอบด้วยเงินของคุณ
การซื้อที่ค้างอยู่คืออะไรกันแน่
การซื้อที่ค้างอยู่คือคำสั่งซื้อที่สโตร์บันทึกไว้แล้วแต่ยังไม่ได้เรียกเก็บเงิน ผู้ซื้อเริ่มขั้นตอน สโตร์รับไว้ และการชำระบัญชีกำลังเกิดขึ้นในที่ที่แอปของคุณมองไม่เห็น Google Play เรียกสิ่งนี้ว่าสถานะ PENDING ส่วน Apple เรียกว่าธุรกรรมแบบค้างหรือแบบเลื่อน ชื่อต่างกันแต่ข้อเท็จจริงเดียวกัน สโตร์กำลังเปิดคำสั่งซื้อไว้ขณะที่รอรับเงิน และได้บอกคุณแล้วว่าอย่าถือว่าคำสั่งซื้อนั้นเป็นเงิน
Google Play: การชำระเงินกำลังเกิดขึ้นที่อื่น
วิธีชำระเงินบางอย่างชำระนอกระบบ เงินสดที่ร้านค้าจริง การโอนเงินผ่านธนาคาร และการเรียกเก็บผ่านผู้ให้บริการเครือข่ายบางแบบล้วนมีขั้นตอนเพิ่มเติมระหว่างการแตะกับการเรียกเก็บเงิน เมื่อลูกค้าเลือกวิธีใดวิธีหนึ่ง Google จะคืนการซื้อในสถานะ PENDING แทนที่จะเป็น PURCHASED สำหรับการชำระเงินสด ลูกค้าจะได้รับรหัสทางการแจ้งเตือนและอีเมล นำไปที่ร้านที่ร่วมรายการ และจ่ายให้พนักงานเก็บเงิน จนกว่าจะเกิดขึ้น Google ยังไม่ได้เก็บอะไร และคุณก็เช่นกัน กฎของ Google มีบรรทัดเดียว ใช้ getPurchaseState() และมอบสิทธิ์เฉพาะเมื่อสถานะเป็น PURCHASED และยังบอกด้วยว่าอย่ายืนยันรับการซื้อขณะที่ยังเป็น PENDING เพราะการยืนยันรับเป็นของคำสั่งซื้อที่ชำระแล้ว ไม่ใช่คำสั่งซื้อที่เพียงสัญญาไว้
Apple: การซื้อกำลังรอการแตะของคนอื่น
สถานะค้างของ Apple หมายความว่าธุรกรรมต้องการการดำเนินการจากภายนอกก่อนจะเสร็จสมบูรณ์ แบบที่พบบ่อยที่สุดคือ Ask to Buy ที่เด็กเริ่มการซื้อและผู้จัดการครอบครัวต้องอนุมัติ ใน StoreKit 2 การเรียกซื้อจะคืนค่า Product.PurchaseResult.pending ใน StoreKit รุ่นเก่า ธุรกรรมจะถูกรายงานว่าเลื่อน ไม่ว่าทางใด Apple ยังไม่ได้เรียกเก็บเงินจากใคร และธุรกรรมที่เสร็จสมบูรณ์ หากมาถึง จะมาแบบอะซิงโครนัสผ่าน Transaction.updates แสดงสถานะรอให้ลูกค้าเห็นและอย่าปลดล็อกอะไรจนกว่าธุรกรรมที่เสร็จสมบูรณ์จะมาถึง
ทำไมการมอบการซื้อที่ค้างอยู่จึงทำให้คุณเสียเงินจริง
ความเสียหายตรงนี้ไม่ใช่แบบการคืนเงินที่เงินซึ่งคุณบันทึกไว้ถูกดึงกลับ มันแย่กว่าในแง่หนึ่งโดยเฉพาะ ไม่มีเงินให้ดึงกลับ เพราะไม่เคยเก็บได้เลย
คุณส่งมอบ และสโตร์ไม่เคยเก็บเงินได้
เมื่อคุณปลดล็อกที่คำสั่งซื้อค้างอยู่ที่ต่อมาถูกยกเลิก คุณได้ใช้จ่ายไปแล้วเพื่อให้บริการมัน การประมวลผลที่รันฟีเจอร์ การเรียก API ของบุคคลที่สามที่คุณจ่ายเงิน พื้นที่จัดเก็บที่คุณจัดสรร และสำหรับสินค้าแบบใช้แล้วหมดไปคือการจ่ายสิ่งที่คุณขายจริง ทั้งหมดนั้นออกไปกับคำสั่งซื้อที่ไม่ก่อรายได้เลย การคืนเงินอย่างน้อยก็เริ่มจากค่าบริการที่เกิดขึ้นจริง แต่การซื้อที่ค้างอยู่ที่มอบให้ผิดพลาดไม่เคยมีค่าบริการเลย จึงไม่ปรากฏแม้แต่ในฐานะเงินที่ออกไป มันปรากฏเป็นความว่างเปล่า ซึ่งเป็นเหตุผลที่มันมองข้ามได้ง่ายและเกิดซ้ำได้ง่าย
สัญญาณการยกเลิก และความหมายของมัน
สโตร์บอกคุณจริงเมื่อคำสั่งซื้อค้างอยู่ตายลง บน Google Play สินค้าแบบซื้อครั้งเดียวที่ล้มเหลวจะส่งการแจ้งเตือน ONE_TIME_PRODUCT_CANCELED ประเภท 2 และการสมัครสมาชิกที่ค้างอยู่จะส่ง SUBSCRIPTION_PENDING_PURCHASE_CANCELED ประเภท 20 เมื่อคำสั่งซื้อเดียวกันสำเร็จแทน คุณจะได้รับ ONE_TIME_PRODUCT_PURCHASED ประเภท 1 หรือ SUBSCRIPTION_PURCHASED ประเภท 4 บน Apple ไม่มีเหตุการณ์ยกเลิกให้จับ เพราะธุรกรรมแบบเลื่อนที่ถูกปฏิเสธก็เพียงแค่ไม่เคยกลายเป็นธุรกรรมที่เสร็จสมบูรณ์ หากคุณปลดล็อกไปก่อน ความเงียบนั้นคือใบเรียกเก็บเงิน
| คำถาม | Google Play | Apple |
|---|---|---|
| อะไรเป็นตัวกระตุ้น | เงินสด โอนธนาคาร การเรียกเก็บผ่านผู้ให้บริการบางแบบ | การอนุมัติ Ask to Buy หรือการดำเนินการอื่นที่จำเป็น |
| สถานะที่คุณเห็น | PurchaseState PENDING | ผลลัพธ์แบบค้าง หรือธุรกรรมแบบเลื่อน |
| มอบสิทธิ์เข้าถึงเมื่อ | สถานะเป็น PURCHASED | ธุรกรรมเสร็จสมบูรณ์ |
| รายการสำเร็จ | ONE_TIME_PRODUCT_PURCHASED (1), SUBSCRIPTION_PURCHASED (4) | ธุรกรรมที่เสร็จสมบูรณ์ผ่าน Transaction.updates |
| รายการล้มเหลว | ONE_TIME_PRODUCT_CANCELED (2), SUBSCRIPTION_PENDING_PURCHASE_CANCELED (20) | ไม่มีธุรกรรมที่เสร็จสมบูรณ์มาถึงเลย |
| เก็บเงินได้หรือไม่ | ไม่ จนกว่าจะ PURCHASED | ไม่ จนกว่าธุรกรรมจะเสร็จสมบูรณ์ |
ช่วงเวลา และใครกำลังรอใคร
การซื้อที่ค้างอยู่ไม่ใช่นาฬิกาที่คุณกำลังแข่งด้วย มันคือนาฬิกาที่ในฝั่งของคุณยังไม่ได้เริ่มเดินเลย
Google Play ให้เวลาลูกค้าเป็นวัน ไม่ใช่นาที
การชำระเงินสดหรือโอนธนาคารชำระตามตารางของลูกค้า ไม่ใช่ของคุณ คำสั่งซื้อจะอยู่ใน PENDING จนกว่าลูกค้าจะจ่ายหรือหมดเวลาแล้ว Google ยกเลิก ส่วนช่วงเวลายืนยันรับสามวันของคุณเอง ที่คืนเงินอัตโนมัติให้กับการซื้อที่คุณไม่ยืนยันรับ ยังไม่เริ่มด้วยซ้ำจนกว่าการซื้อจะเปลี่ยนจาก PENDING เป็น PURCHASED ดังนั้นจึงไม่ต้องรีบให้บริการคำสั่งซื้อค้างอยู่ มีแต่วินัยที่จะรอให้สถานะเปลี่ยน
การอนุมัติของ Apple อยู่บนโทรศัพท์ของผู้จัดการครอบครัว
คำขอ Ask to Buy จะไปถึงอุปกรณ์ของผู้จัดการในรูปพรอมป์ที่พวกเขาอนุมัติหรือปฏิเสธเมื่อใดก็ตามที่สะดวก อาจเป็นหลังจากนั้นไม่กี่นาที หลายชั่วโมง หรือหนึ่งวัน และแอปของคุณเร่งมันไม่ได้ พฤติกรรมที่ถูกต้องเพียงอย่างเดียวคือสะท้อนสถานะรอ และปล่อยให้ StoreKit ส่งธุรกรรมที่เสร็จสมบูรณ์ให้คุณหากและเมื่อการอนุมัติมาถึง

วิธีจัดการการซื้อที่ค้างอยู่โดยไม่ให้รั่วไหล
งานทั้งหมดสรุปลงที่นิสัยสี่อย่าง ไม่มีอย่างไหนยาก และการข้ามอย่างใดอย่างหนึ่งคือจุดที่เงินหายไป
มอบที่สถานะชำระแล้ว อย่าที่สถานะค้างเด็ดขาด
บน Google Play ตรวจสอบ getPurchaseState() และมอบเฉพาะที่ PURCHASED และอย่ายืนยันรับการซื้อขณะที่ยังเป็น PENDING บน Apple ปลดล็อกเฉพาะที่ธุรกรรมที่เสร็จสมบูรณ์และอย่าที่ผลลัพธ์แบบค้างเด็ดขาด กฎเดียวนี้ปิดการรั่วไหลทั้งหมด ที่เหลือทั้งหมดเป็นเรื่องของการทำให้แน่ใจว่าคุณสังเกตเห็นจริงเมื่อสถานะชำระแล้วมาถึง
ตรวจสอบซ้ำเมื่อแอปกลับมา
การเปลี่ยนจากค้างเป็นชำระแล้วมักเกิดขึ้นขณะที่แอปของคุณไม่ได้ทำงาน บน Google Play เรียก queryPurchasesAsync() ในตัวจัดการ onResume() เพื่อรับคำสั่งซื้อที่กลายเป็น PURCHASED ในเบื้องหลัง และคงตัวฟัง Real-time Developer Notifications ไว้เป็นแหล่งความจริงฝั่งเซิร์ฟเวอร์ บน Apple ฟัง Transaction.updates ตลอดอายุของแอป เพราะธุรกรรมที่อนุมัติแล้วอาจมาถึงนานหลังจากที่การเรียกซื้อเดิมคืนค่าไปแล้ว
เปิดใช้การรองรับแบบค้างและทดสอบทั้งสองตอนจบ
Google กำหนดให้คุณเรียก enablePendingPurchases() เมื่อสร้าง BillingClient และการรองรับธุรกรรมแบบค้างสำหรับสินค้าซื้อครั้งเดียวเป็นสิ่งบังคับ ไม่ใช่ทางเลือก ทดสอบก่อนปล่อย ผู้ทดสอบที่มีสิทธิ์จะได้เครื่องมือทดสอบเพิ่มอีกสองอย่างสำหรับรูปแบบการชำระเงินแบบเลื่อน โดยการชำระเงินจะสำเร็จอัตโนมัติหรือยกเลิกอัตโนมัติหลังจากไม่กี่นาที เพื่อให้คุณเฝ้าดูทั้งเส้นทางการชำระเงินและเส้นทางล้มเหลวได้ตั้งแต่ต้นจนจบ
บอกลูกค้าว่าคำสั่งซื้อยังไม่เสร็จ
ผู้ซื้อที่ค้างอยู่คือลูกค้าจริงที่อยู่กลางการซื้อ ไม่ใช่ความล้มเหลว แสดงให้พวกเขาเห็นว่าคำสั่งซื้อกำลังรอการชำระเงินหรือการอนุมัติ และให้ทางกลับมาทำให้เสร็จอย่างชัดเจน สถานะค้างที่เงียบงันทำให้เสียยอดขายที่สถานะซึ่งติดป้ายกำกับดีเรียกคืนได้ เพราะผู้ซื้อเหล่านี้ส่วนใหญ่ยังต้องการสิ่งนั้นและเหลือเพียงขั้นตอนเดียว
ฟีด Real-time Developer Notifications และ App Store Server Notifications เดียวกันกับที่ RefundHalt อ่านอยู่แล้วสำหรับการคืนเงินและการปฏิเสธการชำระเงินก็นำสัญญาณเหล่านี้มาด้วยเช่นกัน การแจ้งเตือน purchased ที่บอกว่าคำสั่งซื้อค้างอยู่สำเร็จเสียที และการแจ้งเตือน canceled ที่บอกว่าไม่สำเร็จ จะมาปรากฏในแดชบอร์ดของคุณข้างๆ เหตุการณ์รายได้อื่นๆ เพื่อให้คำสั่งซื้อค้างอยู่ที่ล้มเหลวเป็นสิ่งที่คุณมองเห็นได้ แทนที่จะเป็นสิ่งที่คุณจ่ายไปโดยไม่ตั้งใจ
ฉบับย่อ
การซื้อที่ค้างอยู่คือคำสั่งซื้อที่ไม่มีการชำระเงิน และทั้งสองสโตร์ระบุชัดเจนว่าคุณควรรอ Google Play คืนคำสั่งซื้อเงินสด โอนธนาคาร และการเรียกเก็บผ่านผู้ให้บริการบางแบบในสถานะ PENDING และบอกให้คุณมอบสิทธิ์เข้าถึงเฉพาะที่ PURCHASED Apple คืนธุรกรรมแบบค้างหรือแบบเลื่อนสำหรับ Ask to Buy และการดำเนินการอื่นที่จำเป็น และส่งธุรกรรมที่เสร็จสมบูรณ์ภายหลังผ่าน Transaction.updates ปลดล็อกที่สถานะชำระแล้ว ตรวจสอบซ้ำเมื่อแอปของคุณกลับมาทำงาน เปิดใช้และทดสอบการรองรับแบบค้าง และติดป้ายกำกับคำสั่งซื้อที่รออยู่ให้ลูกค้า ทำเช่นนั้นแล้วการซื้อที่ค้างอยู่จะไม่ทำให้คุณเสียอะไร ข้ามมันไปแล้วคุณจะส่งมอบสินค้าแบบเสียเงินให้กับค่าบริการที่ไม่เคยมาถึง ซึ่งเป็นความเสียหายอย่างเดียวที่ไม่มีใบเสร็จให้ชี้ถึง
คำถามที่พบบ่อย
- การซื้อที่ค้างอยู่คืออะไร
- การซื้อที่ค้างอยู่คือคำสั่งซื้อที่สโตร์รับไว้แล้วแต่ยังไม่ได้เรียกเก็บเงิน บน Google Play มันคือสถานะการซื้อ PENDING ที่ใช้กับวิธีชำระเงินที่ชำระในภายหลัง เช่น เงินสด การโอนธนาคาร และการเรียกเก็บผ่านผู้ให้บริการเครือข่ายบางแบบ บน Apple มันคือธุรกรรมแบบค้างหรือแบบเลื่อน ซึ่งส่วนใหญ่เป็นการซื้อ Ask to Buy ที่รอการอนุมัติจากผู้จัดการครอบครัว ทั้งสองกรณียังไม่มีการเก็บเงิน ดังนั้นคุณไม่ควรมอบสิทธิ์การเข้าถึง
- ฉันควรมอบสิทธิ์เข้าถึงขณะที่การซื้อยังค้างอยู่หรือไม่
- ไม่ มอบสิทธิ์เฉพาะเมื่อสถานะเป็น PURCHASED บน Google Play หรือเมื่อธุรกรรมเสร็จสมบูรณ์บน Apple หากคุณปลดล็อกฟีเจอร์ขณะที่คำสั่งซื้อยังค้างอยู่และการชำระเงินไม่เคยสำเร็จ คุณได้ส่งมอบสินค้าให้ฟรี และไม่มีค่าบริการให้กลับรายการเพราะไม่เคยมีเลย
- วิธีชำระเงินแบบใดที่ทำให้เกิดการซื้อที่ค้างอยู่บน Google Play
- วิธีชำระเงินที่ชำระนอกระบบ การชำระเงินสดที่ร้านค้าจริง การโอนธนาคาร และตัวเลือกการเรียกเก็บผ่านผู้ให้บริการเครือข่ายบางแบบต้องมีขั้นตอนเพิ่มเติมระหว่างการแตะกับการเรียกเก็บเงิน ดังนั้น Google จึงคืนการซื้อในสถานะ PENDING แทนที่จะเป็น PURCHASED สำหรับการชำระเงินสด ลูกค้าจะได้รับรหัสทางการแจ้งเตือนและอีเมล แล้วจ่ายที่ร้านที่ร่วมรายการ
- Ask to Buy คืออะไร และเกี่ยวข้องกับการซื้อที่ค้างอยู่อย่างไร
- Ask to Buy คือฟีเจอร์ Family Sharing ของ Apple ที่ให้เด็กขอทำการซื้อซึ่งผู้จัดการครอบครัวต้องอนุมัติ ขณะที่คำขอยังรออยู่ การซื้อจะอยู่ในสถานะค้างของ Apple ซึ่งคืนค่าเป็น Product.PurchaseResult.pending ใน StoreKit 2 หรือเป็นธุรกรรมแบบเลื่อนใน StoreKit รุ่นเก่า ธุรกรรมที่เสร็จสมบูรณ์จะมาถึงผ่าน Transaction.updates ก็ต่อเมื่อผู้จัดการอนุมัติเท่านั้น
- จะเกิดอะไรขึ้นหากการซื้อที่ค้างอยู่ไม่เคยถูกชำระเงิน
- คำสั่งซื้อจะถูกยกเลิกและไม่มีเงินเปลี่ยนมือ บน Google Play คุณจะได้รับการแจ้งเตือน ONE_TIME_PRODUCT_CANCELED ประเภท 2 สำหรับสินค้าซื้อครั้งเดียว หรือ SUBSCRIPTION_PENDING_PURCHASE_CANCELED ประเภท 20 สำหรับการสมัครสมาชิก บน Apple ธุรกรรมแบบเลื่อนก็เพียงแค่ไม่เคยกลายเป็นธุรกรรมที่เสร็จสมบูรณ์ หากคุณมอบสิทธิ์การเข้าถึงไปแล้ว นั่นคือช่วงเวลาที่ความเสียหายกลายเป็นจริง
- การซื้อที่ค้างอยู่เหมือนกับการคืนเงินหรือไม่
- ไม่ การคืนเงินคือการกลับรายการการชำระเงินที่เก็บได้จริง แต่การซื้อที่ค้างอยู่ที่ล้มเหลวไม่เคยถูกเรียกเก็บเงินตั้งแต่แรก จึงไม่มีอะไรให้กลับรายการและไม่มีอะไรปรากฏในรายงานการคืนเงิน หากคุณปลดล็อกไปก่อน ต้นทุนคือการประมวลผล การเรียก API พื้นที่จัดเก็บ หรือสินค้าแบบใช้แล้วหมดไปที่คุณใช้จ่ายในการให้บริการคำสั่งซื้อที่ไม่ก่อรายได้
แหล่งข้อมูลและเนื้อหาเพิ่มเติม
- Android Developers: Integrate the Google Play Billing Library (PENDING purchase state, grant entitlement only on PURCHASED, enablePendingPurchases, queryPurchasesAsync, cash payment code flow, three-day acknowledgement window begins on transition to PURCHASED)
- Android Developers: Real-time developer notifications reference (OneTimeProductNotification ONE_TIME_PRODUCT_PURCHASED=1 and ONE_TIME_PRODUCT_CANCELED=2; SubscriptionNotification SUBSCRIPTION_PURCHASED=4 and SUBSCRIPTION_PENDING_PURCHASE_CANCELED=20)
- Android Developers: Test Google Play Billing (license testers get delayed-payment test instruments that auto-complete or auto-cancel for testing pending transactions)
- Apple Developer: Product.PurchaseResult (the pending case, returned when a purchase needs action such as Ask to Buy approval before it completes)
- Apple Developer: SKPaymentTransactionState.deferred (a transaction whose final status is pending an external action such as Ask to Buy)
- Apple Developer: Transaction.updates (StoreKit delivers transaction updates, including ones approved later, asynchronously)
RefundHalt
ระบบอัตโนมัติสำหรับการคืนเงินบน App Store และ Google Play
อ่านต่อ
การต่ออายุล้มเหลวบ่อยกว่าที่ลูกค้ายกเลิก และการเลิกใช้แบบไม่ตั้งใจนั้นคือรายได้ที่คุณยังชิงคืนได้
บัตรที่ถูกปฏิเสธ ไม่ใช่การแตะยกเลิก คือสิ่งที่ยุติการสมัครสมาชิกส่วนใหญ่ และร้านค้ายังพยายามเรียกเก็บต่อไปอีกหลายสัปดาห์ นี่คือวิธีที่ระยะผ่อนผันการเรียกเก็บเงิน การลองเรียกเก็บซ้ำ และการพักบัญชี ทำงานบน App Store และ Google Play และการเลิกใช้แบบไม่ตั้งใจทำให้คุณเสียเงินจริงเท่าไร
การซื้อในแอปที่เด็กทำโดยไม่ได้รับอนุญาตแทบทุกครั้งจะถูกคืนเงินให้ผู้ปกครอง และคุณคือคนที่ต้องแบกรับต้นทุน
เมื่อเด็กซื้อชุดเหรียญบนโทรศัพท์ของพ่อแม่ ทั้ง Apple และ Google จะคืนเงินให้ และไม่มีใครถามคุณก่อนสักราย หน่วยงานกำกับดูแลเป็นผู้ออกแบบให้เป็นเช่นนั้น นี่คือวิธีที่การคืนเงินการซื้อในแอปที่ไม่ได้รับอนุญาตเหล่านี้ทำงานบนแต่ละสโตร์ หน้าต่างเวลา 15 นาทีที่เงินไหลออกไป และต้นทุนที่แท้จริงของแต่ละครั้ง