บันทึกประจำรุ่นของ Google Play Billing Library

หัวข้อนี้มีบันทึกประจำรุ่นสำหรับ Google Play Billing Library

รุ่น Google Play Billing Library 7.0.0 (14-05-2024)

ส่วนขยาย Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 7.0.0 พร้อมใช้งานแล้ว พร้อมใช้งาน

สรุปการเปลี่ยนแปลง

Google Play Billing Library 6.2.1 รุ่น (16-04-2024)

ส่วนขยาย Google Play Billing Library และ Kotlin เวอร์ชัน 6.2.1 พร้อมใช้งานแล้ว พร้อมใช้งาน

สรุปการเปลี่ยนแปลง

Google Play Billing Library 6.2.0 รุ่น (06-03-2024)

ส่วนขยาย Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 6.2.0 พร้อมใช้งานแล้ว พร้อมใช้งาน

สรุปการเปลี่ยนแปลง

รุ่น Google Play Billing Library 6.1.0 (14-11-2023)

ส่วนขยาย Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 6.1.0 พร้อมใช้งานแล้ว พร้อมใช้งาน

สรุปการเปลี่ยนแปลง

Google Play Billing Library 6.0.1 รุ่น (22-06-2023)

ส่วนขยาย Google Play Billing Library และ Kotlin เวอร์ชัน 6.0.1 พร้อมใช้งานแล้ว พร้อมใช้งาน

สรุปการเปลี่ยนแปลง

อัปเดต Play Billing Library ให้เข้ากันได้กับ Android 14

รุ่น Google Play Billing Library 6.0 (10-05-2023)

ส่วนขยาย Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 6.0.0 พร้อมใช้งานแล้ว พร้อมใช้งาน

สรุปการเปลี่ยนแปลง

  • เพิ่มใหม่ ReplacementMode enum ที่จะแทนที่ ProrationMode

    โปรดทราบว่า ProrationMode ยังคงมีให้บริการสำหรับความเข้ากันได้แบบย้อนหลัง เหตุผล

  • นำรหัสคำสั่งซื้อสำหรับออกแล้ว PENDING การซื้อ

    ก่อนหน้านี้ ระบบจะสร้างรหัสคำสั่งซื้อเสมอแม้ว่าการซื้อจะเป็น รอดำเนินการ ตั้งแต่เวอร์ชัน 6.0.0 เป็นต้นไป ระบบจะไม่สร้างรหัสคำสั่งซื้อสำหรับ การสั่งซื้อที่รอดำเนินการ และระบบจะป้อนข้อมูลรหัสคำสั่งซื้อสำหรับการซื้อเหล่านี้ หลังจากย้ายการซื้อไปยัง PURCHASED

  • นำ queryPurchases และ launchPriceConfirmationFlow วิธีออกแล้ว

    เมธอด queryPurchases และ launchPriceConfirmationFlow ที่มี ก่อนหน้านี้มีการทำเครื่องหมายว่าเลิกใช้งานแล้ว โดยได้มีการนำออกใน Play Billing แล้ว Library 6.0.0 นักพัฒนาซอฟต์แวร์ควรใช้ queryPurchasesAsync แทนที่จะเป็น queryPurchases สำหรับตัวเลือก launchPriceConfirmationFlow ตัว ดูการเปลี่ยนแปลงราคา

  • เพิ่มโค้ดตอบกลับข้อผิดพลาดเกี่ยวกับเครือข่ายรายการใหม่แล้ว

    โค้ดตอบกลับข้อผิดพลาดใหม่เกี่ยวกับเครือข่าย NETWORK_ERROR คือ PBL เวอร์ชัน 6.0.0 เป็นต้นไป โค้ดนี้จะแสดงเมื่อ มีข้อผิดพลาดเกิดขึ้นเนื่องจากปัญหาการเชื่อมต่อเครือข่าย การเชื่อมต่อเครือข่ายเหล่านี้ มีการรายงานข้อผิดพลาดก่อนหน้านี้เป็น SERVICE_UNAVAILABLE

  • อัปเดตแล้ว SERVICE_UNAVAILABLE และ SERVICE_TIMEOUT

    ตั้งแต่ PBL เวอร์ชัน 6.0.0 เป็นต้นไป ข้อผิดพลาดเนื่องจากหมดเวลาในการประมวลผลจะเป็น แสดงผลเป็น SERVICE_UNAVAILABLE แทนที่จะเป็น SERVICE_TIMEOUT ปัจจุบัน

    โดยลักษณะการทำงานจะไม่เปลี่ยนแปลงใน PBL เวอร์ชันก่อนหน้า

  • ลบแล้ว SERVICE_TIMEOUT

    ตั้งแต่ PBL เวอร์ชัน 6.0.0 เป็นต้นไป ระบบจะไม่แสดงผล SERVICE_TIMEOUT อีกต่อไป PBL เวอร์ชันก่อนหน้าจะยังคงแสดงรหัสนี้

  • เพิ่มการบันทึกเพิ่มเติมแล้ว

    รุ่น Play Billing Library 6 มีการบันทึกเพิ่มเติมซึ่ง ข้อมูลเชิงลึกเกี่ยวกับการใช้งาน API (เช่น สำเร็จและล้มเหลว) และการเชื่อมต่อบริการ ปัญหา เราจะใช้ข้อมูลนี้เพื่อปรับปรุงประสิทธิภาพของ Play Billing Library และให้การสนับสนุนที่ดีขึ้นเมื่อเกิดข้อผิดพลาด

Google Play Billing Library 5.2.1 รุ่น (22-06-2023)

ส่วนขยาย Google Play Billing Library และ Kotlin เวอร์ชัน 5.2.1 พร้อมใช้งานแล้ว พร้อมใช้งาน

สรุปการเปลี่ยนแปลง

อัปเดต Play Billing Library ให้เข้ากันได้กับ Android 14

Google Play Billing Library 5.2 รุ่น (06-04-2023)

ส่วนขยาย Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 5.2.0 พร้อมใช้งานแล้ว พร้อมใช้งาน

