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

Order ID ของ App Store บนใบเสร็จของลูกค้าบอกคุณได้ว่าเขาซื้ออะไร และ Apple คืนเงินไปแล้วหรือยัง

endpoint Look Up Order ID ของ Apple เปลี่ยน order ID จากใบเสร็จ App Store ของลูกค้าให้เป็นธุรกรรมที่มีลายเซ็น พร้อมวันที่และเหตุผลของการคืนเงิน นี่คือวิธีใช้กับอีเมลขอคืนเงิน สิ่งที่มันทำไม่ได้ และ order ID ของ Google Play ต่างกันอย่างไร

โต๊ะฝ่ายซัพพอร์ตที่มีกล่องจดหมายบนแล็ปท็อปและ iPhone แสดงใบเสร็จการซื้อ จุดที่ order ID ของ App Store เริ่มต้นการคุยเรื่องคืนเงิน

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

  • Apple ส่งใบเสร็จทางอีเมลที่มี order ID ทุกครั้งที่ลูกค้าซื้อสินค้าในแอป และลูกค้ายังหา order ID ได้จากประวัติการซื้อใน App Store ด้วย
  • endpoint Look Up Order ID ของ App Store Server API (GET /inApps/v1/lookup/{orderId}) ส่งคืนธุรกรรมที่มีลายเซ็นอย่างน้อยหนึ่งรายการสำหรับ order ID ที่ถูกต้อง ฝ่ายซัพพอร์ตจึงเห็น productId และ purchaseDate ได้โดยไม่ต้องเดา
  • ธุรกรรม App Store ที่ถอดรหัสแล้วมี revocationDate และ revocationReason การค้นหาด้วย order ID จึงบอกได้ว่า Apple คืนเงินรายการนั้นไปแล้วหรือยัง เหตุผล 1 หมายความว่า Apple คืนเงินเพราะปัญหาที่เกิดขึ้นจริงหรือที่ลูกค้ารู้สึกว่ามีในแอป
  • Look Up Order ID ส่งคืน OrderLookupStatus 1 และไม่มีอาร์เรย์ signedTransactions เมื่อ order ID ไม่ถูกต้องสำหรับแอปของคุณ ซึ่งบ่งบอกว่าใบเสร็จผิดหรือเป็นการซื้อจากแอปอื่น
  • Look Up Order ID ใช้ไม่ได้ในสภาพแวดล้อม sandbox ของ Apple และขีดจำกัดอัตราใน production คือ 10 คำขอต่อวินาทีต่อแอป โดยบังคับใช้เป็นรายชั่วโมง
  • นักพัฒนาออกเงินคืนของ App Store เองไม่ได้ Apple เป็นผู้ตัดสินที่ reportaproblem.apple.com และขั้นตอนส่งหลักฐานเพียงอย่างเดียวของนักพัฒนาคือการตอบ CONSUMPTION_REQUEST ภายใน 12 ชั่วโมง
  • Google Play ส่งอีเมล order ID สำหรับการซื้อแบบครั้งเดียวทุกครั้งและการต่ออายุการสมัครสมาชิกทุกครั้ง และนักพัฒนาค้นหา order ID นั้นใน Play Console แล้วคืนเงินได้โดยตรง Play Console ระบุว่าการคืนเงินย้อนกลับไม่ได้

ก่อนตอบอีเมลขอคืนเงินจากลูกค้า iPhone ให้ขอ order ID ของ App Store ที่อยู่บนใบเสร็จ Apple ของเขาก่อน สตริงเดียวนั้น เมื่อส่งผ่าน endpoint Look Up Order ID ของ Apple จะบอกคุณว่าเขาซื้อสินค้าอะไร เมื่อไร และ Apple คืนเงินไปแล้วหรือยัง ถ้าไม่มีมัน คุณต้องจับคู่ภาพหน้าจอและอีเมลกับฐานข้อมูลแล้วได้แต่หวัง ถ้ามีมัน ภายในไม่กี่วินาทีคุณจะรู้ว่ากำลังคุยกับลูกค้าที่จ่ายเงินจริง ลูกค้าที่ Apple คืนเงินให้แล้ว หรือคนที่ถือใบเสร็จของแอปอื่น

