Voided Purchases API

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 นี้เป็นหนึ่งในหลายองค์ประกอบในกลยุทธ์แบบครอบคลุมเพื่อจัดการกับพฤติกรรมไม่พึงประสงค์ การเพิกถอนสิทธิ์เข้าถึงไอเทมที่ซื้อในแอปมักจะมีประสิทธิภาพมากกว่าเมื่อใช้ร่วมกับแอปที่มีราคาเหมาะสมสำหรับการซื้อในแอป การออกแบบแอปที่ไม่สนับสนุนพฤติกรรมไม่พึงประสงค์ ฐานผู้ใช้ที่แข็งแกร่งซึ่งมีวัฒนธรรมปฏิเสธพฤติกรรมดังกล่าว ตลอดจนช่องทางการสนับสนุนผู้ใช้ที่ตอบสนองได้ดีและมีประสิทธิภาพ
  • บังคับใช้นโยบายการเพิกถอนอย่างเป็นระบบเพื่อความยุติธรรมสําหรับผู้ใช้ทุกคน
  • ลองสร้างนโยบายแบบทีละขั้นเมื่อจัดการกับลักษณะการทำงานที่ไม่พึงประสงค์ เช่น เริ่มต้นด้วยคำเตือนในแอปสำหรับการกระทำผิดตั้งแต่เนิ่นๆ จากนั้นส่งต่อการตอบกลับเนื่องจากพฤติกรรมไม่พึงประสงค์ของผู้ใช้ยังคงดำเนินต่อไป ทางเลือกสุดท้ายคือ คุณสามารถ ป้องกันไม่ให้ผู้ใช้โต้ตอบกับแอปของคุณเลย
  • เมื่อแนะนำนโยบายการเพิกถอนและทุกครั้งที่อัปเดต ให้ใช้ช่องทางการติดต่อของแอปเพื่อแจ้งให้ผู้ใช้ทราบเกี่ยวกับการเปลี่ยนแปลง โปรดให้เวลาผู้ใช้เพื่อทำความเข้าใจการเปลี่ยนแปลงเหล่านี้ให้ชัดเจนก่อนที่จะมีผลในแอปของคุณ
  • แจ้งให้ผู้ใช้ทราบอย่างโปร่งใสและแจ้งให้คุณทราบเมื่อคุณดำเนินการ เช่น เพิกถอนสิทธิ์เข้าถึงไอเทมที่ซื้อในแอป โดยหลักการแล้ว ผู้ใช้ควรสามารถโต้แย้งการตัดสินใจของคุณได้ และการโต้แย้งดังกล่าวควรจะได้รับการปฏิบัติอย่างยุติธรรม
  • ตรวจสอบแบบฟอร์มความคิดเห็นและฟอรัมชุมชนเพื่อทำความเข้าใจว่าสิ่งใดกระตุ้นให้ผู้ใช้ประพฤติตัวในลักษณะที่ไม่พึงประสงค์ รวมทั้งแนวทางการปฏิบัติของผู้ใช้เหล่านั้น ใช้ข้อมูลเชิงลึกเหล่านี้ เป็นปราการด่านแรกในการป้องกัน