สรุปการเปลี่ยนแปลง

Google Play Billing Library 5.1 รุ่น (31-10-2022)

ส่วนขยาย Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 5.1.0 พร้อมใช้งานแล้ว พร้อมใช้งาน

เวอร์ชันนี้มีการเปลี่ยนแปลงต่อไปนี้

สรุปการเปลี่ยนแปลง

Google Play Billing Library 5.0 รุ่น (11-05-2022)

ส่วนขยาย Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 5.0.0 พร้อมใช้งานแล้ว พร้อมใช้งาน

เวอร์ชันนี้มีการเปลี่ยนแปลงต่อไปนี้

สรุปการเปลี่ยนแปลง

  • แนะนำรูปแบบใหม่สำหรับการสมัครใช้บริการ ซึ่งรวมถึงเอนทิตีใหม่ที่ ช่วยให้คุณสร้างข้อเสนอหลายรายการสำหรับรายการเดียว ผลิตภัณฑ์ที่ต้องสมัครใช้บริการ สำหรับข้อมูลเพิ่มเติม โปรดดู คำแนะนำในการย้ายข้อมูล
  • เพิ่มเมื่อ BillingClient.queryProductDetailsAsync() เพื่อแทนที่ BillingClient.querySkuDetailsAsync()
  • เพิ่มวิธี setIsOfferPersonalized() สำหรับการกำหนดราคาในสหภาพยุโรปที่ปรับเปลี่ยนในแบบของคุณแล้ว ข้อกำหนดในการเปิดเผยข้อมูล ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้วิธีนี้ได้ที่ ระบุราคาสำหรับคุณโดยเฉพาะ
  • นำ queryPurchases() ออก ซึ่งก่อนหน้านี้เลิกใช้งานแล้วและแทนที่ด้วย queryPurchasesAsync อยู่ใน Google Play Billing Library 4.0.0
  • เลิกใช้งาน launchPriceChangeFlow แล้ว และจะนำออกในอนาคต โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกอื่นๆ ที่ เปิดขั้นตอนการยืนยันการเปลี่ยนแปลงราคา
  • ลบแล้ว setVrPurchaseFlow() ซึ่งเคยใช้เมื่อสร้างขั้นตอนการซื้อ ในเวอร์ชันก่อนหน้า วิธีนี้จะเปลี่ยนเส้นทางผู้ใช้ไปยัง ทำการซื้อให้เสร็จสมบูรณ์บนอุปกรณ์ Android ของตน เมื่อนำออกแล้ว ด้วยวิธีนี้ ผู้ใช้จะทำการซื้อจนเสร็จสมบูรณ์ผ่าน ขั้นตอนการซื้อแบบมาตรฐาน

Google Play Billing Library 4.1 รุ่น (23-02-2022)

ส่วนขยาย Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 4.1.0 พร้อมใช้งานแล้ว พร้อมใช้งาน

เวอร์ชันนี้มีการเปลี่ยนแปลงต่อไปนี้

สรุปการเปลี่ยนแปลง

  • เพิ่ม BillingClient.showInAppMessages() แล้ว เพื่อช่วยจัดการการปฏิเสธการชำระเงินค่าสมัครใช้บริการ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธี หากต้องการใช้การรับส่งข้อความในแอปเพื่อจัดการกับการปฏิเสธการชำระเงินสำหรับการสมัครใช้บริการ โปรดดูที่ การจัดการกับการปฏิเสธการชำระเงิน

Google Play Billing Library 4.0 รุ่น (18-05-2021)

ส่วนขยาย Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 4.0.0 พร้อมใช้งานแล้ว พร้อมใช้งาน

สรุปการเปลี่ยนแปลง

  • เพิ่ม BillingClient.queryPurchasesAsync() เพื่อแทนที่ BillingClient.queryPurchases() ซึ่งจะถูกนำออกในรุ่นถัดไป

  • เพิ่มโหมดการแทนที่การสมัครใช้บริการใหม่ IMMEDIATE_AND_CHARGE_FULL_PRICE แล้ว

  • เพิ่มเมธอด BillingClient.getConnectionState() เพื่อเรียกข้อมูลสถานะการเชื่อมต่อของ Play Billing Library แล้ว

  • อัปเดต Javadoc และการใช้งานเพื่อระบุว่าเธรดใดเรียกใช้เมธอดได้และมีการโพสต์ผลลัพธ์ของชุดข้อความใด

  • เพิ่ม BillingFlowParams.Builder.setSubscriptionUpdateParams() เป็นวิธีใหม่ในการเริ่มการอัปเดตการติดตาม เราแทนที่ BillingFlowParams#getReplaceSkusProrationMode, BillingFlowParams#getOldSkuPurchaseToken, BillingFlowParams#getOldSku, BillingFlowParams.Builder#setReplaceSkusProrationMode และ BillingFlowParams.Builder#setOldSku ที่นำออกแล้ว

  • เพิ่ม Purchase.getQuantity() และ PurchaseHistoryRecord.getQuantity() แล้ว

  • เพิ่ม Purchase#getSkus() และ PurchaseHistoryRecord#getSkus() แล้ว อุปกรณ์เหล่านี้แทนที่ Purchase#getSku และ PurchaseHistoryRecord#getSku ที่นำออกแล้ว

  • นำ BillingFlowParams#getSku, BillingFlowParams#getSkuDetails และ BillingFlowParams#getSkuType ออกแล้ว

Google Play Billing Library 3.0.3 รุ่น (12-03-2021)

เวอร์ชัน 3.0.3 ของ Google Play Billing Library, ส่วนขยาย Kotlin และ Unity และปลั๊กอินได้แล้ว

แก้ไขข้อบกพร่องของ Java และ Kotlin

  • แก้ไขการรั่วไหลของหน่วยความจำเมื่อ endConnection() จะถูกเรียก
  • แก้ปัญหาเมื่อแอปที่ใช้ Google Play Billing Library ใช้ โหมดเปิดใช้งานงานเดี่ยว ต onPurchasesUpdated() Callback จะทริกเกอร์เมื่อแอปกลับมาทำงานอีกครั้งจาก Android Launcher และกล่องโต้ตอบการเรียกเก็บเงินปรากฏขึ้นก่อนที่จะถูกระงับ

