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

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