order ID ของ App Store มาจากไหน

เอกสารของ Apple ระบุไว้ชัดเจน เมื่อลูกค้าซื้อสินค้าในแอปของคุณหนึ่งรายการหรือมากกว่า App Store จะส่งใบเสร็จทางอีเมลให้ และใบเสร็จนั้นมี order ID ลูกค้ายังหา order ID ได้จากประวัติการซื้อใน App Store หน้าประวัติการซื้อของ Apple อยู่ที่ reportaproblem.apple.com และในแอป App Store ที่เมนู Apps & Purchase History โดยค่าเริ่มต้นจะแสดง 90 วันล่าสุด และมีตัวกรองสำหรับการซื้อที่เก่ากว่านั้น

ลูกค้าจึงถือกุญแจอยู่แล้ว แบบฟอร์มซัพพอร์ตของคุณแค่ต้องขอมัน

ทำไมอีเมลอย่างเดียวไม่พอ

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

Look Up Order ID ส่งอะไรกลับมา

Look Up Order ID เป็นส่วนหนึ่งของ App Store Server API ใช้ได้ตั้งแต่เวอร์ชัน 1.1.0 คุณเรียก GET https://api.storekit.apple.com/inApps/v1/lookup/{orderId} พร้อม JWT ที่ลงลายเซ็นของคุณ Apple ระบุว่าคำตอบอิงตามประวัติการซื้อในแอปของลูกค้า ไม่ว่าเขาจะติดตั้ง ลบ หรือติดตั้งแอปใหม่ก็ตาม

ฟิลด์หรือพฤติกรรมเอกสารของ Apple ระบุว่าสิ่งที่ฝ่ายซัพพอร์ตทำกับมัน
OrderLookupStatus 0order ID ถูกต้อง คำตอบมีอาร์เรย์ของธุรกรรมที่มีลายเซ็นอย่างน้อยหนึ่งรายการถอดรหัสทีละรายการแล้วอ่านข้อมูลการซื้อ
OrderLookupStatus 1คำตอบไม่มีอาร์เรย์ signedTransactionsถือว่า order ID ไม่ถูกต้องสำหรับแอปของคุณ ขอใบเสร็จที่ถูกต้อง
productId และ purchaseDateApple ระบุว่าเป็นฟิลด์สำหรับใช้ในงานซัพพอร์ตลูกค้ายืนยันว่าซื้ออะไรและเมื่อไร
revocationDateเวลาที่ App Store คืนเงินธุรกรรมหรือเพิกถอนจาก Family Sharingถ้ามีค่า แปลว่า Apple คืนเงินให้ลูกค้าแล้ว
revocationReason0: คืนเงินด้วยเหตุผลอื่น เช่น ซื้อโดยไม่ตั้งใจ 1: คืนเงินเพราะปัญหาที่เกิดขึ้นจริงหรือที่ลูกค้ารู้สึกว่ามีในแอปของคุณค่า 1 คือสัญญาณด้านผลิตภัณฑ์ ไม่ใช่แค่ตั๋วซัพพอร์ต
appAccountTokenUUID ที่คุณตั้งไว้ตอนซื้อ ถ้าคุณตั้งไว้จับคู่คำสั่งซื้อกับข้อมูลผู้ใช้ของคุณเอง
price และ currencyApple บอกว่าอย่าใช้สำหรับกระทบยอดรายได้ใช้รายงานของ App Store Connect สำหรับเรื่องเงิน
Sandboxendpoint ใช้ไม่ได้ในสภาพแวดล้อม sandboxทดสอบด้วย order ID จาก production เท่านั้น
ขีดจำกัดอัตรา10 คำขอต่อวินาทีต่อแอป บังคับใช้เป็นรายชั่วโมง ส่วนที่เกินจะได้ HTTP 429 พร้อม header Retry-Afterเหลือเฟือสำหรับฝ่ายซัพพอร์ต แต่ไม่เหมาะกับการสแกนจำนวนมาก