แก้ไขข้อบกพร่องของ Unity

  • อัปเดตเป็น Java เวอร์ชัน 3.0.3 เพื่อแก้ปัญหาหน่วยความจำรั่วและแก้ปัญหาที่ทำให้ไม่สามารถ การซื้อเมื่อแอปกลับมาทำงานอีกครั้งจาก Android Launcher และการเรียกเก็บเงิน กล่องโต้ตอบปรากฏขึ้นก่อนที่จะถูกระงับ

Google Play Billing Library 3.0.2 รุ่น (24-11-2020)

Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 3.0.2 พร้อมใช้งานแล้ว

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อบกพร่องในส่วนขยาย Kotlin ที่โครูทีนไม่ทำงานโดยมีข้อผิดพลาด "ดำเนินการต่อแล้ว"
  • แก้ไขการอ้างอิงที่ยังไม่ได้แก้ไขเมื่อใช้ส่วนขยาย Kotlin กับไลบรารี kotlinx.coroutines เวอร์ชัน 1.4 ขึ้นไป

Google Play Billing Library 3.0.1 รุ่น (30-09-2020)

Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 3.0.1 พร้อมใช้งานแล้ว

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อบกพร่องที่หากแอปหยุดทำงานและกู้คืนระหว่างขั้นตอนการเรียกเก็บเงิน ระบบอาจไม่เรียกใช้ PurchasesUpdatedListener พร้อมกับผลการซื้อ

Google Play Billing Library 3.0 รุ่น (08-06-2020)

เวอร์ชัน 3.0.0 ของ Google Play Billing Library, ส่วนขยาย Kotlin และปลั๊กอิน Unity ก็พร้อมใช้งานแล้ว

สรุปการเปลี่ยนแปลง

  • นำการรองรับ SKU ที่มีการให้รางวัลออกแล้ว
  • นำพารามิเตอร์ ChildDirected และ UnderAgeOfConsent ออกแล้ว
  • นำเมธอดเพย์โหลดของนักพัฒนาซอฟต์แวร์ที่เลิกใช้งานแล้วออก
  • นำเมธอด BillingFlowParams.setAccountId() ที่เลิกใช้งานแล้วออก และ BillingFlowParams.setDeveloperId()
  • นำเมธอด BillingFlowParams.setOldSkus(String oldSku) ที่เลิกใช้งานแล้วออก และ BillingFlowParams.addOldSku(String oldSku)
  • เพิ่มคำอธิบายประกอบความสามารถในการเว้นว่าง

การแก้ไขข้อบกพร่อง

  • SkuDetails.getIntroductoryPriceCycles() ในขณะนี้จะแสดง int แทนที่จะเป็น String
  • แก้ไขข้อบกพร่องที่ขั้นตอนการเรียกเก็บเงินจะถือว่ามีพารามิเตอร์เพิ่มเติม แม้ว่าจะไม่ได้ตั้งค่าพารามิเตอร์เพิ่มเติม

Google Play Billing Library 2.2.1 รุ่น (20-05-2020)

Google Play Billing Library เวอร์ชัน 2.2.1 พร้อมให้บริการแล้ว

การแก้ไขข้อบกพร่อง

  • อัปเดตเวอร์ชันเริ่มต้นของไลบรารี Java Play Billing ที่ ส่วนขยาย Kotlin อยู่

Google Play Billing Library 2.2.0 รุ่น 2.2.0 และการรองรับ Unity (23-03-2020)

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

Google Play Billing Billing Library 2 สำหรับ Unity

นอกเหนือจาก Google Play Billing เวอร์ชัน Java และ Kotlin ปัจจุบัน Library 2 เราได้เปิดตัวไลบรารีเวอร์ชันสำหรับใช้กับ Unity เกม นักพัฒนาซอฟต์แวร์ที่ใช้ API การซื้อในแอปของ Unity สามารถอัปเกรดได้ในตอนนี้เพื่อใช้ จากฟีเจอร์ทั้งหมดของ Google Play Billing Library 2 และเพื่อทำให้ การอัปเกรดครั้งต่อๆ ไปของ Google Play Billing Library เวอร์ชันต่อๆ ไป ได้ง่ายยิ่งขึ้น

ดูข้อมูลเพิ่มเติมได้ที่ ใช้ Google Play Billing กับ Unity

สรุปการเปลี่ยนแปลง

รุ่น Google Play Billing Library 2.1.0 และส่วนขยาย Kotlin 2.1.0 รุ่น (10-12-2019)

ไลบรารี Google Play Billing เวอร์ชัน 2.1.0 และส่วนขยาย Kotlin ใหม่ พร้อมใช้งานแล้ว ส่วนขยาย Kotlin ของ Play Billing Library จะแสดงสำนวน ทางเลือก API สําหรับการใช้ Kotlin ซึ่งมาพร้อมกับความปลอดภัย Null ที่ดีขึ้นและ โครูทีน ดูตัวอย่างโค้ดได้ที่ ใช้ Google Play Billing Library

เวอร์ชันนี้มีการเปลี่ยนแปลงต่อไปนี้

สรุปการเปลี่ยนแปลง

  • ใน BillingFlowParams เลิกใช้งาน setOldSku(String oldSku) และแทนที่ด้วย setOldSku(String oldSku, String purchaseToken) เพื่อชี้แจงเมื่อ บัญชีหลายบัญชีในอุปกรณ์มี SKU เดียวกัน

Google Play Billing Library 2.0.3 รุ่น (05-08-2019)

Google Play Billing Library เวอร์ชัน 2.0.3 พร้อมใช้งานแล้ว

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อบกพร่องที่ทำให้ querySkuDetailsAsync() ทำงานล้มเหลวในบางครั้งเมื่อใช้โค้ด DEVELOPER_ERROR แทนที่จะส่งคืนผลลัพธ์ที่ประสบความสำเร็จ

