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