ใบเสร็จนี้ใช้ได้กับแอปของฉันไหม

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

Apple คืนเงินรายการนี้ไปแล้วหรือยัง

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

นักพัฒนากำลังเทียบใบเสร็จ App Store ที่พิมพ์ออกมากับแถวธุรกรรมบนแล็ปท็อป เพื่อตรวจ order ID ของ App Store ก่อนตอบคำขอคืนเงิน

สิ่งที่ order ID ทำไม่ได้บน App Store

มันออกเงินคืนไม่ได้ นักพัฒนาไม่มีปุ่มคืนเงินของ App Store Apple เป็นผู้ตัดสินการคืนเงิน และบทความซัพพอร์ตของ Apple ส่งลูกค้าไปที่ reportaproblem.apple.com ซึ่งลูกค้าเลือก "I'd like to" แล้วเลือก "Request a refund" เลือกเหตุผล และเลือกรายการ Apple ยังระบุว่ารายการเรียกเก็บเงินที่ยังรอดำเนินการจะคืนเงินไม่ได้จนกว่าลูกค้าจะได้รับใบเสร็จทางอีเมล

จุดเดียวที่คุณมีสิทธิ์มีเสียงคือ CONSUMPTION_REQUEST ของ Apple เมื่อลูกค้าขอคืนเงินจาก Apple ทาง Apple อาจส่งการแจ้งเตือนนั้นมา และคุณมีเวลา 12 ชั่วโมงในการตอบด้วย Send Consumption Information การค้นหา order ID เป็นเครื่องมือซัพพอร์ต มันไม่ได้เปิดช่วงเวลานั้นและไม่ได้ขยายเวลาให้

อีเมลขอคืนเงินหนึ่งฉบับมีต้นทุนเท่าไรเมื่อคุณข้ามการค้นหา

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

  • ของชดเชยซ้อนบนเงินคืน Apple คืนเงินการซื้อ ลูกค้าเขียนมาหาคุณด้วย แล้วฝ่ายซัพพอร์ตให้เครดิตฟรีหรือเพิ่มอีกหนึ่งเดือน เครดิตทุกหน่วยที่คุณให้ไปทำงานบนการประมวลผล การเรียก API และพื้นที่จัดเก็บที่คุณจ่ายเงิน ให้กับบัญชีที่ได้เงินคืนไปแล้ว
  • สิทธิ์เข้าใช้ที่ไม่เคยถูกเพิกถอน ถ้าการจัดการ REFUND ของคุณล้มเหลว ลูกค้าที่ได้เงินคืนแล้วก็ยังใช้งานต่อไป การค้นหาที่แสดง revocationDate ขณะที่ฐานข้อมูลของคุณยังบอกว่าใช้งานอยู่ คือรายงานบั๊กที่มีป้ายราคาติดมา
  • บัญชีผิด แก้ผิดจุด การกู้คืนหรือให้เครดิตกับบัญชีที่อยู่เบื้องหลังอีเมลที่ส่งต่อมา ทั้งที่ order ID เป็นของคนอื่น คือการให้บริการแบบเสียเงินแก่คนที่ไม่เคยซื้อ

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

revocationReason 1 แปลว่าฉันทำอะไรผิดหรือเปล่า

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

order ID ของ Google Play ต่างกันอย่างไร

Google Play ทำงานกลับกัน เอกสารการเรียกเก็บเงินของ Google ระบุว่าผู้ใช้จะได้รับอีเมลพร้อม order ID ที่ไม่ซ้ำกันสำหรับการซื้อผลิตภัณฑ์แบบครั้งเดียวทุกครั้ง สำหรับการซื้อการสมัครสมาชิกครั้งแรก และสำหรับการต่ออายุอัตโนมัติแต่ละครั้ง และคุณใช้ order ID นั้นจัดการการคืนเงินใน Play Console ได้ คุณค้นหาใน Order management ด้วย order ID หรืออีเมลเต็มของผู้ใช้ แล้วคืนเงินด้วยตัวเอง

