เอกสารนี้มีบันทึกประจำรุ่นสำหรับไลบรารี Google Play Billing
การเปิดตัว Google Play Billing Library 9.1.0 (18-06-2026)
ตอนนี้ Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 9.1.0 พร้อมให้บริการแล้ว
สรุปการเปลี่ยนแปลง
- API ใหม่สำหรับทางเลือกในการเรียกเก็บเงิน
- เพิ่ม
BillingClient.getBillingChoiceInfoAsync()เพื่อดึงข้อมูลเกี่ยวกับตัวเลือกการเรียกเก็บเงินที่ผู้ใช้มี - เพิ่มคลาส
BillingChoiceInfoซึ่งมีรายละเอียดการตอบกลับ รวมถึง URL ของรูปภาพและข้อมูลความภักดี - เพิ่ม
GetBillingChoiceInfoParamsเพื่อกำหนดค่าคำขอ - เพิ่ม
BillingChoiceInfoResponseListenerเพื่อรับการติดต่อกลับ - เพิ่มฟังก์ชันระงับส่วนขยาย Kotlin
BillingClient.getBillingChoiceInfo() - เพิ่ม
BillingClient.showBillingProgramInformationDialog()เพื่อแสดงกล่องโต้ตอบข้อมูลสำหรับโปรแกรมการเรียกเก็บเงิน - เพิ่ม
BillingProgramInformationDialogParamsเพื่อกำหนดค่ากล่องโต้ตอบ - เพิ่ม
BillingProgramInformationDialogListenerเพื่อรับการติดต่อกลับ - เพิ่ม
BillingProgramAvailabilityDetails.BillingChoiceAvailabilityDetailsเพื่อให้รายละเอียดเกี่ยวกับความพร้อมใช้งานของตัวเลือกการเรียกเก็บเงิน - เพิ่ม
ChoiceScreenTypeเพื่อระบุประเภทหน้าจอทางเลือก
- เพิ่ม
การเปิดตัว Google Play Billing Library 9.0.0 (19-05-2026)
Google Play Billing Library เวอร์ชัน 9.0.0 และส่วนขยาย Kotlin พร้อมให้บริการแล้ว โปรดดูคำแนะนำในการย้ายข้อมูล PBL 9 หากต้องการย้ายข้อมูลจาก PBL เวอร์ชันก่อนหน้า
สรุปการเปลี่ยนแปลง
อัปเดตรหัสข้อผิดพลาดสำหรับกิจกรรมใน Play Store ที่ถูกบล็อก: มีการอัปเดตรหัสข้อผิดพลาดสำหรับแอป Play Store ที่ถูกบล็อก ในกรณีที่ระบบบล็อกแอป Play Store (เช่น ในโหมดสำหรับเด็กที่ OEM ปรับแต่ง) โค้ดตอบกลับจะเปลี่ยนจาก
ERRORเป็นBILLING_UNAVAILABLEนอกจากนี้BillingResultสำหรับกรณีดังกล่าวจะแสดงข้อความแก้ไขข้อบกพร่องว่า Play Store ถูกบล็อกการอัปเดตความสามารถในการเว้นว่างสำหรับการเรียกเก็บเงินที่นักพัฒนาแอปเป็นผู้ให้บริการ: วิธีการ
DeveloperProvidedBillingDetails.getLinkUri()ได้รับการอัปเดตให้เป็น@Nullableการเปลี่ยนแปลงนี้รองรับสถานการณ์ที่ URI ของลิงก์โดยตรงสำหรับการชำระเงินภายนอกไม่พร้อมใช้งานในระหว่างขั้นตอนการเลือกการชำระเงินโปรดตรวจสอบว่าโค้ดการผสานรวมของคุณจัดการทั้งค่า
nullและค่าสตริงว่าง ("") จากเมธอดDeveloperProvidedBillingDetails.getLinkUri()ก่อนที่จะแยกวิเคราะห์ หรือเปิดใช้ Intent ของเบราว์เซอร์ เพื่อจัดการการเปลี่ยนแปลงนี้อย่างปลอดภัยอัปเดต
targetSdkVersionเป็น 35ตอนนี้คุณสามารถใช้การรับส่งข้อความในแอปเพื่อแจ้งให้ผู้ใช้ทราบเกี่ยวกับการขึ้นราคาแบบขอให้ผู้ใช้ยินยอมที่กำลังจะมีขึ้น ซึ่งจะช่วยให้ผู้ใช้ยืนยันการขึ้นราคาได้โดยไม่ต้องออกจากแอป ข้อความสำหรับการขึ้นราคาแบบขอให้ผู้ใช้ยินยอมที่ยังไม่ได้ดำเนินการจะแสดงตั้งแต่วันแรกที่ผู้ใช้ยอมรับการขึ้นราคาได้ และข้อความจะแสดงสูงสุด 1 ครั้งทุกๆ 7 วัน
การเปิดตัว Google Play Billing Library 8.3.0 (23-12-2025)
ตอนนี้ Google Play Billing Library เวอร์ชัน 8.3.0 และส่วนขยาย Kotlin พร้อมใช้งานแล้ว
สรุปการเปลี่ยนแปลง
API ใหม่สำหรับการชำระเงินภายนอก
- เพิ่มคลาสเพื่อรองรับขั้นตอนการชำระเงินภายนอก ดังนี้
- เพิ่ม
enableBillingProgram(EnableBillingProgramParams)เพื่อเปิดใช้ การชำระเงินภายนอก - เพิ่ม
BillingFlowParams.Builder.enableDeveloperBillingOptionเพื่อ เปิดตัวขั้นตอนการชำระเงินภายนอก
การเปิดตัว Google Play Billing Library 8.2.1 (15-12-2025)
ตอนนี้ Google Play Billing Library เวอร์ชัน 8.2.1 และส่วนขยาย Kotlin พร้อมใช้งานแล้ว
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องใน
isBillingProgramAvailableAsyncและcreateBillingProgramReportingDetailsAsyncอัปเดตเป็นเวอร์ชัน 8.2.1 เพื่อใช้ API เหล่านี้ที่เปิดตัวในเวอร์ชัน 8.2.0
การเปิดตัว Google Play Billing Library 8.2.0 (09-12-2025)
ตอนนี้ Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 8.2.0 พร้อมใช้งานแล้ว
สรุปการเปลี่ยนแปลง
API ใหม่สำหรับลิงก์เนื้อหาภายนอกและข้อเสนอภายนอก
- เพิ่ม
enableBillingProgramเพื่อตั้งค่าBillingClientสำหรับ โปรแกรมเหล่านี้ - เพิ่ม
isBillingProgramAvailableAsyncเพื่อพิจารณาการมีสิทธิ์ของผู้ใช้ - เพิ่ม
createBillingProgramReportingDetailsAsyncเพื่อสร้าง โทเค็นธุรกรรมภายนอกที่ต้องใช้สำหรับการรายงาน - เพิ่ม
launchExternalLinkเพื่อเริ่มลิงก์ภายนอกไปยัง ข้อเสนอเนื้อหาดิจิทัลหรือการดาวน์โหลดแอป
- เพิ่ม
การเปลี่ยนแปลงโปรแกรมข้อเสนอภายนอกมีดังนี้
- มีการเปลี่ยนแปลงนโยบายสำหรับโปรแกรมข้อเสนอภายนอก ดูรายละเอียดได้ที่การเปลี่ยนแปลงโปรแกรม หากต้องการทำความเข้าใจวิธีเปิดตัว ขั้นตอนของข้อเสนอภายนอกด้วย API ใหม่ โปรดดูคำแนะนำในการผสานรวม
- เลิกใช้งาน API
BillingClient.Builder.enableExternalOffer - เลิกใช้งาน API
isExternalOfferAvailableAsync - เลิกใช้งาน API
createExternalOfferReportingDetailsAsync - เลิกใช้งาน API
showExternalOfferInformationDialog
การเปิดตัว Google Play Billing Library 8.1.0 (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 การสั่งล่วงหน้าสำหรับไอเทมแบบเรียกเก็บเงินครั้งเดียว
ตอนนี้คุณสามารถใช้
ProductDetails.oneTimePurchaseOfferDetails.getPreorderDetails()API ที่รับรายละเอียดการสั่งล่วงหน้าได้แล้วตอนนี้ Google Play Billing Library รองรับ Kotlin เวอร์ชัน 2.2.0 แล้ว
การเปิดตัว Google Play Billing Library 8.0.0 (30-06-2025)
ตอนนี้ Google Play Billing Library และส่วนขยาย Kotlin เวอร์ชัน 8.0.0 พร้อมใช้งานแล้ว
สรุปการเปลี่ยนแปลง
ตอนนี้เราจะเรียกไอเทมที่ซื้อในแอปว่าไอเทมแบบเรียกเก็บเงินครั้งเดียว
ตัวเลือกการซื้อและข้อเสนอหลายรายการสำหรับผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
ตอนนี้คุณสามารถมีตัวเลือกการซื้อและข้อเสนอได้หลายรายการสำหรับผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว ซึ่งจะช่วยให้คุณมีความยืดหยุ่นในการขายผลิตภัณฑ์และ ลดความซับซ้อนในการจัดการผลิตภัณฑ์
ปรับปรุงวิธีการ
queryProductDetailsAsync()ก่อน PBL 8.0.0 เมธอด
queryProductDetailsAsync()จะไม่ แสดงผลิตภัณฑ์ที่ดึงข้อมูลไม่ได้ ซึ่งอาจเกิดจากสาเหตุต่างๆ เช่น ไม่พบผลิตภัณฑ์หรือไม่มีข้อเสนอสำหรับผู้ใช้ PBL 8.0.0 จะแสดงผลิตภัณฑ์ที่ไม่ได้ดึงข้อมูลพร้อมรหัสสถานะระดับผลิตภัณฑ์ใหม่ ซึ่งให้ข้อมูลเกี่ยวกับผลิตภัณฑ์ที่ไม่ได้ดึงข้อมูล โปรดทราบว่ามีการเปลี่ยนแปลงลายเซ็นของProductDetailsResponseListener.onProductDetailsResponse()ซึ่ง ต้องมีการเปลี่ยนแปลงในแอปของคุณ ดูข้อมูลเพิ่มเติมได้ที่ประมวลผล ผลลัพธ์เชื่อมต่อบริการอีกครั้งโดยอัตโนมัติ
พารามิเตอร์
BillingClient.Builder.enableAutoServiceReconnection()builder ใหม่ช่วยให้นักพัฒนาแอปเลือกใช้การเชื่อมต่อบริการอีกครั้งโดยอัตโนมัติได้ ซึ่งช่วยลดความซับซ้อนในการจัดการการเชื่อมต่อด้วยการจัดการการเชื่อมต่ออีกครั้งกับบริการ 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 (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 (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 (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ในการเรียกกลับของ Listener แทน
- นักพัฒนาแอปควรใช้
นำ
BillingFlowParams.ProrationModeBillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode()และBillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode()ออกแล้วนำออกแล้ว
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken()- นักพัฒนาแอปควรใช้
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)แทน
- นักพัฒนาแอปควรใช้
BillingClient.queryPurchaseHistoryAsync()เลิกใช้งานแล้วและจะถูกนำออกในรุ่นต่อๆ ไป นักพัฒนาแอป ควรใช้ตัวเลือกต่อไปนี้แทน- การซื้อที่รับทราบแล้วและรอดำเนินการ: ใช้
BillingClient.queryPurchasesAsync()เพื่อดึงข้อมูลการซื้อที่ใช้งานอยู่ - การซื้อที่ใช้แล้ว: นักพัฒนาแอปควรติดตามการซื้อที่ใช้แล้วในเซิร์ฟเวอร์ของตนเอง
- การซื้อที่ยกเลิก: ใช้ voided-purchases Developer API
- ดูรายละเอียดเพิ่มเติมได้ที่ค้นหาประวัติการซื้อ
- การซื้อที่รับทราบแล้วและรอดำเนินการ: ใช้
BillingFlowParams.ProductDetailsParams.setOfferToken()จะแสดงข้อยกเว้นเมื่อนักพัฒนาแอประบุofferTokenที่ว่างเปล่าอัปเดต
minSdkVersionเป็น 21 และtargetSdkVersionเป็น 34
การเปิดตัว Google Play Billing Library 6.2.1 (16-04-2024)
ตอนนี้ Google Play Billing Library เวอร์ชัน 6.2.1 และส่วนขยาย Kotlin พร้อมให้บริการแล้ว
สรุปการเปลี่ยนแปลง
- แก้ไขข้อบกพร่องใน
BillingClient.showAlternativeBillingOnlyInformationDialog()ซึ่งในบางกรณีAlternativeBillingOnlyInformationDialogListenerอาจไม่ได้รับการเรียกใช้เมื่อกล่องโต้ตอบเสร็จสมบูรณ์
การเปิดตัว Google Play Billing Library 6.2.0 (06-03-2024)
ตอนนี้ Google Play Billing Library เวอร์ชัน 6.2.0 และส่วนขยาย Kotlin พร้อมให้บริการแล้ว
สรุปการเปลี่ยนแปลง
- เพิ่ม API เพื่อรองรับข้อเสนอภายนอก
- เพิ่ม
BillingClient.Builder.enableExternalOffer()เพื่อเปิดใช้ความสามารถในการแสดงข้อเสนอภายนอก - เพิ่ม
BillingClient.isExternalOfferAvailableAsync()เพื่อตรวจสอบความพร้อมใช้งานของฟังก์ชันการทำงานในการแสดงข้อเสนอภายนอก - เพิ่ม
BillingClient.showExternalOfferInformationDialog()เพื่อแสดงกล่องโต้ตอบข้อมูลแก่ผู้ใช้ก่อนที่จะนำผู้ใช้ออกนอก แอป - เพิ่ม
BillingClient.createExternalOfferReportingDetailsAsync()เพื่อสร้างเพย์โหลดที่จำเป็นในการรายงานธุรกรรมที่ดำเนินการผ่าน ข้อเสนอภายนอก
- เพิ่ม
การเปิดตัว Google Play Billing Library 6.1.0 (14-11-2023)
ตอนนี้ Google Play Billing Library เวอร์ชัน 6.1.0 และส่วนขยาย Kotlin พร้อมใช้งานแล้ว
สรุปการเปลี่ยนแปลง
- เพิ่ม 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 เวอร์ชัน 6.0.1 และส่วนขยาย Kotlin พร้อมให้บริการแล้ว
สรุปการเปลี่ยนแปลง
อัปเดต Play Billing Library ให้เข้ากันได้กับ Android 14
เปิดตัว Google Play Billing Library 6.0 (10-05-2023)
ตอนนี้ Google Play Billing Library เวอร์ชัน 6.0.0 และส่วนขยาย Kotlin พร้อมให้บริการแล้ว
สรุปการเปลี่ยนแปลง
เพิ่ม 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 เวอร์ชัน 5.2.1 และส่วนขยาย Kotlin พร้อมให้บริการแล้ว
สรุปการเปลี่ยนแปลง
อัปเดต 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()วิธีการสำหรับข้อกำหนดในการเปิดเผยข้อมูลการกำหนดราคาที่ปรับตามโปรไฟล์ของผู้ใช้ใน EU ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้วิธีนี้ได้ที่ ระบุราคาที่ปรับตามโปรไฟล์ของผู้ใช้ - นำ
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#getReplaceSkusProrationModeBillingFlowParams#getOldSkuPurchaseTokenBillingFlowParams#getOldSkuBillingFlowParams.Builder#setReplaceSkusProrationModeBillingFlowParams.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)
ตอนนี้ Google Play Billing Library, ส่วนขยาย Kotlin และปลั๊กอิน Unity เวอร์ชัน 3.0.3 พร้อมให้บริการแล้ว
การแก้ไขข้อบกพร่องของ Java และ Kotlin
- แก้ไขหน่วยความจำรั่วไหลเมื่อมีการเรียกใช้
endConnection() - แก้ไขปัญหาเมื่อแอปที่ใช้โหมดเปิดใช้งานแบบงานเดียวใช้ Google Play Billing Library ระบบจะทริกเกอร์
onPurchasesUpdated()การเรียกกลับเมื่อแอปกลับมาทำงานต่อจาก Android Launcher และกล่องโต้ตอบการเรียกเก็บเงินปรากฏขึ้นก่อนที่จะถูกระงับ
การแก้ไขข้อบกพร่องของ Unity
- อัปเดตเป็น Java เวอร์ชัน 3.0.3 เพื่อแก้ไขปัญหาหน่วยความจำรั่วและแก้ไขปัญหาที่ทำให้ซื้อไม่ได้เมื่อแอปกลับมาทำงานต่อจาก Android Launcher และกล่องโต้ตอบการเรียกเก็บเงินแสดงอยู่ก่อนที่จะถูกระงับ
การเปิดตัว Google Play Billing Library 3.0.2 (24-11-2020)
ตอนนี้ Google Play Billing Library เวอร์ชัน 3.0.2 และส่วนขยาย Kotlin พร้อมให้บริการแล้ว
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องในส่วนขยาย Kotlin ที่ทำให้โครูทีนล้มเหลวพร้อมข้อผิดพลาด "Already resumed"
- แก้ไขการอ้างอิงที่ยังไม่ได้รับการแก้ไขเมื่อใช้ส่วนขยาย 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)
ตอนนี้ Google Play Billing Library, ส่วนขยาย Kotlin และปลั๊กอิน Unity เวอร์ชัน 3.0.0 พร้อมให้บริการแล้ว
สรุปการเปลี่ยนแปลง
- นำการรองรับ 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 เวอร์ชัน 2.2.1 พร้อมให้บริการแล้ว
แก้ไขข้อบกพร่อง
- อัปเดตไลบรารีการเรียกเก็บเงินของ Java Play เวอร์ชันเริ่มต้นที่ส่วนขยาย 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 เวอร์ชัน Java และ Kotlin ปัจจุบัน Library 2 แล้ว เรายังได้เปิดตัวไลบรารีเวอร์ชันที่ใช้กับ Unity ได้ด้วย นักพัฒนาเกมที่ใช้ API การซื้อในแอปของ Unity สามารถอัปเกรดตอนนี้เพื่อใช้ประโยชน์จากฟีเจอร์ทั้งหมดของ Google Play Billing Library 2 และเพื่อให้อัปเกรดเป็น Google Play Billing Library เวอร์ชันในอนาคตได้ง่ายขึ้น
ดูข้อมูลเพิ่มเติมได้ที่ใช้ Google Play Billing กับ Unity
สรุปการเปลี่ยนแปลง
- Google Play Billing Library สำหรับ Java
- ใน
AcknowledgePurchaseParamsเลิกใช้แล้วsetDeveloperPayload()และgetDeveloperPayload()เมธอด - ใน
ConsumeParamsเลิกใช้แล้วsetDeveloperPayload()และgetDeveloperPayload()เมธอด - ใน
BillingFlowParams, เปลี่ยนชื่อsetAccountId()เป็นsetObfuscatedAccountId()และบันทึกข้อจำกัดด้านความยาว 64 อักขระและข้อจำกัด ที่ไม่อนุญาตให้ใช้ข้อมูลส่วนบุคคลที่ระบุตัวบุคคลนั้นได้ (PII) ในช่องนี้setAccountId()ได้รับการทำเครื่องหมายว่าเลิกใช้งานแล้วและจะถูกนำออกในไลบรารี เวอร์ชันต่อๆ ไป - ใน
BillingFlowParamsเราได้เพิ่มsetObfuscatedProfileId()ซึ่งทำงานคล้ายกับsetObfuscatedAccountId()ดูข้อมูลเพิ่มเติมได้ที่การอัปเดตเพย์โหลดของนักพัฒนาแอปและ ทางเลือกอื่นๆ - ใน
Purchaseได้เพิ่มเมธอดgetAccountIdentifiers()เพื่อแสดงตัวระบุบัญชีที่ปิดบังไว้ซึ่งตั้งค่าไว้ในBillingFlowParams - ใน
BillingClientระบบได้ทำเครื่องหมายว่าเลิกใช้งานเมธอดloadRewardedSku()แล้ว ซึ่งเป็นส่วนหนึ่งของการเลิกใช้งาน SKU ที่มีรางวัล ดูข้อมูลเพิ่มเติมเกี่ยวกับการเลิกใช้งานได้ในศูนย์ช่วยเหลือของ Play Console
- ใน
การเปิดตัว Google Play Billing Library 2.1.0 และการเปิดตัวส่วนขยาย Kotlin 2.1.0 (10-12-2019)
ตอนนี้ Google Play Billing Library เวอร์ชัน 2.1.0 และส่วนขยาย Kotlin ใหม่พร้อมใช้งานแล้ว ส่วนขยาย Kotlin ของ Play Billing Library มีทางเลือกอื่นแทน API ที่เป็นสำนวน สำหรับการใช้ Kotlin ซึ่งมี Null Safety และ โครูทีนที่ดีขึ้น ดูตัวอย่างโค้ดได้ที่ใช้ไลบรารี Google Play Billing
เวอร์ชันนี้มีการเปลี่ยนแปลงต่อไปนี้
สรุปการเปลี่ยนแปลง
- ใน
BillingFlowParamsเราได้เลิกใช้งานsetOldSku(String oldSku)และแทนที่ด้วยsetOldSku(String oldSku, String purchaseToken)เพื่อแยกความแตกต่างเมื่อมีหลายบัญชีในอุปกรณ์ที่เป็นเจ้าของ SKU เดียวกัน
การเปิดตัว Google Play Billing Library 2.0.3 (05-08-2019)
ตอนนี้ไลบรารีการเรียกเก็บเงินของ Google Play เวอร์ชัน 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 เวอร์ชัน 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()ซึ่งอยู่ใน Client API - นอกจากนี้ยังมีเมธอด
acknowledge()ใหม่ใน Server API ด้วย
นำ BillingFlowParams.setSku() ออกแล้ว
เราได้นำเมธอด BillingFlowParams#setSku() ที่เลิกใช้ไปก่อนหน้านี้ออกแล้ว
ในการเปิดตัวครั้งนี้ ก่อนที่จะแสดงผลิตภัณฑ์ในขั้นตอนการซื้อ ตอนนี้คุณต้องเรียกใช้
BillingClient.querySkuDetailsAsync()
โดยส่งออบเจ็กต์
SkuDetailsที่ได้ไปยัง
BillingFlowParams.Builder.setSkuDetails()
ดูตัวอย่างโค้ดได้ที่ใช้ไลบรารี Google Play Billing
รองรับเพย์โหลดของนักพัฒนาแอป
Google Play Billing Library เวอร์ชัน 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
นอกจากนี้ 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 ยกเว้นว่าออบเจ็กต์ PurchaseHistoryRecord จะแสดงเฉพาะค่าที่ queryPurchaseHistoryAsync() ส่งคืนและไม่มีฟิลด์ autoRenewing, orderId และ packageName โปรดทราบว่าข้อมูลที่ส่งคืนจะไม่เปลี่ยนแปลง queryPurchaseHistoryAsync() จะส่งคืนข้อมูลเดียวกันกับก่อนหน้า
ค่าที่ฟังก์ชัน BillingResult แสดงผล
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 ทั้งหมดแล้ว
แก้ไขข้อบกพร่อง
- ระบบจะไม่ส่งเครื่องมือฟังการเรียกกลับที่เป็น Null ไปยัง API สาธารณะอีกต่อไป
การเปิดตัว Google Play Billing Library 1.2 (18-10-2018)
ตอนนี้ Google Play Billing Library เวอร์ชัน 1.2 พร้อมให้บริการแล้ว เวอร์ชันนี้ มีการเปลี่ยนแปลงต่อไปนี้
สรุปการเปลี่ยนแปลง
- ตอนนี้ไลบรารีการเรียกเก็บเงินของ Google Play ได้รับอนุญาตภายใต้ข้อตกลงใบอนุญาตชุดพัฒนาซอฟต์แวร์ Android แล้ว
- เพิ่ม API ของ
launchPriceChangeConfirmationFlowซึ่งจะแจ้งให้ผู้ใช้ตรวจสอบการเปลี่ยนแปลงที่รอดำเนินการสำหรับราคาการสมัครใช้บริการ - เพิ่มการรองรับโหมดการปันส่วนตามสัดส่วนใหม่
DEFERREDเมื่ออัปเกรดหรือ ดาวน์เกรดการสมัครใช้บริการของผู้ใช้ - ในคลาส
BillingFlowParamsเราใช้setSkuDetails()แทนsetSku() - แก้ไขข้อบกพร่องเล็กน้อยและเพิ่มประสิทธิภาพโค้ด
การยืนยันการเปลี่ยนแปลงราคา
ตอนนี้คุณสามารถเปลี่ยนราคาการสมัครใช้บริการใน 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 (07-05-2018)
ตอนนี้ไลบรารี Google Play Billing เวอร์ชัน 1.1 พร้อมให้บริการแล้ว เวอร์ชันนี้ มีการเปลี่ยนแปลงต่อไปนี้
สรุปการเปลี่ยนแปลง
- เพิ่มการรองรับการระบุโหมดการปันส่วนตามสัดส่วนใน
BillingFlowParamsเมื่ออัปเกรด/ดาวน์เกรดการสมัครใช้บริการที่มีอยู่ - ไม่รองรับบูลีนแฟล็ก
replaceSkusProrationในBillingFlowParamsอีกต่อไป โปรดใช้replaceSkusProrationModeแทน - ตอนนี้
launchBillingFlow()จะทริกเกอร์การเรียกกลับ สำหรับการตอบกลับที่ไม่สำเร็จ
การเปลี่ยนแปลงพฤติกรรม
ไลบรารีการเรียกเก็บเงินของ Google Play เวอร์ชัน 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() จะทริกเกอร์การเรียกกลับสำหรับการตอบกลับที่ไม่สำเร็จ
Billing Library จะทริกเกอร์แฮนเดิลPurhcasesUpdatedListener
เสมอและแสดงผลBillingResponse
แบบไม่พร้อมกัน ระบบจะเก็บค่าที่แสดงผลแบบซิงโครนัสของ
BillingResponse
ไว้ด้วย
แก้ไขข้อบกพร่อง
- ออกอย่างเหมาะสมในเมธอดแบบอะซิงโครนัสเมื่อบริการถูกตัดการเชื่อมต่อ
Builderออบเจ็กต์ param จะไม่เปลี่ยนแปลงออบเจ็กต์ที่สร้างขึ้นอีกต่อไป- ปัญหา 68087141:
launchBillingFlow()จะทริกเกอร์การเรียกกลับสำหรับ การตอบกลับที่ไม่สำเร็จ
การเปิดตัว Google Play Billing Library 1.0 (19-09-2017, ประกาศ)
ตอนนี้ Google Play Billing Library เวอร์ชัน 1.0 พร้อมให้บริการแล้ว เวอร์ชันนี้ มีการเปลี่ยนแปลงต่อไปนี้
การเปลี่ยนแปลงที่สำคัญ
- สิทธิ์การเรียกเก็บเงินแบบฝังภายในไฟล์ Manifest ของไลบรารี คุณไม่จำเป็นต้อง
เพิ่มสิทธิ์
com.android.vending.BILLINGภายในไฟล์ Manifest ของ Android อีกต่อไป - เพิ่มเครื่องมือสร้างใหม่ลงในคลาส
BillingClient.Builder - เปิดตัวรูปแบบ Builder สำหรับคลาส
SkuDetailsParamsเพื่อใช้ในเมธอดในการค้นหา SKU - เราได้อัปเดตเมธอด API หลายรายการเพื่อให้สอดคล้องกัน (ชื่อและลำดับอาร์กิวเมนต์ที่ส่งคืนเหมือนกัน)
การเปลี่ยนแปลงพฤติกรรม
ไลบรารีการเรียกเก็บเงินของ Google Play เวอร์ชัน 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)
แก้ไขข้อบกพร่อง
- ไม่มีโค้ดตอบกลับใน PURCHASES_UPDATED Bundle
- แก้ไขปัญหาเกี่ยวกับ ProxyBillingActivity และ PurchasesUpdatedListener ระหว่างการหมุนอุปกรณ์
การเปิดตัวเวอร์ชันตัวอย่างสำหรับนักพัฒนาซอฟต์แวร์ 1 (2017-06-12, ประกาศ)
เปิดตัวเวอร์ชันตัวอย่างสำหรับนักพัฒนาแอป โดยมีเป้าหมายเพื่อลดความซับซ้อนของกระบวนการพัฒนาเมื่อพูดถึงการเรียกเก็บเงิน ซึ่งจะช่วยให้นักพัฒนาแอปมุ่งเน้นความพยายามไปที่การใช้ตรรกะเฉพาะสำหรับแอป Android เช่น สถาปัตยกรรมของแอปพลิเคชันและโครงสร้างการนำทาง
ไลบรารีมีคลาสและฟีเจอร์ที่สะดวกหลายอย่างให้คุณใช้เมื่อ ผสานรวมแอป Android กับ Google Play Billing API นอกจากนี้ ไลบรารียังมีเลเยอร์การแยกส่วนเหนือบริการ Android Interface Definition Language (AIDL) ซึ่งช่วยให้นักพัฒนาแอปกำหนดอินเทอร์เฟซ ระหว่างแอปกับ Google Play Billing API ได้ง่ายขึ้น