หัวข้อนี้จะอธิบายวิธีย้ายข้อมูลจาก Google Play Billing Library 4 หรือ 5 ไปยัง Google Play Billing Library 6 และวิธีใช้ความสามารถใหม่ๆ ของการสมัครใช้บริการ
หากต้องการดูรายการการเปลี่ยนแปลงทั้งหมดในเวอร์ชัน 6.0.0 โปรดดูที่รุ่น หมายเหตุ
ภาพรวม
Google Play Billing Library 6 สร้างขึ้นมาจากฟีเจอร์การสมัครใช้บริการใหม่ ในเวอร์ชัน 5 และเพิ่มการปรับปรุงอีกเล็กน้อย คุณลักษณะเหล่านี้ช่วยให้คุณสามารถขาย การสมัครใช้บริการในรูปแบบที่หลากหลายขึ้น ซึ่งช่วยลดค่าใช้จ่ายในการดำเนินงานโดยตัดความจำเป็น ในการสร้างและจัดการ SKU ที่มีจำนวนเพิ่มขึ้นเรื่อยๆ
ดูข้อมูลเพิ่มเติมเกี่ยวกับฟีเจอร์ใหม่ๆ ที่เปิดตัวใน Play Billing Library 5 ดูการเปลี่ยนแปลงล่าสุดในการสมัครใช้บริการใน Play Google Play
การอัปเกรด Play Billing Library ที่เข้ากันได้กับย้อนหลัง
ผลิตภัณฑ์ที่ต้องสมัครใช้บริการที่มีอยู่ทั้งหมดได้เปลี่ยนเป็นผลิตภัณฑ์ใหม่นี้โดยอัตโนมัติ เป็นส่วนหนึ่งของการเปิดตัว Play Billing Library 5 รุ่นเดือนพฤษภาคม 2022 และ แพลตฟอร์มการสมัครใช้บริการ ซึ่งหมายความว่าคุณไม่ต้องทำการสมัครใช้บริการใดๆ การเปลี่ยนแปลงการกำหนดค่าผลิตภัณฑ์เพื่อให้มีแคตตาล็อกที่ใช้ได้กับ ของ Play Billing Library สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีสมัครใช้บริการ SKU ได้รับการแปลงเป็นการสมัครใช้บริการที่เข้ากันได้กับแผนเก่า โปรดดูหัวข้อการทำงาน ที่มีการสมัครใช้บริการที่เก่ากว่าในส่วนความช่วยเหลือเกี่ยวกับ Play Console บทความ
แอปเวอร์ชันเก่ายังใช้งานได้อยู่
หากคุณมีแคตตาล็อกการสมัครใช้บริการที่เข้ากันได้แบบย้อนหลัง เวอร์ชันที่มีอยู่ทั้งหมด ของแอปของคุณควร ยังใช้งานได้ตามที่ต้องการสำหรับผลิตภัณฑ์เหล่านั้น ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว เนื้อหาที่ซื้อไว้จะยังใช้งานได้ต่อไปโดยไม่มีปัญหาในเวอร์ชันเก่า
เวอร์ชันของแอปที่ใช้วิธีที่เลิกใช้งานแล้ว (เช่น
querySkuDetailsAsync())
จะไม่สามารถขายแพ็กเกจเริ่มต้นหรือข้อเสนอที่ย้อนหลังไม่ได้
ที่เข้ากันได้ คุณสามารถอ่านเกี่ยวกับข้อเสนอที่ใช้งานย้อนหลังได้ใน Play ที่เกี่ยวข้อง
ศูนย์ช่วยเหลือของ Console
บทความ
อัปเกรดเป็น Play Billing Library 5 หรือ 6
Play Billing Library 5 และ 6 รวมวิธีการที่เลิกใช้งานแล้ว
querySkuDetailsAsync และ BillingFlowParams.Builder.setSkuDetails ที่ใช้เวลา
SkuDetails เป็นการเรียกเก็บเงิน
พารามิเตอร์โฟลว์ ซึ่งหมายความว่าคุณสามารถค่อยๆ ย้ายไปยัง Play Billing Library 6 ได้
โดยการวางแผนระยะต่างๆ ในการย้ายข้อมูล
สำหรับขั้นตอนแรกในการย้ายข้อมูล คุณสามารถอัปเดตไลบรารี
เวอร์ชัน ปล่อยแคตตาล็อกและแบ็กเอนด์ไว้ตามเดิม แล้วทดสอบ
แอปของคุณในขณะที่ยังคงใช้วิธีการที่เลิกใช้งานแล้ว หากคุณไม่ได้ใช้
queryPurchases, launchPriceChangeFlow หรือ setVrPurchaseFlow
ยังคงทำงานได้ตามที่ตั้งใจไว้ หลังจากนั้น คุณสามารถปรับใช้ แบบใหม่
ฟีเจอร์การสมัครใช้บริการที่เปิดตัวในเดือนพฤษภาคม 2022
หากก่อนหน้านี้คุณได้ใช้ฟีเจอร์เหล่านี้กับ Google Play Billing Library 5 การย้ายข้อมูล คุณสามารถดำเนินการต่อไปยังส่วนที่มีป้ายกำกับอัปเดต Google ได้โดยตรง Play Billing Library และเปลี่ยนการสมัครใช้บริการของผู้ใช้ การซื้อ หากคุณเริ่มต้นจากเวอร์ชันก่อนหน้า หรือยังไม่ได้ปรับใช้คุณลักษณะใหม่อย่างสมบูรณ์ คุณสามารถอ่านการย้ายข้อมูลแบบเต็ม ที่เป็นไปตามขั้นตอนดังกล่าว เพื่อเรียนรู้วิธีการนำขั้นตอนเหล่านั้นไปใช้
ขั้นตอนการย้ายข้อมูลเต็มรูปแบบ
สร้างการสมัครใช้บริการใหม่ในแคตตาล็อกผลิตภัณฑ์แบ็กเอนด์
เมื่อใช้ Play Developer Console หรือ Play Developer API คุณจะสามารถ กําหนดค่าการสมัครใช้บริการรายการเดียวด้วยแพ็กเกจเริ่มต้นหลายรายการ โดยแต่ละรายการมีหลายรายการ Google ข้อเสนอการสมัครใช้บริการมีรูปแบบราคาที่ยืดหยุ่นและตัวเลือกการมีสิทธิ์ คุณสามารถสร้างข้อเสนอตลอดวงจรการสมัครใช้บริการโดยใช้ แพ็กเกจต่ออายุใหม่อัตโนมัติและแพ็กเกจชำระล่วงหน้า
เราขอแนะนำให้สร้างผลิตภัณฑ์ใหม่ตามโครงสร้างเอนทิตีใน แพลตฟอร์มการสมัครใช้บริการสำหรับการผสานรวม Play Billing Library 6 ของคุณมาก่อน กำลังย้ายข้อมูลแอป คุณรวมผลิตภัณฑ์ที่ซ้ำกันในแคตตาล็อกเก่าได้ แสดงสิทธิประโยชน์ของการให้สิทธิ์แบบเดียวกันภายใต้การสมัครใช้บริการและการใช้งานรายการเดียว แพ็กเกจเริ่มต้นและการกำหนดค่าข้อเสนอเพื่อแสดงตัวเลือกทั้งหมดที่คุณต้องการ นำเสนอ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคำแนะนำนี้ โปรดดูที่การทำงานกับ ส่วนการสมัครใช้บริการที่เก่ากว่าในศูนย์ช่วยเหลือของ Play Console บทความ
ขอแนะนำว่าอย่าแก้ไขผลิตภัณฑ์การสมัครใช้บริการที่แปลงแล้วหลังจาก
เผยแพร่เดือนพฤษภาคม 2022 คุณควรปล่อยไว้เหมือนเดิมเพื่อขายพร้อมกับ
แอปของคุณโดยใช้วิธีการที่เลิกใช้งานแล้ว (เช่น querySkuDetailsAsync()) โดยไม่แสดงการเปลี่ยนแปลงที่
อาจส่งผลต่องานสร้างเก่าเหล่านี้
กระบวนการทำ Conversion ทำให้ผลิตภัณฑ์ที่ต้องสมัครใช้บริการที่อยู่ในแคตตาล็อกของคุณ ก่อนเดือนพฤษภาคม 2022 ให้อ่านอย่างเดียวเพื่อหลีกเลี่ยงการเปลี่ยนแปลงโดยไม่ตั้งใจที่อาจทำให้เกิด ปัญหาในการผสานรวมที่มีอยู่ การเปลี่ยนแปลงการสมัครใช้บริการเหล่านี้ แต่ก็อาจมีผลกระทบอื่นๆ ที่อาจส่งผลต่อฟรอนท์เอนด์และ การผสานรวมแบ็กเอนด์:
ในเวอร์ชันฟรอนท์เอนด์ เวอร์ชันแอปที่ใช้
querySkuDetailsAsync()เพื่อรับ รายละเอียดผลิตภัณฑ์ที่ต้องสมัครใช้บริการจะขายได้เฉพาะแพ็กเกจเริ่มต้นที่เข้ากันได้แบบย้อนหลังเท่านั้น และข้อเสนอ และจะมีแพ็กเกจเริ่มต้นและข้อเสนอที่เข้ากันได้แบบย้อนหลังเพียง 1 รายการเท่านั้น หลายรายการ ดังนั้นหากคุณเพิ่มแพ็กเกจหรือข้อเสนอใหม่ลงในการสมัครใช้บริการที่แปลงแล้ว แพ็กเกจเริ่มต้นหรือข้อเสนอใหม่เพิ่มเติม จะขายในเวอร์ชันเก่าเหล่านี้ไม่ได้ เวอร์ชันแอปของคุณในแบ็กเอนด์ หากคุณแก้ไขการสมัครใช้บริการที่แปลงแล้วใน UI ของ Play Console คุณจะไม่สามารถจัดการ UI ด้วย
inappproductsได้ ปลายทาง หากคุณเรียกใช้ปลายทางสำหรับวัตถุประสงค์นี้ คุณควรใช้ ย้ายข้อมูลไปยังปลายทางสถานะการซื้อการสมัครใช้บริการใหม่ (purchases.subscriptionsv2.get) เพื่อจัดการการซื้อ สำหรับการสมัครใช้บริการเหล่านี้ เนื่องจากปลายทางสถานะการซื้อแบบเก่า (purchases.subscriptions.get) จะแสดงเฉพาะ ข้อมูลที่จำเป็นในการจัดการแพ็กเกจเริ่มต้นและข้อเสนอที่เข้ากันได้แบบย้อนหลัง การซื้อ อ่านจัดการสถานะการซื้อการสมัครใช้บริการ สำหรับข้อมูลเพิ่มเติม
จัดการแคตตาล็อกการสมัครใช้บริการแบ็กเอนด์ด้วย API ใหม่
หากคุณจัดการแคตตาล็อกผลิตภัณฑ์ที่ต้องสมัครใช้บริการโดยอัตโนมัติด้วย API สำหรับนักพัฒนาซอฟต์แวร์ Google Play คุณต้องใช้ผลิตภัณฑ์การสมัครใช้บริการใหม่ กำหนดปลายทางเพื่อสร้างและจัดการการสมัครใช้บริการ แพ็กเกจเริ่มต้น และข้อเสนอ อ่านฟีเจอร์การสมัครใช้บริการในเดือนพฤษภาคม 2022 คำแนะนำ เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนแปลง API แคตตาล็อกผลิตภัณฑ์สำหรับรุ่นนี้
วิธีย้ายข้อมูลโมดูลการจัดการแคตตาล็อกผลิตภัณฑ์อัตโนมัติสำหรับ
การสมัครใช้บริการ Google Play Billing ให้แทนที่
inappproducts
API พร้อมกับ Subscription Publishing API ใหม่เพื่อจัดการและเผยแพร่
แคตตาล็อกการสมัครใช้บริการ มีปลายทางใหม่ 3 รายการ ได้แก่
Monetization.subscriptionsเพื่อจัดการผลิตภัณฑ์ที่ต้องสมัครใช้บริการMonetization.basePlansเพื่อจัดการแพ็กเกจเริ่มต้นสำหรับการสมัครใช้บริการMonetization.offersเพื่อจัดการข้อเสนอสำหรับแพ็กเกจเริ่มต้น
ปลายทางใหม่เหล่านี้มีฟังก์ชันที่จำเป็นทั้งหมดในการใช้ประโยชน์จาก ความสามารถใหม่ในแคตตาล็อกของคุณ: แพ็กเกจเริ่มต้นและแท็กข้อเสนอ การกำหนดเป้าหมายตามภูมิภาค แพ็กเกจแบบชำระเงินล่วงหน้า และอื่นๆ
คุณยังควรใช้
inappproducts
API สำหรับจัดการแคตตาล็อกไอเทมที่ซื้อในแอปสำหรับผลิตภัณฑ์แบบซื้อครั้งเดียว
แอปเวอร์ชันที่ใช้วิธีที่เลิกใช้งานแล้ว (เช่น querySkuDetailsAsync()) จะไม่สามารถขายแพ็กเกจเริ่มต้นหรือข้อเสนอที่เข้ากันแบบย้อนหลังไม่ได้ อ่านข้อมูลเกี่ยวกับข้อเสนอที่เข้ากันได้แบบย้อนหลังได้ที่นี่
อัปเดตไลบรารี Google Play Billing
เมื่อคุณสร้างแคตตาล็อกผลิตภัณฑ์ที่ต้องสมัครใช้บริการใหม่แล้ว
คุณสามารถย้ายข้อมูลแอปไปยัง Google Billing Library 5 ได้ แทนที่รายการที่มีอยู่
ทรัพยากร Dependency ของ Play Billing Library ที่มีการอัปเดตเป็น
build.gradle ของแอป
dependencies {
def billingVersion = "6.0.0"
implementation "com.android.billingclient:billing:$billingVersion"
}
โปรเจ็กต์ของคุณควรสร้างได้ทันที แม้ว่าคุณจะไม่ได้แก้ไขการเรียกไปยัง วิธีการ - Play Billing Library 6 จะใช้งานร่วมกันได้แบบย้อนหลัง แนวคิดของ SKU คือ ถือว่าเลิกใช้งานแล้วแต่ยังคงนำเสนออยู่เพื่อให้การพอร์ตแอปเป็นเรื่องง่ายขึ้นและมากขึ้น กระบวนการที่เพิ่มขึ้น
เริ่มต้นไคลเอ็นต์การเรียกเก็บเงินและสร้างการเชื่อมต่อกับ Google Play
ขั้นตอนแรกในการเปิดใช้การซื้อจากแอป Android จะยังคงเหมือนเดิม ดังนี้
แสดงผลิตภัณฑ์ที่พร้อมจำหน่าย
หากต้องการรับข้อเสนอทั้งหมดที่ผู้ใช้มีสิทธิ์ซื้อ ให้ทำดังนี้
- แทนที่
SkuDetailsParamsด้วยQueryProductDetailsParams - สลับสายของ
BillingClient.querySkuDetailsAsync()เพื่อใช้BillingClient.queryProductDetailsAsync()
โปรดทราบว่าขณะนี้ผลการค้นหาจะเป็น ProductDetails จากเดิม SkuDetails
สินค้า ProductDetails แต่ละรายการมีข้อมูลเกี่ยวกับผลิตภัณฑ์
(รหัส ชื่อ ประเภท และอื่นๆ) สำหรับผลิตภัณฑ์ที่ต้องสมัครใช้บริการ ProductDetails
มี List<ProductDetails.SubscriptionOfferDetails> ซึ่งก็คือ
รายการรายละเอียดข้อเสนอพิเศษของการสมัครใช้บริการ สำหรับผลิตภัณฑ์แบบซื้อครั้งเดียว
ProductDetails มี ProductDetails.OneTimePurchaseOfferDetails เหล่านี้
สามารถใช้เพื่อเลือกข้อเสนอที่จะแสดงต่อผู้ใช้
ตัวอย่างต่อไปนี้แสดงลักษณะของแอปก่อนและหลังใช้งาน ทำการเปลี่ยนแปลงเหล่านี้
ก่อน
Kotlin
val skuList = ArrayList<String>() skuList.add("up_basic_sub") val params = SkuDetailsParams.newBuilder() params.setSkusList(skuList).setType(BillingClient.SkuType.SUBS).build() billingClient.querySkuDetailsAsync(params) { billingResult, skuDetailsList -> // Process the result }
Java
List<String> skuList = new ArrayList<>(); skuList.add("up_basic_sub"); SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder(); params.setSkusList(skuList).setType(SkuType.SUBS).build(); billingClient.querySkuDetailsAsync(params, new SkuDetailsResponseListener() { @Override public void onSkuDetailsResponse(BillingResult billingResult, List<SkuDetails> skuDetailsList) { // Process the result. } } );
หลัง
Kotlin
val productList = listOf( QueryProductDetailsParams.Product.newBuilder() .setProductId("up_basic_sub") .setProductType(BillingClient.ProductType.SUBS) .build() ) val params = QueryProductDetailsParams.newBuilder().setProductList(productList).build() billingClient.queryProductDetailsAsync(params) { billingResult, productDetailsList -> // Process the result }
Java
ImmutableList<Product> productList = ImmutableList.of(Product.newBuilder() .setProductId("up_basic_sub") .setProductType(ProductType.SUBS) .build()); QueryProductDetailsParams params = QueryProductDetailsParams.newBuilder() .setProductList(productList) .build(); billingClient.queryProductDetailsAsync( params, new ProductDetailsResponseListener() { public void onProductDetailsResponse(BillingResult billingResult, List<ProductDetails> productDetailsList) { // Process the result } } );
การเรียกกลับสำหรับ queryProductDetailsAsync แสดงผล List<ProductDetails>
สินค้า ProductDetails แต่ละรายการมีข้อมูลเกี่ยวกับผลิตภัณฑ์
(รหัส ชื่อ ประเภท และอื่นๆ) ความแตกต่างหลักๆ ก็คือการสมัครใช้บริการ
ผลิตภัณฑ์เหล่านี้มี List<ProductDetails.SubscriptionOfferDetails> ด้วย
ที่มีข้อเสนอทั้งหมดที่มีให้ผู้ใช้
เนื่องจาก Play Billing Library เวอร์ชันก่อนหน้าไม่รองรับเวอร์ชันใหม่
ออบเจ็กต์ (การสมัครใช้บริการ แพ็กเกจเริ่มต้น ข้อเสนอ และอื่นๆ) ระบบใหม่
จะแปลง SKU การสมัครใช้บริการแต่ละ SKU เป็นแพ็กเกจเดียวที่เข้ากันได้แบบย้อนหลัง
แพ็กเกจเริ่มต้นและข้อเสนอ ผลิตภัณฑ์แบบซื้อครั้งเดียวที่พร้อมจำหน่ายยังมี
ย้ายไปยังออบเจ็กต์ ProductDetails แล้ว รายละเอียดข้อเสนอพิเศษสำหรับครั้งเดียว
สามารถเข้าถึงผลิตภัณฑ์ที่ซื้อได้ด้วย
getOneTimePurchaseOfferDetails() วิธี
บางครั้งอุปกรณ์บางเครื่องไม่รองรับProductDetailsและqueryProductDetailsAsync()
มักเกิดจากเวอร์ชันเก่าของ
บริการ Google Play เพื่อให้มั่นใจได้ว่า
การสนับสนุนที่เหมาะสมสำหรับสถานการณ์นี้ โทร
isFeatureSupported()
สำหรับ PRODUCT_DETAILS
ก่อนที่จะเรียก queryProductDetailsAsync หากคำตอบคือ
OK
อุปกรณ์รองรับฟีเจอร์นี้และคุณสามารถโทรหา queryProductDetailsAsync() ต่อได้
หากคำตอบคือ FEATURE_NOT_SUPPORTED
คุณสามารถขอรายการผลิตภัณฑ์ที่เข้ากันแบบย้อนหลังได้แทนด้วย
querySkuDetailsAsync()
หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้ความเข้ากันได้แบบย้อนหลัง
โปรดดูคู่มือฟีเจอร์การสมัครใช้บริการในเดือนพฤษภาคม 2022
เปิดขั้นตอนการซื้อข้อเสนอ
การเปิดตัวขั้นตอนการซื้อสำหรับข้อเสนอคล้ายกับการเปิดตัวขั้นตอน สำหรับ SKU หากต้องการเริ่มต้นคำขออนุมัติการซื้อโดยใช้เวอร์ชัน 6 ให้ทำดังนี้
- แทนที่จะใช้
SkuDetailsสำหรับBillingFlowParamsใช้ProductDetailsParams - คุณจะดูรายละเอียดข้อเสนอ เช่น รหัสข้อเสนอ รหัสแพ็กเกจเริ่มต้น และอื่นๆ ได้โดยใช้
SubscriptionOfferDetailsออบเจ็กต์
หากต้องการซื้อผลิตภัณฑ์ด้วยข้อเสนอที่ผู้ใช้เลือก ให้ดาวน์โหลด offerToken
ของข้อเสนอที่เลือก และส่งไปยังออบเจ็กต์ ProductDetailsParams
เมื่อสร้างออบเจ็กต์ BillingFlowParams แล้ว การเปิดใช้ขั้นตอนการเรียกเก็บเงิน
กับ BillingClient ได้เหมือนเดิม
ตัวอย่างต่อไปนี้แสดงลักษณะของแอปก่อนและหลังใช้งาน ทำการเปลี่ยนแปลงเหล่านี้
ก่อน
Kotlin
// An activity reference from which the billing flow will be launched. val activity : Activity = ... // Retrieve a value for "skuDetails" by calling querySkuDetailsAsync(). val billingFlowParams = BillingFlowParams.newBuilder() .setSkuDetails(skuDetails) .build() val billingResult = billingClient.launchBillingFlow(activity, billingFlowParams)
Java
// An activity reference from which the billing flow will be launched. Activity activity = ...; // Retrieve a value for "skuDetails" by calling querySkuDetailsAsync(). BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setSkuDetails(skuDetails) .build(); BillingResult billingResult = billingClient.launchBillingFlow(activity, billingFlowParams)
หลัง
Kotlin
// An activity reference from which the billing flow will be launched. val activity : Activity = ...; val productDetailsParamsList = listOf( BillingFlowParams.ProductDetailsParams.newBuilder() // retrieve a value for "productDetails" by calling queryProductDetailsAsync() .setProductDetails(productDetails) // For One-time product, "setOfferToken" method shouldn't be called. // For subscriptions, to get the offer token corresponding to the selected // offer call productDetails.subscriptionOfferDetails?.get(selectedOfferIndex)?.offerToken .setOfferToken(selectedOfferToken) .build() ) val billingFlowParams = BillingFlowParams.newBuilder() .setProductDetailsParamsList(productDetailsParamsList) .build() // Launch the billing flow val billingResult = billingClient.launchBillingFlow(activity, billingFlowParams)
Java
// An activity reference from which the billing flow will be launched. Activity activity = ...; ImmutableList<ProductDetailsParams> productDetailsParamsList = ImmutableList.of( ProductDetailsParams.newBuilder() // retrieve a value for "productDetails" by calling queryProductDetailsAsync() .setProductDetails(productDetails) // For one-time products, "setOfferToken" method shouldn't be called. // For subscriptions, to get the offer token corresponding to the selected // offer call productDetails.getSubscriptionOfferDetails().get(selectedOfferIndex).getOfferToken() .setOfferToken(selectedOfferToken) .build() ); BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setProductDetailsParamsList(productDetailsParamsList) .build(); // Launch the billing flow BillingResult billingResult = billingClient.launchBillingFlow(activity, billingFlowParams);
ประมวลผลการซื้อ
การดำเนินการซื้อด้วย Google Play Billing Library 6 ยังคงคล้ายคลึงกัน เป็นเวอร์ชันก่อนหน้า
เพื่อดึงข้อมูลการซื้อที่ใช้งานอยู่ทั้งหมดของผู้ใช้และค้นหาสำหรับรายการใหม่ โดยทำตามขั้นตอนต่อไปนี้
- แทนที่จะส่งค่า
BillingClient.SkuTypeไปยังqueryPurchasesAsync()ส่งออบเจ็กต์QueryPurchasesParamsที่มีค่าBillingClient.ProductType
ตัวอย่างต่อไปนี้แสดงลักษณะของแอปก่อนหน้านี้และ หลังจากทำการเปลี่ยนแปลงเหล่านี้
ก่อน
Kotlin
billingClient.queryPurchasesAsync(BillingClient.SkuType.SUBS) { billingResult, purchaseList -> { // Process the result } }
Java
billingClient.queryPurchasesAsync( BillingClient.SkuType.SUBS, new PurchasesResponseListener() { public void onQueryPurchasesResponse( BillingResult billingResult, List<Purchase> purchases) { // process the result } } );
หลัง
Kotlin
billingClient.queryPurchasesAsync( QueryPurchasesParams.newBuilder() .setProductType(BillingClient.ProductType.SUBS) .build() ) { billingResult, purchaseList -> // Process the result }
Java
billingClient.queryPurchasesAsync( QueryPurchasesParams.newBuilder().setProductType(ProductType.SUBS).build(), new PurchasesResponseListener() { public void onQueryPurchasesResponse( BillingResult billingResult, List<Purchase> purchases) { // Process the result } } );
ขั้นตอนในการจัดการการซื้อนอกแอป และธุรกรรมที่รอดำเนินการ ไม่เปลี่ยนแปลง
จัดการสถานะการซื้อการสมัครใช้บริการด้วย API ใหม่ในแบ็กเอนด์
คุณควรย้ายข้อมูลคอมโพเนนต์การจัดการสถานะการซื้อการสมัครใช้บริการ ในแบ็กเอนด์ของคุณเพื่อเตรียมพร้อมรับมือกับการซื้อผลิตภัณฑ์ใหม่ที่สร้างขึ้น ในขั้นตอนก่อนหน้า การจัดการสถานะการซื้อการสมัครใช้บริการปัจจุบันของคุณ ควรทำงานตามปกติสำหรับผลิตภัณฑ์การสมัครใช้บริการที่แปลงแล้วซึ่งคุณ ก่อนการเปิดตัวในเดือนพฤษภาคม 2022 และน่าจะเพียงพอต่อการจัดการการซื้อ ของข้อเสนอที่เข้ากันได้แบบย้อนหลัง แต่ไม่รองรับฟังก์ชันการทํางานใหม่ใดๆ
คุณจำเป็นต้องใช้ Subscription Purchases API ใหม่สำหรับบัญชี โมดูลการจัดการสถานะการซื้อการสมัครใช้บริการ ซึ่งจะตรวจสอบการซื้อ และจัดการการให้สิทธิ์การสมัครใช้บริการ Play Billing ในแบ็กเอนด์ของคุณ API เวอร์ชันเก่าไม่ได้แสดงรายละเอียดที่จำเป็นทั้งหมดในการจัดการ ในแพลตฟอร์มใหม่ ดูรายละเอียดการเปลี่ยนแปลงจากเวอร์ชันก่อนหน้า ดูคู่มือเกี่ยวกับฟีเจอร์การสมัครใช้บริการใหม่ในเดือนพฤษภาคม 2022
โดยปกติคุณจะเรียก Subscription Purchases API ทุกครั้งที่ได้รับ
SubscriptionNotification การแจ้งเตือนแบบเรียลไทม์สำหรับนักพัฒนาซอฟต์แวร์เพื่อดึงข้อมูล
ข้อมูลล่าสุดเกี่ยวกับสถานะการติดตาม คุณต้องแทนที่
โทรหา purchases.subscriptions.get ด้วยเวอร์ชันใหม่ของ
Subscription Purchases API purchases.subscriptionsv2.get
มีทรัพยากรใหม่ชื่อ
SubscriptionPurchaseV2
ซึ่งมีปริมาณเพียงพอ
สำหรับจัดการสิทธิ์ในการซื้อสำหรับการสมัครใช้บริการในรูปแบบใหม่
ปลายทางใหม่นี้จะแสดงผลสําหรับผลิตภัณฑ์ที่ต้องสมัครใช้บริการทั้งหมดและ การซื้อทั้งหมด ไม่ว่าจะขายแอปเวอร์ชันใด และ เมื่อกำหนดผลิตภัณฑ์ (ก่อนหรือหลังการเปิดตัวในเดือนพฤษภาคม 2022) ดังนั้นหลังจากการย้ายข้อมูล คุณจะต้องสมัครใช้บริการเวอร์ชันนี้เท่านั้น โมดูลการจัดการสถานะการซื้อ
เปลี่ยนแปลงการซื้อการสมัครใช้บริการของผู้ใช้
ใน Play Billing Library 5 และรุ่นก่อนหน้า
ProrationMode
ใช้เพื่อทำการเปลี่ยนแปลงกับการซื้อการสมัครใช้บริการของผู้ใช้ เช่น การอัปเกรด
หรือดาวน์เกรด ซึ่งเลิกใช้งานแล้วและแทนที่ด้วย
ReplacementMode
ในเวอร์ชัน 6
จัดการการเปลี่ยนแปลงราคาการสมัครใช้บริการ
API launchPriceConfirmationFlow ที่เลิกใช้งานก่อนหน้านี้ได้ถูกนำออกไปใน
Play Billing Library 6. โปรดดูตัวเลือกอื่นในการเปลี่ยนแปลงราคา
จัดการข้อผิดพลาด Play Billing Library
ใน Play Billing Library 6 เราได้เพิ่มรหัส NETWORK_ERROR ใหม่เพื่อระบุ
ปัญหาในการเชื่อมต่อเครือข่ายระหว่างอุปกรณ์ของผู้ใช้กับบัญชี Google
ระบบ Play นอกจากนี้ยังมีการเปลี่ยนแปลงรหัส SERVICE_TIMEOUT และ
SERVICE_UNAVAILABLE โปรดดูข้อมูลเพิ่มเติมที่คำตอบเกี่ยวกับการจัดการการเรียกเก็บเงินของผลลัพธ์
รหัส
จัดการธุรกรรมที่รอดำเนินการ
ตั้งแต่เวอร์ชัน 6.0.0 เป็นต้นไป Play Billing Library จะไม่สร้างคำสั่งซื้อ
รหัสสำหรับการซื้อที่รอดำเนินการ สำหรับการซื้อเหล่านี้ ระบบจะป้อนข้อมูลรหัสคำสั่งซื้อหลัง
ระบบจะย้ายการซื้อไปยัง
PURCHASED
ตรวจสอบว่าการผสานรวมต้องใช้รหัสคำสั่งซื้อหลัง
การทำธุรกรรมเสร็จสมบูรณ์แล้ว คุณยังคงสามารถใช้โทเค็นการซื้อเพื่อ
ระเบียนข้อมูล โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับการจัดการการสั่งซื้อที่รอดำเนินการ
คู่มือการผสานรวม Billing Library และ
คู่มือการจัดการวงจรการซื้อ