เอกสารนี้มีบันทึกประจำรุ่นสำหรับ Google Play Billing Library
ทักษะ Android
ดูใน GitHubอัปเกรด Play Billing Library
android skills add play-billing-library-version-upgradeHelp me upgrade my Play Billing Library implementation.Google Play Billing Library 9.1.0 Release (18-06-2026)
Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 9.1.0 เผยแพร่แล้ว
สรุปการเปลี่ยนแปลง
- API ใหม่สำหรับตัวเลือกการเรียกเก็บเงินมีดังนี้
- เพิ่ม
BillingClient.getBillingChoiceInfoAsync()เพื่อดึงข้อมูลเกี่ยวกับตัวเลือกการเรียกเก็บเงินที่ผู้ใช้ใช้ได้ - เพิ่มคลาส
BillingChoiceInfoซึ่งมีรายละเอียดการตอบกลับ รวมถึง URL รูปภาพและข้อมูลความภักดี - เพิ่ม
GetBillingChoiceInfoParamsเพื่อกำหนดค่าคำขอ - เพิ่ม
BillingChoiceInfoResponseListenerเพื่อรับการติดต่อกลับแล้ว - เพิ่มฟังก์ชันระงับ
BillingClient.getBillingChoiceInfo()ของส่วนขยาย Kotlin - เพิ่ม
BillingClient.showBillingProgramInformationDialog()เพื่อแสดงกล่องโต้ตอบข้อมูลสำหรับโปรแกรมการเรียกเก็บเงิน - เพิ่ม
BillingProgramInformationDialogParamsเพื่อกำหนดค่ากล่องโต้ตอบ - เพิ่ม
BillingProgramInformationDialogListenerเพื่อรับการติดต่อกลับแล้ว - เพิ่ม
BillingProgramAvailabilityDetails.BillingChoiceAvailabilityDetailsเพื่อให้รายละเอียดเกี่ยวกับความพร้อมใช้งานของตัวเลือกการเรียกเก็บเงิน - เพิ่ม
ChoiceScreenTypeเพื่อระบุประเภทของหน้าจอตัวเลือก
- เพิ่ม
Google Play Billing Library 9.0.0 Release (19-05-2026)
Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 9.0.0 เผยแพร่แล้ว ดูคำแนะนำในการย้ายข้อมูล PBL 9 หากต้องการย้ายข้อมูลจาก PBL เวอร์ชันก่อนหน้า
สรุปการเปลี่ยนแปลง
อัปเดตรหัสข้อผิดพลาดสำหรับกิจกรรมใน Play Store ที่ถูกบล็อก: เราได้อัปเดตรหัสข้อผิดพลาดสำหรับแอปใน Play Store ที่ถูกบล็อกแล้ว ในกรณีที่ระบบบล็อกแอป Play Store (เช่น ในโหมดสำหรับเด็กที่ OEM ปรับแต่ง) โค้ดตอบกลับจะเปลี่ยนจาก
ERRORเป็นBILLING_UNAVAILABLEนอกจากนี้BillingResultสำหรับกรณีดังกล่าวจะแสดงข้อความแก้ไขข้อบกพร่องว่าระบบบล็อก Play Storeการอัปเดตความสามารถในการเป็นค่า Null สำหรับการเรียกเก็บเงินที่นักพัฒนาแอปจัดหาให้: เมธอด
DeveloperProvidedBillingDetails.getLinkUri()ได้รับการอัปเดตเป็น@Nullableการเปลี่ยนแปลงนี้รองรับสถานการณ์ที่ URI ของลิงก์โดยตรงสำหรับการชำระเงินภายนอกไม่พร้อมใช้งานในขั้นตอนการเลือกการชำระเงินหากต้องการจัดการการเปลี่ยนแปลงนี้อย่างปลอดภัย โปรดตรวจสอบว่าโค้ดการผสานรวมของคุณจัดการทั้งค่า
nullและสตริงว่าง ("") จากเมธอดDeveloperProvidedBillingDetails.getLinkUri()ก่อนแยกวิเคราะห์หรือเปิด Intent ของเบราว์เซอร์อัปเดต
targetSdkVersionเป็น 35 แล้วตอนนี้คุณสามารถใช้การรับส่งข้อความในแอปเพื่อแจ้งให้ผู้ใช้ทราบเกี่ยวกับการขึ้นราคาแบบขอให้ผู้ใช้ยินยอมที่กำลังจะเกิดขึ้นได้แล้ว ซึ่งจะช่วยให้ผู้ใช้ยืนยันการขึ้นราคาได้โดยไม่ต้องออกจากแอป ข้อความเกี่ยวกับการขึ้นราคาแบบขอให้ผู้ใช้ยินยอมที่รอดำเนินการจะแสดงตั้งแต่วันแรกที่ผู้ใช้ยอมรับการขึ้นราคาได้ และข้อความจะแสดงสูงสุดทุกๆ 7 วัน
Google Play Billing Library 8.3.0 Release (23-12-2025)
Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 8.3.0 เผยแพร่แล้ว
สรุปการเปลี่ยนแปลง
API ใหม่สำหรับการชำระเงินภายนอก
- เพิ่มคลาสเพื่อรองรับขั้นตอนการชำระเงินภายนอก ดังนี้
- เพิ่ม
enableBillingProgram(EnableBillingProgramParams)เพื่อเปิดใช้การชำระเงินภายนอก - เพิ่ม
BillingFlowParams.Builder.enableDeveloperBillingOptionเพื่อเปิดขั้นตอนการชำระเงินภายนอก
ปรับปรุงการจัดหมวดหมู่ข้อผิดพลาดสำหรับการออกกลางคันในขั้นตอนการชำระเงินภายนอก
- หากผู้ใช้ออกจากขั้นตอนการซื้อเพื่อชำระเงินในแอปภายนอก (เช่น อีวอลเล็ต) และละทิ้งธุรกรรมโดยไม่กลับมา โค้ดตอบกลับที่ส่งกลับไปยังไคลเอ็นต์จะเป็น
BillingResponseCode.USER_CANCELED(1) พร้อมข้อความแก้ไขข้อบกพร่องBILLING_ACTIVITY_PAUSED(ก่อนหน้านี้มีค่าเริ่มต้นเป็นBillingResponseCode.ERROR(6))
- หากผู้ใช้ออกจากขั้นตอนการซื้อเพื่อชำระเงินในแอปภายนอก (เช่น อีวอลเล็ต) และละทิ้งธุรกรรมโดยไม่กลับมา โค้ดตอบกลับที่ส่งกลับไปยังไคลเอ็นต์จะเป็น
Google Play Billing Library 8.2.1 Release (15-12-2025)
Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 8.2.1 พร้อมให้บริการแล้ว
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องใน
isBillingProgramAvailableAsyncและcreateBillingProgramReportingDetailsAsyncอัปเดตเป็นเวอร์ชัน 8.2.1 เพื่อใช้ API เหล่านี้ที่เปิดตัวในเวอร์ชัน 8.2.0
Google Play Billing Library 8.2.0 Release (09-12-2025)
Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 8.2.0 เผยแพร่แล้ว
สรุปการเปลี่ยนแปลง
API ใหม่สำหรับลิงก์เนื้อหาภายนอกและข้อเสนอภายนอกมีดังนี้
- เพิ่ม
enableBillingProgramเพื่อตั้งค่าBillingClientสำหรับโปรแกรมเหล่านี้ - เพิ่ม
isBillingProgramAvailableAsyncเพื่อพิจารณาสิทธิ์ของผู้ใช้ - เพิ่ม
createBillingProgramReportingDetailsAsyncเพื่อสร้างโทเค็นธุรกรรมภายนอกที่ต้องใช้สำหรับการรายงาน - เพิ่ม
launchExternalLinkเพื่อเริ่มต้นลิงก์ภายนอกไปยังข้อเสนอเนื้อหาดิจิทัลหรือการดาวน์โหลดแอป
- เพิ่ม
การเปลี่ยนแปลงในโปรแกรมข้อเสนอภายนอกมีดังนี้
- มีการเปลี่ยนแปลงนโยบายสำหรับโปรแกรมข้อเสนอภายนอก ดูรายละเอียดได้ที่การเปลี่ยนแปลงโปรแกรม หากต้องการทำความเข้าใจวิธีเปิดตัวขั้นตอนของข้อเสนอภายนอกด้วย API ใหม่ โปรดดูคู่มือการผสานรวม
- เลิกใช้งาน
BillingClient.Builder.enableExternalOfferAPI แล้ว - เลิกใช้งาน
isExternalOfferAvailableAsyncAPI แล้ว - เลิกใช้งาน
createExternalOfferReportingDetailsAsyncAPI แล้ว - เลิกใช้งาน
showExternalOfferInformationDialogAPI แล้ว
Google Play Billing Library 8.1.0 Release (06-11-2025)
Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 8.1.0 เผยแพร่แล้ว
สรุปการเปลี่ยนแปลง
การสมัครใช้บริการที่ถูกระงับ
มีการเพิ่มพารามิเตอร์ใหม่ลงในเมธอด
BillingClient.queryPurchasesAsync()เพื่อรวมการสมัครใช้บริการที่ถูกระงับเมื่อค้นหาการสมัครใช้บริการ การสมัครใช้บริการที่ถูกระงับจะยังคงเชื่อมโยงกับผู้ใช้ แต่จะไม่มีการใช้งาน เนื่องจากผู้ใช้หยุดการสมัครใช้บริการไว้ชั่วคราวหรือวิธีการชำระเงินสำหรับการต่ออายุถูกปฏิเสธออบเจ็กต์
Purchaseที่แสดงผลใน Listener จะแสดงผลisSuspended() = trueสำหรับการสมัครใช้บริการที่ถูกระงับ ในกรณีนี้ คุณไม่ควรให้สิทธิ์เข้าถึงการสมัครใช้บริการที่ซื้อ แต่ควรแนะนำให้ผู้ใช้ไปที่ศูนย์การสมัครใช้บริการ ซึ่งผู้ใช้จะจัดการวิธีการชำระเงินหรือสถานะหยุดชั่วคราวเพื่อเปิดใช้งานการสมัครใช้บริการอีกครั้งได้การอัปเดตการสมัครใช้บริการมีดังนี้
ตอนนี้ออบเจ็กต์
BillingFlowParams.ProductDetailsParamsมีเมธอดsetSubscriptionProductReplacementParams()ซึ่งคุณสามารถระบุข้อมูลการแทนที่ระดับสินค้าได้ออบเจ็กต์
SubscriptionProductReplacementParamsมีเมธอด Setter 2 รายการ ได้แก่setOldProductId: ผลิตภัณฑ์เก่าที่ต้องแทนที่ด้วยผลิตภัณฑ์ในProductDetailsปัจจุบันsetReplacementMode: นี่คือโหมดการแทนที่ระดับสินค้า โหมดเหล่านี้เหมือนกับ SubscriptionUpdateParams แต่มีการอัปเดตการแมปค่า เราได้เปิดตัวโหมดการแทนที่ใหม่KEEP_EXISTINGซึ่งช่วยให้คุณคงกำหนดการชำระเงินที่มีอยู่สำหรับรายการหนึ่งๆ ไว้ได้โดยไม่มีการเปลี่ยนแปลง
SubscriptionUpdateParams setSubscriptionReplacementMode จะเลิกใช้งาน คุณควรใช้
SubscriptionProductReplacementParams.setReplacementModeแทน
อัปเดต
minSdkVersionเป็น 23 แล้วเปิดใช้ API การสั่งล่วงหน้าสำหรับผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
API
ProductDetails.oneTimePurchaseOfferDetails.getPreorderDetails()ที่รับรายละเอียดการสั่งจองล่วงหน้าพร้อมให้ใช้งานแล้วตอนนี้ Google Play Billing Library รองรับ Kotlin เวอร์ชัน 2.2.0 แล้ว
Google Play Billing Library 8.0.0 Release (30-06-2025)
Google Play Billing Library เวอร์ชัน 8.0.0 และส่วนขยาย Kotlin พร้อมใช้งานแล้ว
สรุปการเปลี่ยนแปลง
ตอนนี้เราจะเรียกไอเทมที่ซื้อในแอปว่าผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
ตัวเลือกการซื้อและข้อเสนอหลายรายการสำหรับผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
ตอนนี้คุณสามารถมีตัวเลือกการซื้อและข้อเสนอหลายรายการสำหรับผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวได้แล้ว ซึ่งช่วยให้คุณมีความยืดหยุ่นในการขายผลิตภัณฑ์และลดความซับซ้อนในการจัดการผลิตภัณฑ์
ปรับปรุงเมธอด
queryProductDetailsAsync()ก่อน PBL 8.0.0 เมธอด
queryProductDetailsAsync()ไม่แสดงผลิตภัณฑ์ที่ดึงข้อมูลไม่ได้ ซึ่งอาจเกิดจากสาเหตุต่างๆ เช่น ไม่พบผลิตภัณฑ์หรือไม่มีข้อเสนอที่พร้อมให้บริการแก่ผู้ใช้ เมื่อใช้ PBL 8.0.0 ระบบจะแสดงสินค้าที่ไม่ได้ดึงข้อมูลพร้อมรหัสสถานะระดับสินค้าใหม่ซึ่งให้ข้อมูลเกี่ยวกับสินค้าที่ไม่ได้ดึงข้อมูล โปรดทราบว่ามีการเปลี่ยนแปลงในซิกเนเจอร์ของProductDetailsResponseListener.onProductDetailsResponse()ซึ่งกำหนดให้ต้องทำการเปลี่ยนแปลงในแอป ดูข้อมูลเพิ่มเติมได้ที่ประมวลผลผลลัพธ์การเชื่อมต่อบริการอีกครั้งโดยอัตโนมัติ
พารามิเตอร์
BillingClient.Builder.enableAutoServiceReconnection()builder ใหม่ช่วยให้นักพัฒนาแอปเลือกใช้การเชื่อมต่อบริการอีกครั้งโดยอัตโนมัติได้ ซึ่งช่วยลดความซับซ้อนในการจัดการการเชื่อมต่อด้วยการจัดการการเชื่อมต่อกับบริการ Google Play Billing อีกครั้งโดยอัตโนมัติ และไม่จำเป็นต้องเรียกใช้startConnection()ด้วยตนเองในกรณีที่บริการตัดการเชื่อมต่อ ดูข้อมูลเพิ่มเติมได้ที่สร้างการเชื่อมต่อใหม่โดยอัตโนมัติโค้ดตอบกลับย่อยสำหรับเมธอด
launchBillingFlow()ตอนนี้ BillingResult ที่แสดงผลจาก
launchBillingFlow()จะมีช่องโค้ดตอบกลับย่อย ระบบจะป้อนข้อมูลในช่องนี้เฉพาะในบางกรณีเพื่อระบุสาเหตุที่เจาะจงมากขึ้นสำหรับความล้มเหลว ช่องการตอบกลับย่อยอาจมีค่าดังต่อไปนี้PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS- แสดงผลเมื่อเงินของผู้ใช้มีน้อยกว่าราคาของสินค้าที่พยายามจะซื้อUSER_INELIGIBLE- แสดงขึ้นเมื่อผู้ใช้ไม่เป็นไปตามข้อกำหนดของการได้รับสิทธิ์ที่กำหนดค่าไว้สำหรับข้อเสนอการสมัครใช้บริการNO_APPLICABLE_SUB_RESPONSE_CODE- ค่าเริ่มต้นที่แสดงเมื่อไม่มีโค้ดตอบกลับย่อยอื่นๆ ที่เกี่ยวข้อง
นำวิธีการ
queryPurchaseHistory()ออกแล้วตอนนี้เราได้นำเมธอด
queryPurchaseHistory()ที่ก่อนหน้านี้ทำเครื่องหมายว่าเลิกใช้งานแล้วออกแล้ว ดูรายละเอียดเกี่ยวกับ API ทางเลือกที่จะใช้แทนได้ที่ค้นหาประวัติการซื้อนำวิธีการ
querySkuDetailsAsync()ออกแล้วตอนนี้ระบบได้นำเมธอด
querySkuDetailsAsync()ที่ก่อนหน้านี้ทำเครื่องหมายว่าเลิกใช้งานแล้วออกแล้ว คุณควรใช้ queryProductDetailsAsync แทนนำวิธีการ
BillingClient.Builder.enablePendingPurchases()ออกแล้วตอนนี้เราได้นำเมธอด
enablePendingPurchases()ที่ไม่มีพารามิเตอร์ซึ่งก่อนหน้านี้ทำเครื่องหมายว่าเลิกใช้งานแล้วออกแล้ว คุณควรใช้enablePendingPurchases(PendingPurchaseParams params)แทน โปรดทราบว่าenablePendingPurchases()ที่เลิกใช้งานแล้วมีฟังก์ชันการทำงานเทียบเท่ากับenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())นำเมธอด
queryPurchasesAsync()ที่โอเวอร์โหลดซึ่งใช้ skuType ออกตอนนี้เราได้นำเมธอด
queryPurchasesAsync(String skuType, PurchasesResponseListener listener)ที่ก่อนหน้านี้ทำเครื่องหมายว่าเลิกใช้งานแล้วออกแล้ว หรือใช้queryPurchasesAsync(QueryPurchasesParams queryPurchasesParams, PurchasesResponseListener listener)
Google Play Billing Library 7.1.1 Release (03-10-2024)
Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 7.1.1 พร้อมให้บริการแล้ว
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องใน Play Billing Library 7.1.0 ที่เกี่ยวข้องกับการทดสอบ
BillingResultโค้ดตอบกลับ
Google Play Billing Library 7.1.0 Release (19-09-2024)
Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 7.1.0 พร้อมให้บริการแล้ว
สรุปการเปลี่ยนแปลง
- ปรับปรุงความปลอดภัยของชุดข้อความที่เกี่ยวข้องกับสถานะและการจัดการการเชื่อมต่อ
- เปิดตัวการเปลี่ยนแปลงบางส่วนสำหรับการทดสอบโค้ดตอบกลับ
BillingResultซึ่งเปิดตัวอย่างเต็มรูปแบบใน Play Billing Library 7.1.1 หากต้องการทดสอบการผสานรวมโดยใช้ฟีเจอร์นี้ คุณจะต้องอัปเกรดเป็น Play Billing Library 7.1.1 มีข้อบกพร่องที่จะส่งผลต่อแอปพลิเคชันที่เปิดใช้การทดสอบการลบล้างการเรียกเก็บเงินเท่านั้น และจะไม่ส่งผลต่อการใช้งานปกติ ดูข้อมูลเพิ่มเติมได้ที่ทดสอบโค้ดตอบกลับของBillingResult
Google Play Billing Library 7.0.0 Release (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.Builder#setOldSkuPurchaseToken()ออกแล้ว- นักพัฒนาแอปควรใช้
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)แทน
- นักพัฒนาแอปควรใช้
BillingClient.queryPurchaseHistoryAsync()เลิกใช้งานแล้วและจะถูกนำออกในรุ่นต่อๆ ไป นักพัฒนาแอปควรใช้ทางเลือกต่อไปนี้แทน- การซื้อที่รับทราบแล้วและรอดำเนินการ: ใช้
BillingClient.queryPurchasesAsync()เพื่อดึงข้อมูลการซื้อที่ใช้งานอยู่ - การซื้อที่ใช้ไปแล้ว: นักพัฒนาแอปควรติดตามการซื้อที่ใช้ไปแล้วบนเซิร์ฟเวอร์ของตนเอง
- การซื้อที่ยกเลิก: ใช้ API สำหรับนักพัฒนาแอป voided-purchases
- ดูรายละเอียดเพิ่มเติมได้ที่ค้นหาประวัติการซื้อ
- การซื้อที่รับทราบแล้วและรอดำเนินการ: ใช้
ตอนนี้
BillingFlowParams.ProductDetailsParams.setOfferToken()จะแสดงข้อยกเว้นเมื่อนักพัฒนาแอประบุofferTokenที่ว่างเปล่าอัปเดต
minSdkVersionเป็น 21 และtargetSdkVersionเป็น 34 แล้ว
Google Play Billing Library 6.2.1 Release (16-04-2024)
Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 6.2.1 พร้อมให้บริการแล้ว
สรุปการเปลี่ยนแปลง
- แก้ไขข้อบกพร่องใน
BillingClient.showAlternativeBillingOnlyInformationDialog()ที่อาจไม่มีการเรียกใช้AlternativeBillingOnlyInformationDialogListenerในบางกรณีเมื่อกล่องโต้ตอบเสร็จสมบูรณ์
Google Play Billing Library 6.2.0 Release (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 Release (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 Release (22-06-2023)
Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 6.0.1 พร้อมใช้งานแล้ว
สรุปการเปลี่ยนแปลง
อัปเดต Play Billing Library ให้เข้ากันได้กับ Android 14
Google Play Billing Library 6.0 Release (10-05-2023)
Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 6.0.0 พร้อมให้บริการแล้ว
สรุปการเปลี่ยนแปลง
เพิ่ม enum
ReplacementModeใหม่เพื่อแทนที่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 Release (06-04-2023)
Google Play Billing Library เวอร์ชัน 5.2.0 และส่วนขยาย Kotlin พร้อมใช้งานแล้ว
สรุปการเปลี่ยนแปลง
- เพิ่มคลาสเพื่อรองรับโฟลว์การเรียกเก็บเงินระบบอื่นบนมือถือ/แท็บเล็ตสำหรับผู้ใช้ในเกาหลีใต้ ดังนี้
- เพิ่มเมธอด
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()เพื่อระบุรหัสธุรกรรมภายนอกของการสมัครใช้บริการต้นทาง - เพิ่มเมธอด
BillingClient.Builder.enableAlternativeBilling()เพื่ออนุญาตให้ผู้ใช้ในเกาหลีใต้เลือกตัวเลือกการเรียกเก็บเงินระบบอื่น
Google Play Billing Library 5.1 Release (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 Release (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 release (2022-02-23)
Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 4.1.0 พร้อมให้บริการแล้ว
เวอร์ชันนี้มีการเปลี่ยนแปลงต่อไปนี้
สรุปการเปลี่ยนแปลง
- เพิ่ม
BillingClient.showInAppMessages()เพื่อช่วยจัดการกับการปฏิเสธการชำระเงินค่าสมัครใช้บริการแล้ว ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้การรับส่งข้อความในแอปเพื่อจัดการการปฏิเสธการชำระเงินค่าสมัครใช้บริการได้ที่การจัดการการปฏิเสธการชำระเงิน
Google Play Billing Library 4.0 Release (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 Release (12-03-2021)
Google Play Billing Library, ส่วนขยาย Kotlin และปลั๊กอิน Unity เวอร์ชัน 3.0.3 เผยแพร่แล้ว
การแก้ไขข้อบกพร่องของ Java และ Kotlin
- แก้ไขหน่วยความจำรั่วไหลเมื่อมีการเรียกใช้
endConnection() - แก้ไขปัญหาเมื่อแอปที่ใช้โหมดเปิดใช้งานงานเดียวใช้ Google Play Billing Library ระบบจะทริกเกอร์ Callback
onPurchasesUpdated()เมื่อแอปกลับมาทำงานอีกครั้งจาก Launcher ของ Android และกล่องโต้ตอบการเรียกเก็บเงินปรากฏขึ้นก่อนที่จะถูกระงับ
แก้ไขข้อบกพร่องของ Unity
- อัปเดตเป็น Java เวอร์ชัน 3.0.3 เพื่อแก้ไขปัญหาหน่วยความจำรั่วไหลและแก้ปัญหาที่ทำให้ซื้อไม่ได้เมื่อแอปกลับมาทำงานอีกครั้งจาก Launcher ของ Android และกล่องโต้ตอบการเรียกเก็บเงินปรากฏขึ้นก่อนที่จะถูกระงับ
Google Play Billing Library 3.0.2 Release (24-11-2020)
Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 3.0.2 พร้อมใช้งานแล้ว
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องในส่วนขยาย Kotlin ที่โครูทีนดำเนินการไม่สำเร็จพร้อมข้อผิดพลาด "กลับมาทำงานแล้ว"
- แก้ไขการอ้างอิงที่ยังไม่ได้รับการแก้ไขเมื่อใช้ส่วนขยาย Kotlin กับไลบรารี kotlinx.coroutines เวอร์ชัน 1.4 ขึ้นไป
Google Play Billing Library 3.0.1 Release (30-09-2020)
Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 3.0.1 พร้อมให้บริการแล้ว
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่หากแอปถูกปิดและกู้คืนระหว่างโฟลว์การเรียกเก็บเงิน ระบบอาจไม่เรียกใช้
PurchasesUpdatedListenerพร้อมผลลัพธ์การซื้อ
Google Play Billing Library 3.0 Release (2020-06-08)
Google Play Billing Library, ส่วนขยาย Kotlin และปลั๊กอิน Unity เวอร์ชัน 3.0.0 เผยแพร่แล้ว
สรุปการเปลี่ยนแปลง
- นำการรองรับ SKU ที่มีรางวัลออกแล้ว
- นำพารามิเตอร์
ChildDirectedและUnderAgeOfConsentออกแล้ว - นำเมธอดเพย์โหลดของนักพัฒนาแอปที่เลิกใช้งานแล้วออก
- นำเมธอด
BillingFlowParams.setAccountId()และBillingFlowParams.setDeveloperId()ที่เลิกใช้งานแล้วออก - นำเมธอด
BillingFlowParams.setOldSkus(String oldSku)และBillingFlowParams.addOldSku(String oldSku)ที่เลิกใช้งานแล้วออก - เพิ่มคำอธิบายประกอบเกี่ยวกับความสามารถในการเป็นค่า Null
แก้ไขข้อบกพร่อง
SkuDetails.getIntroductoryPriceCycles()จะแสดงผลintแทนString- แก้ไขข้อบกพร่องที่ระบบถือว่าโฟลว์การเรียกเก็บเงินมีพารามิเตอร์เพิ่มเติมแม้ว่าจะไม่ได้ตั้งค่าพารามิเตอร์เพิ่มเติมไว้ก็ตาม
Google Play Billing Library 2.2.1 Release (20-05-2020)
Google Play Billing Library เวอร์ชัน 2.2.1 เผยแพร่แล้ว
แก้ไขข้อบกพร่อง
- อัปเดตเวอร์ชันเริ่มต้นของไลบรารี Java Play Billing ที่ส่วนขยาย Kotlin ต้องใช้
การเปิดตัว Google Play Billing Library 2.2.0 และการรองรับ Unity (23-03-2020)
Google Play Billing เวอร์ชัน 2.2.0 มีฟังก์ชันการทำงานที่ช่วยให้นักพัฒนาแอปมั่นใจได้ว่าการซื้อจะมาจากผู้ใช้ที่ถูกต้อง การเปลี่ยนแปลงเหล่านี้จะช่วยให้คุณไม่ต้องสร้างโซลูชันที่กำหนดเองโดยอิงตามเพย์โหลดของนักพัฒนาแอปอีกต่อไป ในการอัปเดตนี้ เราได้เลิกใช้งานฟังก์ชันเพย์โหลดของนักพัฒนาแอปแล้ว และจะนำออกในรุ่นต่อๆ ไป ดูข้อมูลเพิ่มเติม รวมถึงทางเลือกที่แนะนำได้ที่เพย์โหลดของนักพัฒนาแอป
Google Play Billing Billing Library 2 สำหรับ Unity
นอกจาก Google Play Billing Library 2 เวอร์ชัน Java และ Kotlin ในปัจจุบันแล้ว เรายังได้เปิดตัวไลบรารีเวอร์ชันสำหรับใช้กับ 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()เพื่อแสดงตัวระบุบัญชีที่สร้างความสับสนซึ่งตั้งค่าไว้ในBillingFlowParams - ใน
BillingClientเมธอดloadRewardedSku()ได้รับการทำเครื่องหมายว่าเลิกใช้งานแล้วเนื่องจากเป็นส่วนหนึ่งของการเลิกใช้งาน SKU ที่ได้รับรางวัล
- ใน
Google Play Billing Library 2.1.0 Release and Kotlin Extension 2.1.0 Release (2019-12-10)
Google Play Billing Library เวอร์ชัน 2.1.0 และส่วนขยาย Kotlin ใหม่เผยแพร่แล้ว ส่วนขยาย Kotlin ของ Play Billing Library มีทางเลือก API ที่เป็นสำนวนสำหรับการใช้งาน Kotlin ซึ่งมี Null-Safety และ Coroutine ที่ดีกว่า ดูตัวอย่างโค้ดได้ที่ใช้ Google Play Billing Library
เวอร์ชันนี้มีการเปลี่ยนแปลงต่อไปนี้
สรุปการเปลี่ยนแปลง
- ใน
BillingFlowParamsเราได้เลิกใช้งานsetOldSku(String oldSku)และแทนที่ด้วยsetOldSku(String oldSku, String purchaseToken)เพื่อแก้ความกำกวมเมื่อมีหลายบัญชีในอุปกรณ์เป็นเจ้าของ SKU เดียวกัน
Google Play Billing Library 2.0.3 Release (2019-08-05)
Google Play Billing Library เวอร์ชัน 2.0.3 เผยแพร่แล้ว
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้
querySkuDetailsAsync()ทำงานไม่สำเร็จเป็นครั้งคราวโดยมีรหัสDEVELOPER_ERRORแทนที่จะแสดงผลลัพธ์ที่สำเร็จ
Google Play Billing Library 2.0.2 Release (2019-07-08)
Google Play Billing Library เวอร์ชัน 2.0.2 เผยแพร่แล้ว รุ่นนี้มีการอัปเดตเอกสารอ้างอิงและไม่ได้เปลี่ยนแปลงฟังก์ชันการทำงานของไลบรารี
Google Play Billing Library 2.0.1 Release (2019-06-06)
ไลบรารี Google Play Billing เวอร์ชัน 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 Library เวอร์ชัน 2.0 เพิ่มการรองรับเพย์โหลดของนักพัฒนาแอป ซึ่งเป็นสตริงที่กำหนดเองซึ่งแนบไปกับการซื้อได้ คุณสามารถแนบพารามิเตอร์เพย์โหลดของนักพัฒนาแอปกับการซื้อได้ แต่จะทำได้ก็ต่อเมื่อการซื้อได้รับการรับทราบหรือใช้ไปแล้วเท่านั้น ซึ่งแตกต่างจากเพย์โหลดของนักพัฒนาแอปใน AIDL ที่สามารถระบุเพย์โหลดได้เมื่อเปิดขั้นตอนการซื้อ เนื่องจากตอนนี้การซื้อสามารถเริ่มต้นจากภายนอกแอปของคุณได้แล้ว การเปลี่ยนแปลงนี้จึงช่วยให้คุณมีโอกาสเพิ่มเพย์โหลดในการซื้อได้เสมอ
หากต้องการเข้าถึงเพย์โหลดในไลบรารีใหม่ ตอนนี้ออบเจ็กต์ Purchase จะมีเมธอด getDeveloperPayload()
ข้อเสนอที่สอดคล้องกัน
เมื่อคุณเสนอ SKU ที่มีส่วนลด ตอนนี้ Google Play จะแสดงราคาเดิมของ SKU เพื่อให้คุณแสดงให้ผู้ใช้เห็นว่าได้รับส่วนลด
SkuDetails มีเมธอดใหม่ 2 รายการสำหรับการดึงข้อมูลราคา SKU เดิม ดังนี้
getOriginalPriceAmountMicros()- แสดงราคาเดิมที่ยังไม่ได้จัดรูปแบบของ SKU ก่อนหักส่วนลด
getOriginalPrice()- จะแสดงราคาเดิมพร้อมการจัดรูปแบบสกุลเงินเพิ่มเติม
ธุรกรรมที่รอดำเนินการ
เมื่อใช้ไลบรารี Google Play Billing เวอร์ชัน 2.0 คุณต้องรองรับการซื้อที่ต้องมีการดำเนินการเพิ่มเติมก่อนให้สิทธิ์ เช่น ผู้ใช้อาจเลือกซื้อไอเทมที่ซื้อในแอปที่หน้าร้านจริงโดยใช้เงินสด ซึ่งหมายความว่าธุรกรรมเสร็จสมบูรณ์นอกแอปของคุณ ในสถานการณ์นี้ คุณควรให้สิทธิ์หลังจากที่ผู้ใช้ทำธุรกรรมเสร็จสมบูรณ์แล้วเท่านั้น
หากต้องการเปิดใช้การซื้อที่รอดำเนินการ ให้เรียกใช้ enablePendingPurchases() เป็นส่วนหนึ่งของการเริ่มต้นแอป
ใช้
Purchase.getPurchaseState()
เพื่อตรวจสอบว่าสถานะการซื้อเป็น PURCHASED หรือ PENDING โปรดทราบว่าคุณควรให้สิทธิ์ก็ต่อเมื่อสถานะเป็น PURCHASED เท่านั้น คุณควรตรวจสอบข้อมูลอัปเดตเกี่ยวกับสถานะของ Purchase โดยทำดังนี้
- เมื่อเริ่มแอป ให้เรียกใช้
BillingClient.queryPurchases()เพื่อดึงรายการไอเทมที่ยังไม่ได้ใช้ซึ่งเชื่อมโยงกับผู้ใช้ - เรียก
Purchase.getPurchaseState()ในออบเจ็กต์Purchaseที่แสดงผลแต่ละรายการ - ใช้เมธอด
onPurchasesUpdated()เพื่อตอบสนองต่อการเปลี่ยนแปลงออบเจ็กต์Purchase
นอกจากนี้ Google Play Developer API ยังมีสถานะ PENDING สำหรับ Purchases.products ด้วย
ระบบไม่รองรับธุรกรรมที่รอดำเนินการสำหรับการสมัครใช้บริการ
นอกจากนี้ เวอร์ชันนี้ยังเปิดตัวการแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาแอปประเภทใหม่ด้วย ซึ่งก็คือ OneTimeProductNotification การแจ้งเตือนประเภทนี้มีข้อความเดียวซึ่งมีค่าเป็น ONE_TIME_PRODUCT_PURCHASED หรือ ONE_TIME_PRODUCT_CANCELED ระบบจะส่งการแจ้งเตือนประเภทนี้สำหรับการซื้อที่เชื่อมโยงกับรูปแบบการชำระเงินที่ล่าช้า เช่น เงินสด เท่านั้น
เมื่อรับทราบการซื้อที่รอดำเนินการ โปรดตรวจสอบว่าคุณรับทราบเฉพาะเมื่อสถานะการซื้อเป็น PURCHASED ไม่ใช่ PENDING
การเปลี่ยนแปลง API
Google Play Billing Library เวอร์ชัน 2.0 มีการเปลี่ยนแปลง API หลายอย่างเพื่อรองรับฟีเจอร์ใหม่และอธิบายฟังก์ชันการทำงานที่มีอยู่ให้ชัดเจนยิ่งขึ้น
consumeAsync
ตอนนี้ consumeAsync() จะใช้ออบเจ็กต์ ConsumeParams แทน purchaseToken ConsumeParams มี purchaseToken และเพย์โหลดของนักพัฒนาแอป (ไม่บังคับ)
ระบบได้นำ consumeAsync() เวอร์ชันก่อนหน้าออกแล้วในรุ่นนี้
queryPurchaseHistoryAsync
เพื่อลดความสับสน ตอนนี้ queryPurchaseHistoryAsync() จะแสดงผลออบเจ็กต์ PurchaseHistoryRecord แทนออบเจ็กต์ Purchase ออบเจ็กต์ PurchaseHistoryRecord เหมือนกับออบเจ็กต์ Purchase ยกเว้นว่าจะแสดงเฉพาะค่าที่ queryPurchaseHistoryAsync() แสดงผล และไม่มีฟิลด์ autoRenewing, orderId และ packageName โปรดทราบว่าไม่มีการเปลี่ยนแปลงใดๆ กับข้อมูลที่แสดงผล โดย queryPurchaseHistoryAsync() จะแสดงผลข้อมูลเดียวกันกับก่อนหน้านี้
ค่าที่แสดงผลของ BillingResult
API ที่ก่อนหน้านี้แสดงผลค่าจำนวนเต็ม BillingResponse ตอนนี้จะแสดงผลออบเจ็กต์ BillingResult BillingResult มีจำนวนเต็ม BillingResponse รวมถึงสตริงการแก้ไขข้อบกพร่องที่คุณใช้เพื่อวิเคราะห์ข้อผิดพลาดได้ สตริงการแก้ไขข้อบกพร่องใช้ภาษา en-US และไม่ได้มีไว้เพื่อแสดงต่อผู้ใช้ปลายทาง
แก้ไขข้อบกพร่อง
SkuDetails.getIntroductoryPriceAmountMicros()จะแสดงผลlongแทนString
Google Play Billing Library 1.2.2 Release (2019-03-07)
Google Play Billing Library เวอร์ชัน 1.2.2 เผยแพร่แล้ว เวอร์ชันนี้มีการเปลี่ยนแปลงต่อไปนี้
แก้ไขข้อบกพร่อง
- แก้ไขปัญหาการแยกชุดข้อความที่เกิดขึ้นในเวอร์ชัน 1.2.1 การเรียกใช้ในเบื้องหลังจะไม่บล็อกเทรดหลักอีกต่อไป
การเปลี่ยนแปลงอื่นๆ
- แม้ว่าเราจะยังคงแนะนำให้ใช้เทรดหลัก แต่ตอนนี้คุณสามารถสร้างอินสแตนซ์ Google Play Billing Library จากเทรดเบื้องหลังได้แล้ว
- การสร้างอินสแตนซ์ได้ย้ายข้อมูลไปยังเทรดเบื้องหลังอย่างสมบูรณ์แล้วเพื่อลดโอกาสที่จะทำให้เกิด ANR
Play Billing Library 1.2.1 Release (2019-03-04)
Google Play Billing Library เวอร์ชัน 1.2.1 เผยแพร่แล้ว เวอร์ชันนี้มีการเปลี่ยนแปลงต่อไปนี้
การเปลี่ยนแปลงที่สำคัญ
- เพิ่มการรองรับผลิตภัณฑ์ที่มีการให้รางวัล ดูข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกการสร้างรายได้ได้ที่เพิ่มฟีเจอร์เฉพาะสำหรับผลิตภัณฑ์ที่มีการให้รางวัล
การเปลี่ยนแปลงอื่นๆ
- เพิ่มตัวสร้างสาธารณะสำหรับ
PurchasesResultและSkuDetailsResultเพื่อให้ทดสอบได้ง่ายขึ้น - ออบเจ็กต์
SkuDetailsสามารถใช้วิธีการใหม่getOriginalJson()ได้ - ตอนนี้การเรียกใช้บริการ AIDL ทั้งหมดจะได้รับการจัดการโดยเทรดที่ทำงานอยู่เบื้องหลัง
แก้ไขข้อบกพร่อง
- ระบบจะไม่ส่ง Listener Callback ที่เป็น Null ไปยัง API สาธารณะอีกต่อไป
Google Play Billing Library 1.2 Release (2018-10-18)
Google Play Billing Library เวอร์ชัน 1.2 เผยแพร่แล้ว เวอร์ชันนี้มีการเปลี่ยนแปลงต่อไปนี้
สรุปการเปลี่ยนแปลง
- ตอนนี้ Google Play Billing Library ได้รับอนุญาตให้ใช้สิทธิภายใต้ข้อตกลงการอนุญาตให้ใช้สิทธิของชุดพัฒนาซอฟต์แวร์ Android
- เพิ่ม
launchPriceChangeConfirmationFlowAPI ซึ่งจะแจ้งให้ผู้ใช้ตรวจสอบการเปลี่ยนแปลงที่รอดำเนินการของราคาการสมัครใช้บริการ - เพิ่มการรองรับโหมดการคิดตามสัดส่วนใหม่
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 Builder เราได้เลิกใช้งานเมธอด 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 Release (2018-05-07)
ไลบรารี Google Play Billing เวอร์ชัน 1.1 เผยแพร่แล้ว เวอร์ชันนี้มีการเปลี่ยนแปลงต่อไปนี้
สรุปการเปลี่ยนแปลง
- เพิ่มการรองรับการระบุโหมดการคิดตามสัดส่วนใน
BillingFlowParamsเมื่ออัปเกรด/ดาวน์เกรดการสมัครใช้บริการที่มีอยู่ - ระบบไม่รองรับแฟล็กบูลีน
replaceSkusProrationในBillingFlowParamsอีกต่อไป โปรดใช้replaceSkusProrationModeแทน - ตอนนี้
launchBillingFlow()จะทริกเกอร์ Callback สำหรับการตอบกลับที่ล้มเหลว
การเปลี่ยนแปลงพฤติกรรม
Google Play Billing Library เวอร์ชัน 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 |
การแทนที่จะมีผลทันที และระบบจะเรียกเก็บเงินในราคาใหม่ในรอบการเรียกเก็บเงินครั้งถัดไป รอบการเรียกเก็บเงินจะยังคงเหมือนเดิม |
ระบบไม่รองรับ replaceSkusProration ในชั้นเรียน BillingFlowParams อีกต่อไป
ก่อนหน้านี้นักพัฒนาแอปสามารถตั้งค่าแฟล็กบูลีนเพื่อเรียกเก็บเงินตามสัดส่วนสำหรับคำขออัปเกรดการสมัครใช้บริการได้ เนื่องจากเรารองรับ ProrationMode ซึ่งมีวิธีการคิดตามสัดส่วนที่ละเอียดกว่า ระบบจึงไม่รองรับแฟล็กบูลีนนี้อีกต่อไป
ตอนนี้ launchBillingFlow() จะทริกเกอร์ Callback สำหรับการตอบกลับที่ไม่สำเร็จ
Billing Library จะทริกเกอร์ Callback PurhcasesUpdatedListener และแสดงผล BillingResponse แบบไม่พร้อมกันเสมอ ระบบจะเก็บค่าผลลัพธ์แบบซิงโครนัสของ BillingResponse ไว้ด้วย
แก้ไขข้อบกพร่อง
- ออกจากเมธอดแบบไม่พร้อมกันก่อนกำหนดอย่างเหมาะสมเมื่อยกเลิกการเชื่อมต่อบริการ
Builderออบเจ็กต์ param จะไม่เปลี่ยนแปลงออบเจ็กต์ที่สร้างขึ้นอีกต่อไป- ปัญหา 68087141:
ตอนนี้
launchBillingFlow()จะเรียกให้แสดง Callback สำหรับการตอบกลับที่ล้มเหลว
Google Play Billing Library 1.0 Release (19-09-2017, Announcement)
Google Play Billing Library เวอร์ชัน 1.0 เผยแพร่แล้ว เวอร์ชันนี้มีการเปลี่ยนแปลงต่อไปนี้
การเปลี่ยนแปลงที่สำคัญ
- สิทธิ์การเรียกเก็บเงินแบบฝังภายในไฟล์ Manifest ของไลบรารี คุณไม่จำเป็นต้องเพิ่มสิทธิ์
com.android.vending.BILLINGภายในไฟล์ Manifest ของ Android อีกต่อไป - เพิ่มเครื่องมือสร้างใหม่ลงในคลาส
BillingClient.Builderแล้ว - เปิดตัวรูปแบบ Builder สำหรับคลาส
SkuDetailsParamsเพื่อใช้กับเมธอดในการค้นหา SKU - เราได้อัปเดตเมธอด API หลายรายการเพื่อความสอดคล้องกัน (ชื่อและลำดับอาร์กิวเมนต์ที่แสดงผลเหมือนกัน)
การเปลี่ยนแปลงพฤติกรรม
Google Play Billing Library เวอร์ชัน 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() ถูกรวมไว้ในรูปแบบ Builder ดังนี้
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)
ออบเจ็กต์ PurchaseResult ที่แยกออกมา
PurchaseResult
ได้รับการแยกออกเพื่อให้สอดคล้องกันใน API ของเรา
Kotlin
fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)
Java
void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)
แก้ไขข้อบกพร่อง
- ไม่มีโค้ดตอบกลับใน Bundle PURCHASES_UPDATED
- แก้ไขปัญหาเกี่ยวกับ ProxyBillingActivity และ PurchasesUpdatedListener ระหว่างการหมุนอุปกรณ์
Developer Preview 1 Release (12-06-2017, Announcement)
เวอร์ชันตัวอย่างสำหรับนักพัฒนาซอฟต์แวร์เปิดตัวแล้ว โดยมีจุดมุ่งหมายเพื่อลดความซับซ้อนของกระบวนการพัฒนาเมื่อพูดถึงการเรียกเก็บเงิน ซึ่งช่วยให้นักพัฒนาแอปมุ่งเน้นไปที่การใช้ตรรกะเฉพาะสำหรับแอป Android เช่น สถาปัตยกรรมแอปพลิเคชันและโครงสร้างการนำทาง
ไลบรารีนี้มีคลาสและฟีเจอร์ที่สะดวกหลายอย่างให้คุณใช้เมื่อผสานรวมแอป Android กับ Google Play Billing API นอกจากนี้ ไลบรารียังมีเลเยอร์นามธรรมที่อยู่ด้านบนของบริการภาษาที่ใช้สื่อสารข้อมูลระหว่างคอมโพเนนต์ของ Android (AIDL) ซึ่งช่วยให้นักพัฒนาแอปกำหนดอินเทอร์เฟซระหว่างแอปกับ Google Play Billing API ได้ง่ายขึ้น