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

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

Google ขอแนะนำให้จัดเก็บข้อมูลเมตาไว้ในเซิร์ฟเวอร์แบ็กเอนด์ก่อนเปิดกล่องโต้ตอบการซื้อและเชื่อมโยงกับรหัสบัญชีของผู้ใช้, SKU ที่ซื้อ และการประทับเวลาปัจจุบัน เพื่อให้มั่นใจว่าข้อมูลเมตาจะเชื่อมโยงกันในกรณีที่ขั้นตอนการซื้อถูกขัดจังหวะ

หากขั้นตอนการซื้อถูกขัดจังหวะก่อนที่ระบบจะเรียกใช้ PurchasesUpdatedListener แอปจะค้นพบการซื้อเมื่อแอปกลับมาทำงานอีกครั้งและเรียกใช้ BillingClient.queryPurchasesAsync() จากนั้นคุณสามารถส่งค่าที่ดึงมาจากเมธอด getPurchaseTime(), getSku() และ getPurchaseToken() ของPurchaseออบเจ็กต์ไปยังเซิร์ฟเวอร์แบ็กเอนด์เพื่อค้นหาข้อมูลเมตา เชื่อมโยงข้อมูลเมตากับโทเค็นการซื้อ และประมวลผลการซื้อต่อไป โปรดทราบว่าการประทับเวลาที่คุณจัดเก็บไว้ตั้งแต่แรกจะไม่ตรงกับค่าจาก getPurchaseTime() ของออบเจ็กต์ Purchase ทั้งหมด คุณจึงต้องเปรียบเทียบค่าเหล่านี้แบบคร่าวๆ เช่น คุณสามารถตรวจสอบว่าค่าอยู่ภายในระยะเวลาหนึ่งๆ ของกันและกันหรือไม่