Google Play Billing Library 2.0.2 รุ่น (08-07-2019)

Google Play Billing Library เวอร์ชัน 2.0.2 พร้อมใช้งานแล้ว รุ่นนี้ มีการอัปเดตเอกสารอ้างอิงและจะไม่เปลี่ยนแปลงไลบรารี

Google Play Billing Library 2.0.1 รุ่น (06-06-2019)

Google Play Billing Library เวอร์ชัน 2.0.1 พร้อมใช้งานแล้ว เวอร์ชันนี้ มีการเปลี่ยนแปลงต่อไปนี้

การแก้ไขข้อบกพร่อง

  • แก้ไขข้อบกพร่องที่ข้อความแก้ไขข้อบกพร่องแสดงผลเป็น null ในบางกรณี
  • แก้ไขปัญหาหน่วยความจำรั่วไหลที่อาจเกิดขึ้น

รุ่น Google Play Billing Library 2.0 (07-05-2019)

Google Play Billing Library เวอร์ชัน 2.0 พร้อมให้บริการแล้ว เวอร์ชันนี้ มีการเปลี่ยนแปลงต่อไปนี้

คุณต้องรับทราบการซื้อภายใน 3 วัน

Google Play รองรับการซื้อผลิตภัณฑ์จากภายในแอป (ในแอป) หรือ นอกแอปของคุณ (นอกแอป) เพื่อให้ Google Play ดูแลให้ ประสบการณ์การซื้อที่สอดคล้องกัน ไม่ว่าผู้ใช้จะซื้อ คุณต้องตอบรับการซื้อทั้งหมดที่ได้รับผ่านทาง Google Play Billing Library โดยเร็วที่สุดหลังจากให้สิทธิ์กับผู้ใช้ ถ้า คุณไม่รับทราบการซื้อภายใน 3 วัน ผู้ใช้จะ จะได้รับการคืนเงิน และ Google Play จะเพิกถอนการซื้อ สำหรับ ธุรกรรมที่รอดำเนินการ (ใหม่ในเวอร์ชัน 2.0) กรอบเวลา 3 วัน เริ่มต้นเมื่อการซื้อได้ย้ายไปยังรัฐPURCHASEDและไม่มีผลกับ ขณะที่การซื้ออยู่ในสถานะ PENDING

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

ตอนนี้ออบเจ็กต์ Purchase มี isAcknowledged() เพื่อระบุว่ายอมรับการซื้อแล้วหรือไม่ นอกจากนี้ Google Play Developer API มีค่าบูลีนสำหรับการยอมรับทั้งคู่ Purchases.products และ Purchases.subscriptions ก่อนตอบรับการซื้อ อย่าลืมใช้วิธีการเหล่านี้เพื่อระบุว่า ได้รับทราบการซื้อแล้ว

คุณรับทราบการซื้อได้โดยใช้วิธีใดวิธีหนึ่งต่อไปนี้

  • สำหรับผลิตภัณฑ์เพื่อการบริโภค ให้ใช้ consumeAsync() ที่อยู่ใน API ของไคลเอ็นต์
  • สำหรับผลิตภัณฑ์ที่ไม่มีการบริโภค ให้ใช้ acknowledgePurchase() ซึ่งอยู่ใน API ของไคลเอ็นต์
  • มีเมธอด acknowledge() ใหม่ใน Server API ด้วย

นำ BillingFlowParams.setSku() แล้ว

นำเมธอด BillingFlowParams#setSku() ที่เลิกใช้งานไปก่อนหน้านี้ออกแล้ว ในรุ่นนี้ ก่อนแสดงผลิตภัณฑ์ในขั้นตอนการซื้อ คุณต้องเรียกใช้ BillingClient.querySkuDetailsAsync() การส่งผลลัพธ์ SkuDetails ออบเจ็กต์ที่ BillingFlowParams.Builder.setSkuDetails()

ดูตัวอย่างโค้ดได้ที่ ใช้ Google Play Billing Library

รองรับเพย์โหลดของนักพัฒนาซอฟต์แวร์

ไลบรารี Google Play Billing เวอร์ชัน 2.0 เพิ่มการสนับสนุนสำหรับนักพัฒนาซอฟต์แวร์ เพย์โหลด - สตริงที่กำหนดเองที่แนบไปกับการซื้อได้ คุณสามารถ แนบพารามิเตอร์เพย์โหลดของนักพัฒนาซอฟต์แวร์ไปกับการซื้อ แต่เฉพาะเมื่อทำการซื้อ รับทราบหรือนำไปใช้แล้ว ซึ่งไม่เหมือนกับเพย์โหลดของนักพัฒนาซอฟต์แวร์ใน AIDL ซึ่งมิติข้อมูล สามารถระบุเพย์โหลดเมื่อเปิดใช้ขั้นตอนการซื้อ เนื่องจากการซื้อ สามารถเริ่มต้นจากภายนอกแอปของคุณ การเปลี่ยนแปลงนี้ ทำให้มั่นใจว่าคุณมีโอกาสที่จะเพิ่มเพย์โหลดสำหรับการซื้ออยู่เสมอ

หากต้องการเข้าถึงเพย์โหลดในไลบรารีใหม่ ออบเจ็กต์ Purchase รายการมี getDeveloperPayload()

ข้อเสนอที่สอดคล้อง

เมื่อคุณเสนอ SKU ที่มีส่วนลด ตอนนี้ Google Play จะส่งคืนราคาเดิมซึ่งเท่ากับ SKU เพื่อให้คุณแสดงให้ผู้ใช้ทราบว่าตนกำลังรับส่วนลด

SkuDetails มี 2 รายการ วิธีการใหม่ในการดึงข้อมูลราคา SKU เดิม

  • getOriginalPriceAmountMicros() จะแสดงราคาเดิมที่ไม่ได้จัดรูปแบบของ SKU ก่อนใช้ส่วนลด
  • getOriginalPrice() จะแสดงราคาเดิมพร้อมรูปแบบสกุลเงินเพิ่มเติม

