หัวข้อนี้จะอธิบายวิธีย้ายข้อมูลจาก 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, ListP<urchase >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 และ
คู่มือการจัดการวงจรการซื้อ