เพย์โหลดของนักพัฒนาแอป

ก่อนหน้านี้มีการใช้เพย์โหลดของนักพัฒนาแอปเพื่อวัตถุประสงค์ต่างๆ รวมถึงการป้องกันการฉ้อโกงและการระบุแหล่งที่มาของการซื้อให้กับผู้ใช้ที่ถูกต้อง ใน 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() เช่น ตรวจสอบว่าค่าต่างๆ อยู่ภายในระยะเวลาที่กำหนดของกันและกันหรือไม่