ธุรกรรมที่อยู่ระหว่างดำเนินการ

สำหรับไลบรารี Google Play Billing Library เวอร์ชัน 2.0 คุณต้องให้การสนับสนุน การซื้อที่จำเป็นต้องดำเนินการเพิ่มเติมก่อนให้สิทธิ์ สำหรับ ตัวอย่างเช่น ผู้ใช้อาจเลือกซื้อไอเทมที่ซื้อในแอปของคุณที่หน้าร้านจริง ใช้เงินสด ซึ่งหมายความว่าธุรกรรมจะเสร็จสมบูรณ์นอกแอปของคุณ ใน คุณควรให้สิทธิ์หลังจากที่ผู้ใช้ดำเนินการเสร็จแล้วเท่านั้น ธุรกรรมนั้น

หากต้องการเปิดใช้การซื้อที่รอดำเนินการ โปรดโทร enablePendingPurchases() เป็นส่วนหนึ่งของการเริ่มต้นแอป

ใช้ Purchase.getPurchaseState() เพื่อดูว่าสถานะการซื้อเป็น PURCHASED หรือ PENDING โปรดทราบว่า คุณควรให้สิทธิ์เฉพาะเมื่อรัฐคือPURCHASED คุณควร ตรวจสอบการอัปเดตสถานะ Purchase โดยทำดังนี้

  1. เมื่อเริ่มแอป ให้โทร BillingClient.queryPurchases() เพื่อเรียกดูรายการผลิตภัณฑ์ที่ยังไม่ได้ใช้ซึ่งเชื่อมโยงกับผู้ใช้
  2. เรียก Purchase.getPurchaseState() สำหรับออบเจ็กต์ Purchase แต่ละรายการที่แสดงผล
  3. ใช้ onPurchasesUpdated() ในการตอบกลับการเปลี่ยนแปลงไปยังออบเจ็กต์ Purchase

นอกจากนี้ API สำหรับนักพัฒนาซอฟต์แวร์ Google Play ยังมีสถานะ PENDING สำหรับ Purchases.products ไม่รองรับธุรกรรมที่อยู่ระหว่างดำเนินการสำหรับ การสมัครใช้บริการ

เวอร์ชันนี้ยังเปิดตัวประเภทการแจ้งเตือนใหม่แบบเรียลไทม์สำหรับนักพัฒนาแอป OneTimeProductNotification ประเภทการแจ้งเตือนนี้มีข้อความเดียว ซึ่งมีค่าเป็น ONE_TIME_PRODUCT_PURCHASED หรือ ONE_TIME_PRODUCT_CANCELED ระบบจะส่งการแจ้งเตือนประเภทนี้สำหรับการซื้อเท่านั้น ที่เกี่ยวข้องกับรูปแบบการชำระเงินที่ล่าช้า เช่น เงินสด

เมื่อรับทราบการซื้อที่รอดำเนินการ โปรดรับทราบเฉพาะเมื่อ สถานะการซื้อคือ PURCHASED ไม่ใช่ PENDING

การเปลี่ยนแปลง API

ไลบรารี Google Play Billing เวอร์ชัน 2.0 มีการเปลี่ยนแปลง API หลายอย่างใน รองรับฟีเจอร์ใหม่ๆ และอธิบายฟังก์ชันที่มีอยู่ให้ชัดเจนยิ่งขึ้น

ใช้งานแบบไม่พร้อมกัน

consumeAsync() ตอนนี้ต้องใช้ ออบเจ็กต์ ConsumeParams รายการ แทนที่จะเป็น purchaseToken ConsumeParams มี purchaseToken เป็น และเป็นเพย์โหลดของนักพัฒนาซอฟต์แวร์ที่ไม่บังคับ

consumeAsync() เวอร์ชันก่อนหน้าถูกนำออกในรุ่นนี้แล้ว

QueryPurchaseHistoryAsync

เพื่อลดความสับสน queryPurchaseHistoryAsync() ในขณะนี้จะแสดง PurchaseHistoryRecord แทนที่จะเป็นออบเจ็กต์ Purchase ออบเจ็กต์ PurchaseHistoryRecord คือ เหมือนกับออบเจ็กต์ Purchase เพียงแต่ว่าจะแสดงเฉพาะค่าที่ส่งคืนโดย queryPurchaseHistoryAsync() และไม่มี autoRenewing ช่อง orderId และ packageName โปรดทราบว่าจะไม่มีการเปลี่ยนแปลงใดๆ เกี่ยวกับ ข้อมูลที่ส่งคืน - queryPurchaseHistoryAsync() จะแสดงผลข้อมูลเดียวกับ ก่อนหน้านี้

ผลลัพธ์การเรียกเก็บเงินของผลลัพธ์

API ที่ก่อนหน้านี้แสดงผลค่าจำนวนเต็ม BillingResponse จะแสดงค่า BillingResult ออบเจ็กต์ BillingResult มีจำนวนเต็ม BillingResponse และ สตริงการแก้ไขข้อบกพร่องที่คุณสามารถใช้เพื่อวิเคราะห์ข้อผิดพลาด สตริงการแก้ไขข้อบกพร่องใช้ en-US ภาษาและไม่ควรแสดงให้ผู้ใช้ปลายทางเห็น

การแก้ไขข้อบกพร่อง

Google Play Billing Library 1.2.2 รุ่น (07-03-2019)

Google Play Billing Library เวอร์ชัน 1.2.2 พร้อมให้บริการแล้ว เวอร์ชันนี้ มีการเปลี่ยนแปลงต่อไปนี้

การแก้ไขข้อบกพร่อง

  • แก้ไขปัญหาการแยกชุดข้อความใน v1.2.1 ยกเลิกการบล็อกการโทรในเบื้องหลังแล้ว เทรดหลัก