คำถามorder ID ของ App Storeorder ID ของ Google Play
ลูกค้าหาได้ที่ไหนใบเสร็จทางอีเมลและประวัติการซื้อใน App Storeใบเสร็จทางอีเมลสำหรับทุกการซื้อและทุกการต่ออายุ
คุณค้นหาอย่างไรLook Up Order ID ใน App Store Server APIค้นหาใน Order management ใน Play Console
คืนเงินจากตรงนั้นได้ไหมไม่ได้ Apple เป็นผู้ตัดสินได้ คืนเงินเต็มจำนวน และคืนบางส่วนสำหรับการซื้อในแอปและการสมัครสมาชิก
ช่วงเวลาส่งหลักฐานสำหรับการคืนเงินCONSUMPTION_REQUEST, 12 ชั่วโมง, Apple เป็นผู้ตัดสินการตรวจสอบ chargeback ผ่าน orders.reviewrefund, 24 ชั่วโมง
การคืนเงินย้อนกลับได้ไหมคุณทำไม่ได้ไม่ได้ Play Console ระบุว่าการคืนเงินย้อนกลับไม่ได้

บน Google Play นั้น order ID สำคัญกว่า เพราะคุณเป็นคนกดปุ่มเอง Play Console ระบุว่าการคืนเงินคำสั่งซื้อการสมัครสมาชิกล่าสุดจะลบการสมัครสมาชิกทันทีและยกเลิกการต่ออายุในอนาคต ส่วนการคืนเงินคำสั่งซื้อที่เก่ากว่าเป็นการคืนเงินเท่านั้นและการสมัครสมาชิกยังใช้งานอยู่ การคืนเงินบางส่วนรองรับเฉพาะคำสั่งซื้อที่เกิดหลังเดือนมีนาคม 2018 และคุณคืนเงินบางส่วนสำหรับแอปแบบเสียเงินไม่ได้

ให้ order ID อยู่ต้นทางของขั้นตอนซัพพอร์ตเรื่องคืนเงิน

  • ขอ order ID ในแบบฟอร์มซัพพอร์ต พร้อมคำใบ้หนึ่งบรรทัด: อยู่ในอีเมลใบเสร็จของ Apple หรือ Google Play
  • บน iOS ให้เรียก Look Up Order ID ถอดรหัสทุกธุรกรรม แล้วแสดง productId, purchaseDate, revocationDate และ revocationReason ให้ฝ่ายซัพพอร์ตดูในหน้าจอเดียว
  • ถ้า OrderLookupStatus เป็น 1 ให้หยุดและขอใบเสร็จที่ถูกต้อง ไม่ต้องให้อะไรทั้งนั้น
  • ถ้า revocationDate มีค่า ให้ยืนยันว่าสิทธิ์เข้าใช้ถูกเพิกถอนบนเซิร์ฟเวอร์ของคุณแล้ว จากนั้นปิดตั๋ว ไม่ต้องมีของชดเชยเพิ่ม
  • ถ้าไม่มีค่าและลูกค้าต้องการเงินคืน ให้ส่งเขาไปที่ reportaproblem.apple.com และเตรียมตัวจัดการ CONSUMPTION_REQUEST ให้พร้อมสำหรับช่วง 12 ชั่วโมง RefundHalt ตอบคำขอนั้นด้วยข้อมูลการใช้งานที่ Apple ต้องการ
  • บน Android ให้หาคำสั่งซื้อที่ถูกต้องใน Play Console ก่อนคืนเงิน และตัดสินใจอย่างตั้งใจว่าจะคืนเงินอย่างเดียว หรือคืนเงินและเพิกถอนสิทธิ์

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

