Google Play Voided Purchases API แสดงรายการคำสั่งซื้อที่เกี่ยวข้องกับการซื้อที่ผู้ใช้ได้ยกเลิก คุณสามารถใช้ข้อมูลจากรายการนี้เพื่อใช้ระบบเพิกถอนที่ป้องกันไม่ให้ผู้ใช้เข้าถึงผลิตภัณฑ์จากคำสั่งซื้อเหล่านั้นได้
API นี้ใช้กับคำสั่งซื้อแบบซื้อครั้งเดียวในแอปและการสมัครใช้บริการแอป
การซื้อสามารถเป็นโมฆะได้ด้วยวิธีต่อไปนี้
- ผู้ใช้ขอเงินคืนสำหรับคำสั่งซื้อของตน
- ผู้ใช้ยกเลิกคำสั่งซื้อ
- การสั่งซื้อถูกดึงเงินคืน
นักพัฒนาแอปยกเลิกหรือคืนเงินให้คำสั่งซื้อ
Google ยกเลิกหรือคืนเงินให้คำสั่งซื้อ
การใช้ API นี้จะช่วยสร้างประสบการณ์การใช้งานที่มีความสมดุลและยุติธรรมมากขึ้นสำหรับผู้ใช้แอปทั้งหมด โดยเฉพาะอย่างยิ่งหากแอปของคุณเป็นเกม
การเข้าถึง
หากต้องการใช้งาน Voided Purchases API คุณต้องมีสิทธิ์ดูข้อมูลทางการเงิน คุณให้สิทธิ์โดยใช้ไคลเอ็นต์ OAuth หรือบัญชีบริการ หากใช้บัญชีบริการ ให้เปิดใช้สิทธิ์ "ดูรายงานทางการเงิน" ภายในบัญชีนี้
หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการรับสิทธิ์เข้าถึง Google Play Developer API ที่ได้รับอนุญาต โปรดดูคำแนะนำต่อไปนี้
การดูการซื้อที่ถูกยกเลิก
ใช้เมธอด GET
เพื่อขอรายการการซื้อที่เป็นโมฆะ ในคำขอ ให้ใส่ชื่อแพ็กเกจที่สมบูรณ์ในตัวเองของแอป เช่น com.google.android.apps.maps
และโทเค็นการให้สิทธิ์ที่คุณได้รับเมื่อรับสิทธิ์เข้าถึง API
GET https://www.googleapis.com/androidpublisher/v3/applications/ your_package_name/purchases/voidedpurchases?access_token=your_auth_token
นอกจากนี้ คุณยังใส่พารามิเตอร์ต่อไปนี้ในคำขอของคุณได้ โดยที่พารามิเตอร์แต่ละรายการเป็นตัวเลือกที่ไม่บังคับ
- startTime
เวลาเป็นมิลลิวินาทีนับตั้งแต่ Unix Epoch ของการซื้อที่เป็นโมฆะเก่าที่สุดที่คุณต้องการดู���นการตอบกลับ โดยค่าเริ่มต้น
startTime
จะตั้งค่าเป็น 30 วันที่ผ่านมาAPI แสดงเฉพาะการซื้อที่เป็นโมฆะซึ่งเกิดขึ้นในช่วง 30 วันที่ผ่านมาเท่านั้น การซื้อที่เป็นโมฆะก่อนหน้านี้จะไม่รวมอยู่ในการตอบกลับ ไม่ว่าคุณจะระบุค่าใดสำหรับ
startTime
ไว้ก็ตาม- endTime
เวลาเป็นมิลลิวินาทีนับตั้งแต่ Unix Epoch ของการซื้อที่เป็นโมฆะล่าสุดที่คุณต้องการดูในการตอบกลับ โดยค่าเริ่มต้น
endTime
จะเป็นเวลาปัจจุบัน- maxResults
- จำนวนสูงสุดของการซื้อที่เป็นโมฆะที่ปรากฏในแต่ละคำตอบ โดยค่าเริ่มต้น ค่านี้คือ 1, 000 โปรดทราบว่าค่าสูงสุดสำหรับพารามิเตอร์นี้คือ 1000 ด้วย
- โทเค็น
- โทเค็นความต่อเนื่องจากคำตอบก่อนหน้า ซึ่งช่วยให้คุณดูผลลัพธ์เพิ่มเติมได้
- ประเภท
ประเภทของการซื้อที่เป็นโมฆะที่ปรากฏในแต่ละคำตอบ หากตั้งค่าเป็น 0 ระบบจะแสดงผลเฉพาะการซื้อในแอปที่เป็นโมฆะเท่านั้น หากตั้งค่าเป็น 1 ระบบจะส่งคืนทั้งการซื้อในแอปที่เป็นโมฆะและการซื้อการสมัครใช้บริการที่เป็นโมฆะ ค่าเริ่มต้นคือ 0
- includeQuantityBasedPartialRefund
ระบุว่าจะรวมการซื้อที่เป็นโมฆะสำหรับการคืนเงินบางส่วนที่อิงตามจำนวน ซึ่งจะมีผลกับการซื้อแบบหลายจำนวนเท่านั้น หากเป็น
true
ระบบอาจส่งคืนการซื้อที่เป็นโมฆะเพิ่มเติมพร้อมกับvoidedQuantity
ซึ่งระบุจำนวนเงินคืนของการคืนเงินบางส่วนที่อิงตามจำนวน ค่าเริ่มต้นคือfalse
การตอบกลับเป็นสตริง JSON ที่มีรายการการซื้อที่เป็นโมฆะ หากมีผลลัพธ์มากกว่าจำนวนที่ระบุในพารามิเตอร์คำขอ maxResults
การตอบกลับจะมีค่า nextPageToken
ซึ่งคุณส่งผ่านไปยังคำขอลำดับต่อมาเพื่อดูผลลัพธ์เพิ่มเติมได้ ผลลัพธ์แรกในรายการแสดงการซื้อที่เป็นโมฆะเก่าที่สุด
{ "tokenPagination": { "nextPageToken": "next_page_token" }, "voidedPurchases": [ { "kind": "androidpublisher#voidedPurchase", "purchaseToken": "some_purchase_token", "purchaseTimeMillis": "1468825200000", "voidedTimeMillis": "1469430000000", "orderId": "some_order_id", "voidedSource": "0", "voidedReason": "4" }, { "kind": "androidpublisher#voidedPurchase", "purchaseToken": "some_other_purchase_token", "purchaseTimeMillis": "1468825100000", "voidedTimeMillis": "1470034800000", "orderId": "some_other_order_id", "voidedSource": "2", "voidedReason": "5" }, ] }
โควต้า
Voided Purchases API กำหนดโควต้าต่อไปนี้สำหรับแต่ละแพ็กเกจ
- การค้นหา 6000 ครั้งต่อวัน (วันเริ่มต้นและสิ้นสุดเวลาเที่ยงคืนตามเวลาแปซิฟิก)
- คำค้นหา 30 รายการในช่วงเวลา 30 วินาที
หลักเกณฑ์สำหรับคำขอเริ่มต้น
ระหว่างการขอ API ครั้งแรก คุณอา��ต้องดึงข้อมูลทั้งหมดที่มีอยู่ของแอป แม้ว่าไม่น่าจะเป็นไปได้ แต่กระบวนการนี้อาจทำให้ใช้โควต้ารายวันหมดลงแล้ว หากต้องการรับข้อมูลการซื้อที่เป็นโมฆะอย่างปลอดภัยและสอดคล้องกันมากขึ้น ให้ทำตามแนวทางปฏิบัติแนะนำต่อไปนี้
- ใช้ค่าเริ่มต้นสำหรับพารามิเตอร์
maxResults
ด้วยวิธีนี้ หากใช้โควต้าการค้นหาทั้งหมดภายใน 1 วัน คุณจะดึงข้อมูลรายละเอียดการซื้อที่เป็นโมฆะ 6,000,000 รายการได้ - หากการตอบกลับมีค่าสำหรับ
nextPageToken
ให้กำหนดค่านี้ให้กับพารามิเตอร์token
ในระหว่างคำขอถัดไป
แนวทางปฏิบัติแนะนำ
เมื่อใช้ API นี้ในแอป โปรดทราบว่ามีสาเหตุหลายประการที่ทำให้การซื้อเป็นโมฆะและไม่มีโซลูชันใดใช้ได้ผลในทุกกรณี คุณควรคำนึงถึงผู้ใช้เมื่อออกแบบนโยบายและกลยุทธ์การเพิกถอน โดยทำตามแนวทางปฏิบัติที่แนะนำต่อไปนี้
- ใช้ API นี้เป็นหนึ่งในหลายองค์ประกอบในกลยุทธ์แบบครอบคลุมเพื่อจัดการกับพฤติกรรมไม่พึงประสงค์ การเพิกถอนสิทธิ์เข้าถึงไอเทมที่ซื้อในแอปมักจะมีประสิทธิภาพมากกว่าเมื่อใช้ร่วมกับแอปที่มีราคาเหมาะสมสำหรับการซื้อในแอป การออกแบบแอปที่ไม่สนับสนุนพฤติกรรมไม่พึงประสงค์ ฐานผู้ใช้ที่แข็งแกร่งซึ่งมีวัฒนธรรมปฏิเสธพฤติกรรมดังกล่าว ตลอดจนช่องทางการสนับสนุนผู้ใช้ที่ตอบสนองได้ดีและมีประสิทธิภาพ
- บังคับใช้นโยบายการเพิก��อนอย่างเป็นระบบเพื่อความยุติธรรมสําหรับผู้ใช้ทุกคน
- ลองสร้างนโยบายแบบทีละขั้นเมื่อจัดการกับลักษณะการทำงานที่ไม่พึงประสงค์ เช่น เริ่มต้นด้วยคำเตือนในแอปสำหรับการกระทำผิดตั้งแต่เนิ่นๆ จากนั้นส่งต่อการตอบกลับเนื่องจากพฤติกรรมไม่พึงประสงค์ของผู้ใช้ยังคงดำเนินต่อไป ทางเลือกสุดท้ายคือ คุณสามารถ ป้องกันไม่ให้ผู้ใช้โต้ตอบกับแอปของคุณเลย
- เมื่อแนะนำนโยบายการเพิกถอนและทุกครั้งที่อัปเดต ให้ใช้ช่องทางการติดต่อของแอปเพื่อแจ้งให้ผู้ใช้ทราบเกี่ยวกับการเปลี่ยนแปลง โปรดให้เวลาผู้ใช้เพื่อทำความเข้าใจการเปลี่ยนแปลงเหล่านี้ให้ชัดเจนก่อนที่จะมีผลในแอปของคุณ
- แจ้งให้ผู้ใช้ทราบอย่างโปร่งใสและแจ้งให้คุณทราบเมื่อคุณดำเนินการ เช่น เพิกถอนสิทธิ์เข้าถึงไอเทมที่ซื้อในแอป โดยหลักการแล้ว ผู้ใช้ควรสามารถโต้แย้งการตัดสินใจของคุณได้ และการโต้แย้งดังกล่าวควรจะได้รับการปฏิบัติอย่างยุติธรรม
- ตรวจสอบแบบฟอร์มความคิดเห็นและฟอรัมชุมชนเพื่อทำความเข้าใจว่าสิ่งใดกระตุ้นให้ผู้ใช้ประพฤติตัวในลักษณะที่ไม่พึงประสงค์ รวมทั้งแนวทางการปฏิบัติของผู้ใช้เหล่านั้น ใช้ข้อมูลเชิงลึกเหล่านี้ เป็นปราการด่านแรกในการป้องกัน