การเปลี่ยนแปลงอื่นๆ

  • แม้ว่าจะยังแนะนำให้ใช้เทรดหลักอยู่ แต่ตอนนี้คุณสามารถสร้างอินสแตนซ์ได้แล้ว Google Play Billing Library จากชุดข้อความเบื้องหลัง
  • ย้ายข้อมูลอินสแตนซ์ไปยังเทรดในเบื้องหลังอย่างสมบูรณ์แล้วเพื่อลด ก็มีโอกาสเกิด ANR

Play Billing Library 1.2.1 รุ่น (04-03-2019)

Google Play Billing Library เวอร์ชัน 1.2.1 พร้อมให้บริการแล้ว เวอร์ชันนี้ มีการเปลี่ยนแปลงต่อไปนี้

การเปลี่ยนแปลงที่สำคัญ

การเปลี่ยนแปลงอื่นๆ

  • เพิ่มเครื่องมือสร้างสาธารณะสำหรับ PurchasesResult และ SkuDetailsResult เพื่อสร้าง ทดสอบได้ง่ายขึ้น
  • ออบเจ็กต์ SkuDetails รายการสามารถใช้เมธอดใหม่ ซึ่งก็คือ getOriginalJson() ได้
  • ขณะนี้การเรียกใช้บริการ AIDL ทั้งหมดได้รับการจัดการโดยเทรดเบื้องหลัง

การแก้ไขข้อบกพร่อง

  • ระบบจะไม่ส่งผ่าน Listener ของ Callback ที่เป็น Null ไปยัง API สาธารณะอีกต่อไป

Google Play Billing Library 1.2 รุ่น (18-10-2018)

ไลบรารี Google Play Billing เวอร์ชัน 1.2 พร้อมให้บริการแล้ว เวอร์ชันนี้ มีการเปลี่ยนแปลงต่อไปนี้

สรุปการเปลี่ยนแปลง

  • ตอนนี้ Google Play Billing Library ได้รับอนุญาตภายใต้ ข้อตกลงใบอนุญาต Android Software Development Kit
  • เพิ่ม launchPriceChangeConfirmationFlow API ซึ่งแจ้งเตือนผู้ใช้ให้ไปยัง ตรวจสอบการเปลี่ยนแปลงราคาการสมัครใช้บริการที่รอดำเนินการ
  • เพิ่มการรองรับโหมดคิดสัดส่วนใหม่ DEFERRED เมื่ออัปเกรดหรือ การดาวน์เกรดการสมัครใช้บริการของผู้ใช้
  • ในชั้นเรียน BillingFlowParams แทนที่ setSku() ด้วย setSkuDetails()
  • แก้ไขข้อบกพร่องเล็กน้อยและการเพิ่มประสิทธิภาพโค้ด

การยืนยันการเปลี่ยนราคา

ตอนนี้คุณเปลี่ยนแปลงราคาการสมัครใช้บริการใน Google Play Console และข้อความแจ้งได้แล้ว ผู้ใช้ให้ตรวจสอบและยอมรับราคาใหม่เมื่อเข้าสู่แอปของคุณ

หากต้องการใช้ API นี้ ให้สร้างออบเจ็กต์ PriceChangeFlowParams โดยใช้ skuDetailsของผลิตภัณฑ์ที่ต้องสมัครใช้บริการ แล้วจึงโทร launchPriceChangeConfirmationFlow() ติดตั้งใช้งาน PriceChangeConfirmationListenerเพื่อจัดการกับผลลัพธ์เมื่อราคาเปลี่ยนแปลง การยืนยันจะเสร็จสิ้น ดังที่แสดงในข้อมูลโค้ดต่อไปนี้

Kotlin

val priceChangeFlowParams = PriceChangeFlowParams.newBuilder()
    .setSkuDetails(skuDetailsOfThePriceChangedSubscription)
    .build()

billingClient.launchPriceChangeConfirmationFlow(activity,
        priceChangeFlowParams,
        object : PriceChangeConfirmationListener() {
            override fun onPriceChangeConfirmationResult(responseCode: Int) {
                // Handle the result.
            }
        })

Java

PriceChangeFlowParams priceChangeFlowParams =
        PriceChangeFlowParams.newBuilder()
    .setSkuDetails(skuDetailsOfThePriceChangedSubscription)
    .build();

billingClient.launchPriceChangeConfirmationFlow(activity,
        priceChangeFlowParams,
        new PriceChangeConfirmationListener() {
            @Override
            public void onPriceChangeConfirmationResult(int responseCode) {
                // Handle the result.
            }
        });

ขั้นตอนการยืนยันการเปลี่ยนแปลงราคาจะแสดงกล่องโต้ตอบที่มีราคาใหม่ ด้วยการขอให้ผู้ใช้ยอมรับราคาใหม่ ขั้นตอนนี้ส่งคืน โค้ดตอบกลับของประเภท BillingClient.BillingResponse

โหมดการคิดสัดส่วนใหม่

เมื่ออัปเกรดหรือดาวน์เกรดการสมัครใช้บริการของผู้ใช้ คุณสามารถใช้สัดส่วนใหม่ โหมด DEFERRED โหมดนี้จะอัปเดตการสมัครใช้บริการของผู้ใช้ในครั้งถัดไป ต่ออายุ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีตั้งค่าโหมดตามสัดส่วนนี้ได้ที่ตั้งค่าตามสัดส่วน โหมด

วิธีการใหม่สำหรับการตั้งค่ารายละเอียด SKU

ในคลาส BillingFlowParams มีการเลิกใช้งานเมธอด setSku() แล้ว การเปลี่ยนแปลงนี้จะช่วยเพิ่มประสิทธิภาพขั้นตอนการเรียกเก็บเงินของ Google Play

เมื่อสร้างอินสแตนซ์ใหม่ของ BillingFlowParams ในการเรียกเก็บเงินสำหรับการซื้อในแอป เราขอแนะนำให้คุณทำงานกับออบเจ็กต์ JSON โดยตรงโดยใช้ setSkuDetails() ดังที่แสดงในข้อมูลโค้ดต่อไปนี้