ในฐานะนักพัฒนา จะค้นหา order ID ของ App Store ได้อย่างไร
เรียก endpoint Look Up Order ID ของ App Store Server API คือ GET https://api.storekit.apple.com/inApps/v1/lookup/{orderId} พร้อม JWT ที่ลงลายเซ็นของคุณ order ID ที่ถูกต้องจะส่งคืน OrderLookupStatus 0 และธุรกรรมที่มีลายเซ็นอย่างน้อยหนึ่งรายการ ซึ่งคุณถอดรหัสเพื่ออ่าน productId, purchaseDate และรายละเอียดการคืนเงินใด ๆ endpoint นี้ใช้ไม่ได้ใน sandbox
ลูกค้าหา order ID ของ App Store ได้ที่ไหน
ในใบเสร็จทางอีเมลที่ Apple ส่งทุกครั้งที่ลูกค้าซื้อสินค้าในแอป และในประวัติการซื้อ App Store ที่ reportaproblem.apple.com หรือที่เมนู Apps & Purchase History ในแอป App Store ประวัติการซื้อแสดง 90 วันล่าสุดเป็นค่าเริ่มต้น และมีตัวกรองสำหรับการซื้อที่เก่ากว่านั้น
ฉันคืนเงินการซื้อใน App Store ด้วย order ID ได้ไหม
ไม่ได้ นักพัฒนาออกเงินคืนของ App Store เองไม่ได้ Apple เป็นผู้ตัดสินเมื่อลูกค้าขอคืนเงินที่ reportaproblem.apple.com สิ่งที่คุณทำได้คือตอบ CONSUMPTION_REQUEST ของ Apple ภายใน 12 ชั่วโมงด้วย Send Consumption Information
จะรู้ได้อย่างไรว่า Apple คืนเงินการซื้อไปแล้ว
ค้นหาด้วย order ID แล้วตรวจ revocationDate ในธุรกรรมที่ถอดรหัสแล้วทุกรายการ ถ้ามีค่า แปลว่า Apple คืนเงินการซื้อนั้นแล้วหรือเพิกถอนจาก Family Sharing ค่า revocationReason 0 หมายถึงเหตุผลอื่น เช่น ซื้อโดยไม่ตั้งใจ และ 1 หมายถึงปัญหาที่เกิดขึ้นจริงหรือที่ลูกค้ารู้สึกว่ามีในแอปของคุณ
OrderLookupStatus 1 หมายความว่าอะไร
หมายความว่า order ID ไม่ถูกต้องสำหรับแอปของคุณ และคำตอบไม่มีอาร์เรย์ signedTransactions ส่วนใหญ่ลูกค้าส่งใบเสร็จของแอปอื่นมา พิมพ์ ID ผิด หรือส่งใบเสร็จที่ไม่ได้มาจาก App Store ให้ขอใบเสร็จที่ถูกต้องก่อนให้สิ่งใดก็ตาม

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

RefundHalt

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

อ่านต่อ

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

การคืนเงินจาก web checkout บน iOS ตกมาอยู่ที่คุณแทน Apple และข้อพิพาทกับธนาคารก็เช่นกัน

แอป iPhone ในสหรัฐฯ สามารถลิงก์ผู้ซื้อไปยัง web checkout ได้แล้ว Apple ระบุว่าช่วยเรื่องการคืนเงินของยอดขายเหล่านั้นไม่ได้ งานคืนเงิน chargeback และค่าธรรมเนียมข้อพิพาท $15 จึงย้ายมาที่คุณ บทความนี้อธิบายว่าอะไรเปลี่ยนไป มีต้นทุนเท่าไร และจะลดข้อพิพาทได้อย่างไร

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

การคืนเงินแอปแบบเสียเงินไม่เคยไปถึงเซิร์ฟเวอร์ของคุณ ตัวแอปจึงต้องตรวจจับเอง

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

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

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