ก่อนหน้านี้มีการใช้เพย์โหลดของนักพัฒนาแอปเพื่อวัตถุประสงค์ต่างๆ รวมถึงการป้องกันการฉ้อโกงและการระบุแหล่งที่มาของการซื้อไปยังผู้ใช้ที่ถูกต้อง ใน Google Play Billing Library เวอร์ชัน 2.2 ขึ้นไป ระบบรองรับกรณีการใช้งานที่เคยต้องใช้เพย์โหลดของนักพัฒนาแอปอย่างเต็มรูปแบบในส่วนอื่นๆ ของไลบรารีแล้ว
เมื่อมีการรองรับนี้แล้ว เราจึงเลิกใช้งานเพย์โหลดของนักพัฒนาแอป โดยเริ่มจาก Google Play Billing Library เวอร์ชัน 2.2 วิธีการที่เชื่อมโยงกับเพย์โหลดของนักพัฒนาแอปถูกเลิกใช้งานในเวอร์ชัน 2.2 และนำออกในเวอร์ชัน 3.0 โปรดทราบว่าแอปของคุณยังคงดึงข้อมูลเพย์โหลดของนักพัฒนาแอปสำหรับการซื้อที่ดำเนินการโดยใช้ไลบรารีเวอร์ชันก่อนหน้าหรือ AIDL ได้
ดูรายการการเปลี่ยนแปลงโดยละเอียดได้ที่ หมายเหตุประจำเวอร์ชันของ Google Play Billing Library 2.2 และ หมายเหตุประจำเวอร์ชันของ Google Play Billing Library 3.0
การยืนยันการซื้อ
Google ขอแนะนำให้ใช้โทเค็นการซื้อ (รับจากเมธอด getPurchaseToken() ในออบเจ็กต์ Purchase) ร่วมกับ Google Play Developer API เพื่อยืนยันว่าการซื้อเป็นของจริงและไม่ได้มีการปลอมแปลงหรือเล่นซ้ำ
ดูข้อมูลเพิ่มเติมได้ที่
ต่อสู้กับการฉ้อโกงและการละเมิด
การระบุแหล่งที่มาของการซื้อ
แอปจำนวนมาก โดยเฉพาะเกม จำเป็นต้องตรวจสอบว่ามีการระบุแหล่งที่มาของการซื้อไปยังตัวละคร/อวาตาร์ในเกมหรือโปรไฟล์ผู้ใช้ในแอปที่เริ่มการซื้ออย่างถูกต้อง ตั้งแต่ Google Play Billing Library 2.2 เป็นต้นไป แอปของคุณสามารถส่งตัวระบุบัญชีและโปรไฟล์ที่ทำให้สับสนไปยัง Google เมื่อเปิดกล่องโต้ตอบการซื้อ และรับตัวระบุเหล่านั้นกลับมาเมื่อดึงข้อมูลการซื้อ
ใช้พารามิเตอร์
setObfuscatedAccountId()
และ
setObfuscatedProfileId()
ใน
BillingFlowParams
และดึงข้อมูลโดยใช้เมธอด
getAccountIdentifiers()
ในออบเจ็กต์
Purchase
เชื่อมโยงข้อมูลเมตากับการซื้อ
Google ขอแนะนำให้จัดเก็บข้อมูลเมตาเกี่ยวกับการซื้อไว้ในเซิร์ฟเวอร์แบ็กเอนด์ที่ปลอดภัยซึ่งคุณเป็นผู้ดูแล ข้อมูลเมตาการซื้อนี้ควรเชื่อมโยงกับโทเค็นการซื้อที่ได้รับโดยใช้เมธอดในออบเจ็กต์getPurchaseTokenPurchase คุณสามารถเก็บข้อมูลนี้ไว้ได้โดยส่งโทเค็นการซื้อและข้อมูลเมตา
ไปยังแบ็กเอนด์เมื่อระบบเรียก
PurchasesUpdatedListener
หลังจากที่การซื้อสำเร็จ
Google ขอแนะนำให้จัดเก็บข้อมูลเมตาไว้ในเซิร์ฟเวอร์แบ็กเอนด์ก่อนที่จะเปิดกล่องโต้ตอบการซื้อ และเชื่อมโยงข้อมูลเมตากับรหัสบัญชีของผู้ใช้, SKU ที่ซื้อ และการประทับเวลาปัจจุบัน เพื่อให้มั่นใจว่าข้อมูลเมตาจะเชื่อมโยงในกรณีที่เกิดการขัดจังหวะขั้นตอนการซื้อ
หากขั้นตอนการซื้อถูกขัดจังหวะก่อนที่ระบบจะเรียก
PurchasesUpdatedListener
แอปจะค้นพบการซื้อเมื่อแอปกลับมาทำงานต่อและเรียก
BillingClient.queryPurchasesAsync()
จากนั้นคุณสามารถส่งค่าที่ดึงข้อมูลจากออบเจ็กต์ Purchase ของ
getPurchaseTime(),
getSku(),
และ getPurchaseToken()
เมธอดไปยังเซิร์ฟเวอร์แบ็กเอนด์เพื่อค้นหาข้อมูลเมตา เชื่อมโยงข้อมูลเมตา
กับโทเค็นการซื้อ และดำเนินการซื้อต่อ โปรดทราบว่าการประทับเวลาที่คุณจัดเก็บไว้ในตอนแรกจะไม่ตรงกับค่าจากออบเจ็กต์ Purchase อย่างแน่นอน คุณจึงต้องเปรียบเทียบค่าเหล่านั้นในลักษณะคร่าวๆgetPurchaseTime() เช่น ตรวจสอบว่าค่าอยู่ในช่วงเวลาที่กำหนดหรือไม่