ในคลาสเครื่องมือสร้าง BillingFlowParams เมธอด setSku() ได้รับการ เลิกใช้งานแล้ว ให้ใช้เมธอด setSkuDetails() แทน ดังที่แสดงในตัวอย่างต่อไปนี้ ออบเจ็กต์ที่ส่งผ่านไปยังออบเจ็กต์ setSkuDetails() มาจาก querySkuDetailsAsync()

Kotlin

private lateinit var mBillingClient: BillingClient
private val mSkuDetailsMap = HashMap<String, SkuDetails>()

private fun querySkuDetails() {
    val skuDetailsParamsBuilder = SkuDetailsParams.newBuilder()
    mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build()
    ) { responseCode, skuDetailsList ->
        if (responseCode == 0) {
            for (skuDetails in skuDetailsList) {
                mSkuDetailsMap[skuDetails.sku] = skuDetails
            }
        }
    }
}

private fun startPurchase(skuId: String) {
    val billingFlowParams = BillingFlowParams.newBuilder()
    .setSkuDetails(mSkuDetailsMap[skuId])
    .build()
}

Java

private BillingClient mBillingClient;
private Map<String, SkuDetails> mSkuDetailsMap = new HashMap<>();

private void querySkuDetails() {
    SkuDetailsParams.Builder skuDetailsParamsBuilder
            = SkuDetailsParams.newBuilder();
    mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build(),
            new SkuDetailsResponseListener() {
                @Override
                public void onSkuDetailsResponse(int responseCode,
                        List<SkuDetails> skuDetailsList) {
                    if (responseCode == 0) {
                        for (SkuDetails skuDetails : skuDetailsList) {
                            mSkuDetailsMap.put(skuDetails.getSku(), skuDetails);
                        }
                    }
                }
            });
}

private void startPurchase(String skuId) {
    BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
            .setSkuDetails(mSkuDetailsMap.get(skuId))
            .build();
}

Play Billing Library 1.1 รุ่น (07-05-2018)

ไลบรารี Google Play Billing เวอร์ชัน 1.1 พร้อมให้บริการแล้ว เวอร์ชันนี้ มีการเปลี่ยนแปลงต่อไปนี้

สรุปการเปลี่ยนแปลง

  • เพิ่มการรองรับเพื่อระบุโหมดตามสัดส่วนใน BillingFlowParams เมื่ออัปเกรด/ดาวน์เกรดการสมัครใช้บริการที่มีอยู่
  • แฟล็กบูลีน replaceSkusProration ใน BillingFlowParams ไม่ได้รับการสนับสนุนอีกต่อไป โปรดใช้ replaceSkusProrationMode แทน
  • launchBillingFlow() จะทำให้การเรียกกลับสำหรับการตอบกลับที่ล้มเหลว

การเปลี่ยนแปลงลักษณะการทำงาน

ไลบรารี Google Play Billing เวอร์ชัน 1.1 มีลักษณะการทำงานดังต่อไปนี้ การเปลี่ยนแปลง

นักพัฒนาแอปสามารถตั้งค่า replaceSkusProrationMode ในชั้นเรียน BillingFlowParams

ProrationMode จะให้รายละเอียดเพิ่มเติมเกี่ยวกับประเภทของการคิดสัดส่วนเมื่ออัปเกรดหรือดาวน์เกรด การสมัครใช้บริการของผู้ใช้

Kotlin

BillingFlowParams.newBuilder()
    .setSku(skuId)
    .setType(billingType)
    .setOldSku(oldSku)
    .setReplaceSkusProrationMode(replaceSkusProrationMode)
    .build()

Java

BillingFlowParams.newBuilder()
    .setSku(skuId)
    .setType(billingType)
    .setOldSku(oldSku)
    .setReplaceSkusProrationMode(replaceSkusProrationMode)
    .build();

ปัจจุบัน Google Play รองรับโหมดตามสัดส่วนต่อไปนี้

IMMEDIATE_WITH_TIME_PRORATION การเปลี่ยนทดแทนจะมีผลทันที และเวลาหมดอายุใหม่จะคิดตามสัดส่วนและ หักเงินหรือเรียกเก็บเงินจากผู้ใช้ นี่คือลักษณะการทำงานเริ่มต้นในปัจจุบัน
IMMEDIATE_AND_CHARGE_PRORATED_PRICE การเปลี่ยนทดแทนจะมีผลทันทีและรอบการเรียกเก็บเงินจะยังคงเหมือนเดิม ราคาสำหรับ ระบบจะเรียกเก็บเงินสำหรับระยะเวลาที่เหลือ

หมายเหตุ: ตัวเลือกนี้ใช้ได้เฉพาะกับการอัปเกรดการสมัครใช้บริการเท่านั้น

IMMEDIATE_WITHOUT_PRORATION การเปลี่ยนทดแทนจะมีผลทันที และระบบจะเรียกเก็บเงินราคาใหม่สำหรับการเปลี่ยนทดแทนครั้งถัดไป รอบการเรียกเก็บเงินยังคงเหมือนเดิม

ชั้นเรียน BillingFlowParams ไม่รองรับ replaceSkusProration แล้ว

นักพัฒนาแอปเคยสามารถตั้งค่าธงบูลีนเพื่อเรียกเก็บเงินตามสัดส่วนสำหรับการสมัครใช้บริการได้ คำขออัปเกรด เนื่องจากเรารองรับ ProrationMode ที่มีรายละเอียดเพิ่มเติม วิธีคิดตามสัดส่วน ระบบไม่รองรับแฟล็กบูลีนนี้อีกต่อไป

ตอนนี้ launchBillingFlow() จะทำให้ระบบเรียกการตอบกลับไม่สำเร็จ

Billing Library จะทริกเกอร์ PurhcasesUpdatedListener เสมอ ติดต่อกลับและส่งกลับ BillingResponse แบบไม่พร้อมกัน ผลลัพธ์แบบซิงโครนัสของ BillingResponse ไว้เช่นกัน

