หัวข้อนี้มีบันทึกประจำรุ่นสำหรับ Google Play Billing Library
รุ่น Google Play Billing Library 7.0.0 (14-05-2024)
ส่วนขยาย Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 7.0.0 พร้อมใช้งานแล้ว พร้อมใช้งาน
สรุปการเปลี่ยนแปลง
เพิ่ม API เพื่อรองรับการสมัครใช้บริการแบบผ่อนชำระ
- เพิ่ม
ProductDetails.InstallmentPlanDetails
แล้ว สำหรับแพ็กเกจเริ่มต้นการผ่อนชำระที่ผู้ใช้มีสิทธิ์ซื้อ API นี้ ช่วยแอประบุแพ็กเกจการผ่อนชำระและการตั้งค่าสัญญาผูกมัด เพื่อให้ข้อมูลที่เกี่ยวข้องแก่ผู้ใช้ ดูข้อมูลเพิ่มเติมได้ที่ คู่มือการผ่อนชำระการสมัครใช้บริการ
- เพิ่ม
เพิ่ม
PendingPurchasesParams
แล้ว และBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)
เพื่อแทนที่BillingClient.Builder.enablePendingPurchases()
ซึ่งเลิกใช้งานแล้วในรุ่นนี้enablePendingPurchases()
ที่เลิกใช้งานแล้วมีฟังก์ชันการทำงานเทียบเท่ากับenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())
เพิ่ม API เพื่อรองรับธุรกรรมที่รอดำเนินการสำหรับแพ็กเกจการสมัครใช้บริการแบบชำระเงินล่วงหน้า
- ใช้
PendingPurchasesParams.Builder.enablePrepaidPlans()
และBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)
เพื่อเปิดใช้ธุรกรรมที่รอดำเนินการสำหรับแพ็กเกจการสมัครใช้บริการแบบชำระเงินล่วงหน้า เมื่อเพิ่ม โปรดตรวจสอบว่าแอปจัดการการสมัครใช้บริการอย่างถูกต้องด้วย วงจร ดูข้อมูลเพิ่มเติมได้ที่ คู่มือการซื้อที่รอดำเนินการ - เพิ่ม
Purchase.PendingPurchaseUpdate
แล้ว และPurchase.getPendingPurchaseUpdate()
สำหรับการเรียกข้อมูลการเติมเงินที่รอดำเนินการ หรืออัปเกรด หรือปรับลดรุ่นเป็น การสมัครใช้บริการ
- ใช้
นำ
BillingClient.Builder.enableAlternativeBilling()
ออกแล้วAlternativeBillingListener
, และAlternativeChoiceDetails
- นักพัฒนาซอฟต์แวร์ควรใช้
BillingClient.Builder.enableUserChoiceBilling()
กับUserChoiceBillingListener
และUserChoiceDetails
ใน Callback ของ Listener แทน
- นักพัฒนาซอฟต์แวร์ควรใช้
นำ
BillingFlowParams.ProrationMode
ออกแล้วBillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()
, และBillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()
- นักพัฒนาซอฟต์แวร์ควรใช้
BillingFlowParams.SubscriptionUpdateParams.ReplacementMode
กับBillingFlowParams.SubscriptionUpdateParams.Builder#setSubscriptionReplacementMode(int)
แทน BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()
BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()
- นักพัฒนาซอฟต์แวร์ควรใช้
นำ
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken()
ออกแล้ว- นักพัฒนาแอปควรใช้
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)
แทน
- นักพัฒนาแอปควรใช้
BillingClient.queryPurchaseHistoryAsync()
เลิกใช้งานแล้ว และจะนำออกในรุ่นถัดไป นักพัฒนาซอฟต์แวร์ควร ให้ใช้ทางเลือกต่อไปนี้แทน- การสั่งซื้อที่รับทราบและรอดำเนินการ: ใช้
BillingClient.queryPurchasesAsync()
เพื่อดึงข้อมูลการซื้อที่ใช้งานอยู่ - การซื้อที่ใช้ไป: นักพัฒนาแอปควรติดตามการซื้อที่ใช้ไปใน เซิร์ฟเวอร์ของตัวเอง
- การซื้อที่ยกเลิกแล้ว: ใช้ การซื้อที่เป็นโมฆะ API ของนักพัฒนาซอฟต์แวร์
- ดูรายละเอียดเพิ่มเติมได้ที่ ค้นหาประวัติการซื้อ
- การสั่งซื้อที่รับทราบและรอดำเนินการ: ใช้
BillingFlowParams.ProductDetailsParams.setOfferToken()
จะแสดงข้อผิดพลาดเมื่อนักพัฒนาซอฟต์แวร์ระบุofferToken
ที่ว่างเปล่าอัปเดต
minSdkVersion
เป็น 21 และtargetSdkVersion
เป็น 34
Google Play Billing Library 6.2.1 รุ่น (16-04-2024)
ส่วนขยาย Google Play Billing Library และ Kotlin เวอร์ชัน 6.2.1 พร้อมใช้งานแล้ว พร้อมใช้งาน
สรุปการเปลี่ยนแปลง
- แก้ไขข้อบกพร่องใน
BillingClient.showAlternativeBillingOnlyInformationDialog()
ซึ่งอาจไม่มีการเรียกใช้AlternativeBillingOnlyInformationDialogListener
ในบางกรณีเมื่อกล่องโต้ตอบเสร็จสมบูรณ์
Google Play Billing Library 6.2.0 รุ่น (06-03-2024)
ส่วนขยาย Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 6.2.0 พร้อมใช้งานแล้ว พร้อมใช้งาน
สรุปการเปลี่ยนแปลง
- เพิ่ม API เพื่อรองรับข้อเสนอภายนอก
- เพิ่ม
BillingClient.Builder.enableExternalOffer()
แล้ว เพื่อเปิดใช้ความสามารถในการให้ข้อเสนอภายนอก - เพิ่ม
BillingClient.isExternalOfferAvailableAsync()
แล้ว เพื่อตรวจสอบความพร้อมใช้งานของ ฟังก์ชันของข้อเสนอภายนอก - เพิ่ม
BillingClient.showExternalOfferInformationDialog()
แล้ว เพื่อแสดงกล่องโต้ตอบข้อมูลแก่ผู้ใช้ก่อนนำผู้ใช้ไปนอกแอป - เพิ่ม
BillingClient.createExternalOfferReportingDetailsAsync()
เพื่อสร้างเพย์โหลดที่จำเป็นสำหรับรายงานธุรกรรมที่ดำเนินการผ่านข้อเสนอภายนอก
- เพิ่ม
รุ่น Google Play Billing Library 6.1.0 (14-11-2023)
ส่วนขยาย Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 6.1.0 พร้อมใช้งานแล้ว พร้อมใช้งาน
สรุปการเปลี่ยนแปลง
- เพิ่ม API เพื่อรองรับการเรียกเก็บเงินระบบอื่นเท่านั้น (กล่าวคือ แบบไม่ให้ผู้ใช้ตัดสินใจ)
- เพิ่ม
BillingClient.Builder.enableAlternativeBillingOnly()
แล้ว เพื่อเปิดใช้ความสามารถในการเสนอการเรียกเก็บเงินระบบอื่นเท่านั้น - เพิ่ม
BillingClient.isAlternativeBillingOnlyAvailableAsync()
แล้ว เพื่อตรวจสอบความพร้อมให้บริการของการเสนอการเรียกเก็บเงินระบบอื่นเท่านั้น - เพิ่ม
BillingClient.showAlternativeBillingOnlyInformationDialog()
แล้ว แสดงกล่องโต้ตอบข้อมูลเพื่อแจ้งผู้ใช้เมื่อการเรียกเก็บเงินระบบอื่นเท่านั้น ที่นำมาใช้ - เพิ่ม
BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()
เพื่อสร้างเพย์โหลดที่จำเป็นแล้ว เพื่อรายงานธุรกรรมที่ดำเนินการผ่านการเรียกเก็บเงินระบบอื่นเท่านั้น
- เพิ่ม
- อัปเดต API การเรียกเก็บเงินแบบให้ผู้ใช้ตัดสินใจแล้ว
- เพิ่ม
UserChoiceBillingListener
แล้ว เพื่อแทนที่ AlternativeBillingListener ซึ่งมีการทำเครื่องหมายว่าเลิกใช้งานแล้ว - เพิ่ม
UserChoiceDetails
แล้ว เพื่อแทนที่AlternativeChoiceDetails
ซึ่งมีการทำเครื่องหมายว่าเลิกใช้งานแล้ว - เพิ่ม
BillingClient.Builder.enableUserChoiceBilling()
แล้ว เพื่อแทนที่BillingClient.Builder.enableAlternativeBilling()
ซึ่งมีการทำเครื่องหมายว่าเลิกใช้งานแล้ว
- เพิ่ม
- เพิ่ม
BillingClient.getBillingConfigAsync()
เพื่อเรียกดูประเทศใน Google Play แล้ว
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 พร้อมใช้งานแล้ว พร้อมใช้งาน
สรุปการเปลี่ยนแปลง
- เพิ่มคลาสเพื่อรองรับขั้นตอนการเรียกเก็บเงินระบบอื่นบนอุปกรณ์เคลื่อนที่/แท็บเล็ตสำหรับ ผู้ใช้ในเกาหลีใต้:
- เพิ่มเมื่อ
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()
ในการระบุรหัสธุรกรรมภายนอกของการสมัครรับข้อมูลต้นทาง - เพิ่ม
BillingClient.Builder.enableAlternativeBilling()
แล้ว เพื่ออนุญาตให้ผู้ใช้ในเกาหลีใต้เลือกตัวเลือกการเรียกเก็บเงินระบบอื่น
Google Play Billing Library 5.1 รุ่น (31-10-2022)
ส่วนขยาย Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 5.1.0 พร้อมใช้งานแล้ว พร้อมใช้งาน
เวอร์ชันนี้มีการเปลี่ยนแปลงต่อไปนี้
สรุปการเปลี่ยนแปลง
- เพิ่มเมธอด
ProductDetails.SubscriptionOfferDetails.getOfferId()
เพื่อเรียกข้อมูลรหัสข้อเสนอแล้ว - เพิ่มเมธอด
ProductDetails.SubscriptionOfferDetails.getBasePlanId()
เพื่อเรียกข้อมูลรหัสแพ็กเกจเริ่มต้นแล้ว - อัปเดต
targetSdkVersion
เป็น 31
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
สรุปการเปลี่ยนแปลง
- Java Google Play Billing Library
- ใน
AcknowledgePurchaseParams
เลิกใช้งานแล้วsetDeveloperPayload()
และgetDeveloperPayload()
- ใน
ConsumeParams
เลิกใช้งานแล้วsetDeveloperPayload()
และgetDeveloperPayload()
- ใน
BillingFlowParams
เปลี่ยนชื่อแล้วsetAccountId()
ถึงsetObfuscatedAccountId()
, พร้อมจำกัดความยาวของเอกสาร 64 อักขระและขีดจำกัด ไม่อนุญาตให้ใช้ข้อมูลส่วนบุคคลที่ระบุตัวบุคคลนั้นได้ (PII) ในช่องนี้setAccountId()
มีสถานะเป็นเลิกใช้งาน และจะถูกนำออกใน เวอร์ชันไลบรารีในอนาคต - เพิ่มใน
BillingFlowParams
แล้วsetObfuscatedProfileId()
ซึ่งทำงานคล้ายกับsetObfuscatedAccountId()
สำหรับข้อมูลเพิ่มเติม โปรดดู การอัปเดตเพย์โหลดของนักพัฒนาซอฟต์แวร์และทางเลือกอื่นๆ - ใน
Purchase
ให้เพิ่มgetAccountIdentifiers()
เพื่อแสดงผลตัวระบุบัญชีที่ปรับให้ยากต่อการอ่าน (Obfuscate) ที่ตั้งค่าในBillingFlowParams
- ใน
BillingClient
พารามิเตอร์loadRewardedSku()
ทำเครื่องหมายว่าเลิกใช้งาน ซึ่งเป็นส่วนหนึ่งของการเลิกใช้งาน SKU ที่มีการให้รางวัล ดูข้อมูลเพิ่มเติมเกี่ยวกับการเลิกใช้งานได้ใน ศูนย์ช่วยเหลือของ Play Console
- ใน
รุ่น 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
โดยทำดังนี้
- เมื่อเริ่มแอป ให้โทร
BillingClient.queryPurchases()
เพื่อเรียกดูรายการผลิตภัณฑ์ที่ยังไม่ได้ใช้ซึ่งเชื่อมโยงกับผู้ใช้ - เรียก
Purchase.getPurchaseState()
สำหรับออบเจ็กต์Purchase
แต่ละรายการที่แสดงผล - ใช้
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
ภาษาและไม่ควรแสดงให้ผู้ใช้ปลายทางเห็น
การแก้ไขข้อบกพร่อง
SkuDetails.getIntroductoryPriceAmountMicros()
จะแสดงlong
แทนString
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)
การแก้ไขข้อบกพร่อง
- ไม่มีโค้ดตอบกลับในแพ็กเกจ PURCHASES_UPDATED
- แก้ไขปัญหา ProxyBillingActivity และ PurchasesUpdatedListener ในระหว่างการหมุนเวียนอุปกรณ์
การเปิดตัวตัวอย่าง 1 สำหรับนักพัฒนาซอฟต์แวร์ (12-06-2017 ประกาศ)
เปิดตัวการแสดงตัวอย่างสำหรับนักพัฒนาซอฟต์แวร์ ซึ่งมุ่งที่จะลดความซับซ้อนของขั้นตอนการพัฒนาในเรื่องการเรียกเก็บเงิน ช่วยให้นักพัฒนาซอฟต์แวร์มุ่งเน้นความพยายามในการใช้ตรรกะสำหรับแอป Android โดยเฉพาะ เช่น สถาปัตยกรรมแอปพลิเคชันและโครงสร้างการนำทาง
คลังนี้ประกอบด้วยชั้นเรียนและฟีเจอร์มากมายที่สะดวกให้คุณใช้เมื่อผสานรวม แอป Android ที่มี Google Play Billing API ไลบรารียังมีเลเยอร์นามธรรมที่ด้านบนของ บริการ Android Interface Definition Language (AIDL) ซึ่งทำให้นักพัฒนาซอฟต์แวร์กำหนด อินเทอร์เฟซระหว่างแอปและ Google Play Billing API