การแก้ไขข้อบกพร่อง

  • ออกจากระบบก่อนเวลาในเมธอดแบบไม่พร้อมกันเมื่อบริการถูกตัดการเชื่อมต่อ
  • Builder ออบเจ็กต์พารามิเตอร์ไม่เปลี่ยนแปลงออบเจ็กต์ที่สร้างขึ้นอีกต่อไป
  • ปัญหา 68087141: launchBillingFlow() จะทำให้ Callback สำหรับการตอบกลับที่ล้มเหลว

การเปิดตัว Google Play Billing Library 1.0 (19-09-2017, ประกาศ)

ไลบรารี Google Play Billing เวอร์ชัน 1.0 พร้อมให้บริการแล้ว เวอร์ชันนี้ มีการเปลี่ยนแปลงต่อไปนี้

การเปลี่ยนแปลงที่สำคัญ

  • สิทธิ์การเรียกเก็บเงินที่ฝังอยู่ภายในไฟล์ Manifest ของไลบรารี แต่คุณไม่จำเป็นต้องเพิ่ม com.android.vending.BILLING ภายในไฟล์ Manifest ของ Android อีกต่อไป
  • เพิ่มเครื่องมือสร้างใหม่ใน BillingClient.Builder แล้ว
  • เริ่มใช้รูปแบบของเครื่องมือสร้างสำหรับ SkuDetailsParams แล้ว ประเภทที่จะใช้ในเมธอดในการค้นหา SKU
  • อัปเดตเมธอด API หลายรายการเพื่อให้สอดคล้องกัน (ชื่ออาร์กิวเมนต์และลำดับการแสดงผลเดียวกัน)

การเปลี่ยนแปลงลักษณะการทำงาน

ไลบรารี Google Play Billing เวอร์ชัน 1.0 มีลักษณะการทำงานดังต่อไปนี้ การเปลี่ยนแปลง

คลาส BillingClient.Builder

BillingClient.Builder เริ่มต้นผ่านรูปแบบ newBuilder แล้วตอนนี้:

Kotlin

billingClient = BillingClient.newBuilder(context).setListener(this).build()

Java

billingClient = BillingClient.newBuilder(context).setListener(this).build();

ตอนนี้เรียกเมธอด LaunchBillingFlow โดยใช้คลาส BillingFlowParams

ในการเริ่มต้นขั้นตอนการเรียกเก็บเงินสำหรับการสั่งซื้อหรือการสมัครใช้บริการ launchBillingFlow() จะได้รับ BillingFlowParams อินสแตนซ์เริ่มต้นด้วยพารามิเตอร์ที่เฉพาะเจาะจงสำหรับคำขอ:

Kotlin

BillingFlowParams.newBuilder().setSku(skuId)
        .setType(billingType)
        .setOldSku(oldSku)
        .build()

// Then, use the BillingFlowParams to start the purchase flow
val responseCode = billingClient.launchBillingFlow(builder.build())

Java

BillingFlowParams.newBuilder().setSku(skuId)
                              .setType(billingType)
                              .setOldSku(oldSku)
                              .build();

// Then, use the BillingFlowParams to start the purchase flow
int responseCode = billingClient.launchBillingFlow(builder.build());

วิธีใหม่ในการค้นหาผลิตภัณฑ์ที่พร้อมจำหน่าย

อาร์กิวเมนต์สำหรับ queryPurchaseHistoryAsync() และ querySkuDetailsAsync() ถูกรวมไว้ในรูปแบบของผู้สร้าง:

Kotlin

val params = SkuDetailsParams.newBuilder()
params.setSkusList(skuList)
        .setType(itemType)
billingClient.querySkuDetailsAsync(params.build(), object : SkuDetailsResponseListener() {
    ...
})

Java

SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList)
        .setType(itemType);
billingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {...})

ตอนนี้ผลลัพธ์จะถูกส่งคืนผ่านทางรหัสผลลัพธ์และรายการของ SkuDetails แทนคลาส Wrapper ก่อนหน้าเพื่อความสะดวกของคุณ และเพื่อให้มีความสอดคล้องกันใน API ของเรา

Kotlin

fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)

Java

public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)

เปลี่ยนลำดับของพารามิเตอร์ในเมธอด onConsumeResponse() แล้ว

ลำดับของอาร์กิวเมนต์สำหรับ onConsumeResponse จากConsumeResponseListener ให้สอดคล้องกันทั่วทั้ง API ของเรา:

Kotlin

fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)

Java

public void onConsumeResponse(@BillingResponse int responseCode, String outToken)

ออบเจ็กต์ Purchaseผลการค้นหาของ ที่แยกแล้ว

PurchaseResult เพื่อให้สอดคล้องกับระบบ API ของเรา:

Kotlin

fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)

Java

void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)

การแก้ไขข้อบกพร่อง

การเปิดตัวตัวอย่าง 1 สำหรับนักพัฒนาซอฟต์แวร์ (12-06-2017 ประกาศ)

เปิดตัวการแสดงตัวอย่างสำหรับนักพัฒนาซอฟต์แวร์ ซึ่งมุ่งที่จะลดความซับซ้อนของขั้นตอนการพัฒนาในเรื่องการเรียกเก็บเงิน ช่วยให้นักพัฒนาซอฟต์แวร์มุ่งเน้นความพยายามในการใช้ตรรกะสำหรับแอป Android โดยเฉพาะ เช่น สถาปัตยกรรมแอปพลิเคชันและโครงสร้างการนำทาง

คลังนี้ประกอบด้วยชั้นเรียนและฟีเจอร์มากมายที่สะดวกให้คุณใช้เมื่อผสานรวม แอป Android ที่มี Google Play Billing API ไลบรารียังมีเลเยอร์นามธรรมที่ด้านบนของ บริการ Android Interface Definition Language (AIDL) ซึ่งทำให้นักพัฒนาซอฟต์แวร์กำหนด อินเทอร์เฟซระหว่างแอปและ Google Play Billing API