1. บทนำ
ในโค้ดแล็บนี้ คุณจะมุ่งเน้นที่การสร้างไอเทมแบบเรียกเก็บเงินครั้งเดียว (OTP) และเพิ่มข้อเสนอการสั่งจองล่วงหน้าสำหรับไอเทม
หมายเหตุ: ก่อนเริ่ม Codelab นี้ คุณต้องขอสิทธิ์เข้าถึงฟีเจอร์การสั่งซื้อล่วงหน้าโดยกรอกแบบฟอร์มแสดงความสนใจ EAP สำหรับผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
ผู้ชม
Codelab นี้มีไว้สำหรับนักพัฒนาแอป Android ที่คุ้นเคยกับผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวและต้องการทำความเข้าใจวิธีเพิ่มข้อเสนอการสั่งจองล่วงหน้าลงในผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
ข้อกำหนดเบื้องต้น
หากเพิ่งเริ่มใช้ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว เราขอแนะนำให้คุณทำ Codelab เข้าถึงตลาดใหม่ๆ ด้วยการกำหนดราคาระดับภูมิภาคให้เสร็จสมบูรณ์
สิ่งที่คุณจะได้เรียนรู้...
- วิธีใช้ Google Play Console เพื่อสร้างข้อเสนอการสั่งจองล่วงหน้าสำหรับไอเทมแบบเรียกเก็บเงินครั้งเดียว
- วิธีใช้ API ของ Play Billing Library เพื่อค้นหาไอเทมแบบเรียกเก็บเงินครั้งเดียวและรายละเอียดข้อเสนอการสั่งจองล่วงหน้าที่เกี่ยวข้อง
สิ่งที่คุณต้องมี...
- สิทธิ์เข้าถึง Google Play Console ด้วยบัญชีนักพัฒนาแอป หากยังไม่มีบัญชีนักพัฒนาแอป คุณจะต้องสร้างบัญชี
- แอปตัวอย่างสำหรับโค้ดแล็บนี้ ซึ่งคุณดาวน์โหลดจาก GitHub ได้
- Android Studio
2. สร้างแอปตัวอย่าง
Codelab นี้ใช้แอป Android ตัวอย่างเพื่อสอนวิธีจัดการผลิตภัณฑ์แบบครั้งเดียว แอปตัวอย่างออกแบบมาให้เป็นแอป Android ที่มีฟังก์ชันการทำงานเต็มรูปแบบซึ่งมีซอร์สโค้ดที่สมบูรณ์ซึ่งแสดงลักษณะต่อไปนี้
- การผสานรวมแอปกับ PBL
- การดึงข้อมูลไอเทมแบบเรียกเก็บเงินครั้งเดียวและข้อเสนอการสั่งจองล่วงหน้าที่เกี่ยวข้อง
- ดำเนินการตามขั้นตอนการซื้อสำหรับการกำหนดราคาระดับภูมิภาค
วิดีโอเดโมต่อไปนี้แสดงลักษณะและการทำงานของแอปตัวอย่างหลังจากที่ติดตั้งใช้งานและเรียกใช้
หากคุ้นเคยกับไอเทมแบบเรียกเก็บเงินครั้งเดียวและ Play Billing Library (PBL) อยู่แล้ว คุณสามารถดาวน์โหลดแอปตัวอย่างและทดลองใช้ได้
สิ่งที่ต้องดำเนินการก่อน
ก่อนที่จะสร้างและติดตั้งใช้งานแอปตัวอย่าง ให้ทำดังนี้
- สร้างบัญชีนักพัฒนาแอป Google Play Console หากมีบัญชีนักพัฒนาแอปอยู่แล้ว ให้ข้ามขั้นตอนนี้
- สร้างแอปใหม่ใน Play Console เมื่อสร้างแอป คุณจะระบุชื่อแอปใดก็ได้สำหรับแอปตัวอย่าง
- ติดตั้ง Android Studio
สร้าง
วัตถุประสงค์ของขั้นตอนการสร้างนี้คือการสร้างไฟล์ Android App Bundle ที่ลงนามแล้วของแอปตัวอย่าง
หากต้องการสร้าง Android App Bundle ให้ทำตามขั้นตอนต่อไปนี้
- ดาวน์โหลดแอปตัวอย่างจาก GitHub
- สร้างแอปตัวอย่าง ก่อนสร้าง ให้เปลี่ยนชื่อแพ็กเกจของแอปตัวอย่าง แล้วจึงสร้าง หากคุณมีแพ็กเกจของแอปอื่นๆ ใน Play Console โปรดตรวจสอบว่าชื่อแพ็กเกจที่คุณระบุสำหรับแอปตัวอย่างนั้นไม่ซ้ำกัน
หมายเหตุ: การสร้างแอปตัวอย่างจะสร้างเฉพาะไฟล์ APK ที่คุณใช้สำหรับการทดสอบในเครื่องได้ อย่างไรก็ตาม การเรียกใช้แอปจะไม่ดึงข้อมูลผลิตภัณฑ์และราคาเนื่องจากยังไม่ได้กำหนดค่าผลิตภัณฑ์ใน Play Console - สร้าง Android App Bundle ที่ลงนามแล้ว
ขั้นตอนถัดไปคือการอัปโหลด Android App Bundle ไปยัง Google Play Console
3. สร้าง OTP ด้วยการสั่งจองล่วงหน้าใน Play Console
หากต้องการสร้างผลิตภัณฑ์แบบครั้งเดียว (OTP) ใน Google Play Console คุณต้องมีแอปใน Play Console สร้างแอปใน Play Console แล้วอัปโหลด App Bundle ที่ลงนามแล้วซึ่งสร้างไว้ก่อนหน้านี้
สร้างแอป
วิธีสร้างแอป
- เข้าสู่ระบบ Google Play Console โดยใช้บัญชีนักพัฒนาแอป
- คลิกสร้างแอป ซึ่งจะเปิดหน้าสร้างแอป
- ป้อนชื่อแอป เลือกภาษาเริ่มต้น และรายละเอียดอื่นๆ ที่เกี่ยวข้องกับแอป
- คลิกสร้างแอป ซึ่งจะเป็นการสร้างแอปใน Google Play Console
ตอนนี้คุณอัปโหลด App Bundle ที่ลงนามแล้วของแอปตัวอย่างได้แล้ว
อัปโหลด App Bundle ที่ลงนามแล้ว
- อัปโหลด App Bundle ที่ลงนามแล้วไปยังแทร็กทดสอบภายในของ Google Play Console หลังจากอัปโหลดแล้วเท่านั้น คุณจึงจะกำหนดค่าฟีเจอร์ที่เกี่ยวข้องกับการสร้างรายได้ใน Play Console ได้
- คลิกทดสอบและเผยแพร่ > การทดสอบ > รุ่นภายใน > สร้างรุ่นใหม่
- ป้อนชื่อรุ่นและอัปโหลดไฟล์ APK ที่ลงชื่อแล้ว
- คลิกถัดไป แล้วคลิกบันทึกและเผยแพร่
ตอนนี้คุณสร้างผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวได้แล้ว
สร้างผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
จากนั้นสร้างผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวที่ต้องการให้ผู้ใช้ซื้อ
- เปิดแอปตัวอย่างใน Google Play Console แล้วไปที่สร้างรายได้ด้วย Play > ผลิตภัณฑ์ > ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
- คลิกสร้างผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
- ป้อนรายละเอียดผลิตภัณฑ์ต่อไปนี้
- รหัสผลิตภัณฑ์: ป้อนรหัสที่ไม่ซ้ำกัน เช่น
upcoming_movie_1 - (ไม่บังคับ) แท็ก: เพิ่มแท็กที่เกี่ยวข้อง
- ชื่อ: ป้อนชื่อผลิตภัณฑ์ เช่น
Product Movie - คำอธิบาย: ป้อนคำอธิบายผลิตภัณฑ์ เช่น
Product Description - (ไม่บังคับ) เพิ่มรูปภาพไอคอน: อัปโหลดไอคอนที่แสดงถึงผลิตภัณฑ์
- รหัสผลิตภัณฑ์: ป้อนรหัสที่ไม่ซ้ำกัน เช่น
- คลิกถัดไป
- เพิ่มตัวเลือกการซื้อและกำหนดค่าความพร้อมจำหน่ายสินค้าระดับภูมิภาค ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวต้องมีตัวเลือกการซื้ออย่างน้อย 1 รายการ ซึ่งจะกำหนดวิธีการให้สิทธิ์ ราคา และความพร้อมจำหน่ายสินค้าระดับภูมิภาค สำหรับโค้ดแล็บนี้ เราจะเพิ่มตัวเลือกซื้อมาตรฐานสำหรับผลิตภัณฑ์ ในส่วนตัวเลือกการซื้อ ให้ป้อนรายละเอียดต่อไปนี้
- รหัสตัวเลือกการซื้อ: ป้อนรหัสที่ไม่ซ้ำกัน เช่น
buy-movie - ประเภทการซื้อ: เลือกซื้อ
- (ไม่บังคับ) แท็ก: เพิ่มแท็กที่เฉพาะเจาะจงสำหรับตัวเลือกการซื้อนี้
- (ไม่บังคับ) คลิกตัวเลือกขั้นสูงเพื่อกำหนดค่าตัวเลือกขั้นสูง คุณข้ามการกำหนดค่าตัวเลือกขั้นสูงได้เพื่อวัตถุประสงค์ของโค้ดแล็บนี้
- รหัสตัวเลือกการซื้อ: ป้อนรหัสที่ไม่ซ้ำกัน เช่น
- จากนั้นคุณต้องกำหนดค่าความพร้อมจำหน่ายสินค้าและราคาของตัวเลือกการซื้อในระดับภูมิภาค ในความพร้อมให้บริการระดับภูมิภาค คุณจะระบุภูมิภาคที่ผลิตภัณฑ์พร้อมให้บริการได้ รวมถึงภูมิภาคที่ยังไม่ได้เผยแพร่แอป โดยค่าเริ่มต้น ตัวเลือกการซื้อจะพร้อมใช้งานในทุกภูมิภาค ในส่วนความพร้อมให้บริการและราคา ให้คลิกแก้ไขความพร้อมให้บริการและการเข้าถึง
- เลือกตั้งค่าเป็นไม่พร้อมให้บริการ
- ยกเลิกการเลือกเฉพาะ
United Statesประเทศ แล้วคลิกตั้งค่าเป็นไม่พร้อมให้บริการ ตอนนี้ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวจะพร้อมให้บริการในUnited Statesเท่านั้น - ในเมนูแบบเลื่อนลงทุกภูมิภาค ให้เลือกประเทศและภูมิภาคที่พร้อมให้บริการ คุณควรเห็นเฉพาะ
United States - คลิกไอคอนราคา ซึ่งจะแสดงกล่องโต้ตอบเพื่อกำหนดราคา
- ป้อน 100 บาท แล้วคลิกบันทึก
- คลิกบันทึกเป็นฉบับร่าง
หมายเหตุ: อย่าเพิ่งเปิดใช้งานตัวเลือกการซื้อ เราจะเปิดใช้งานหลังจากกำหนดค่าข้อเสนอการสั่งจองล่วงหน้า เนื่องจากคุณเพิ่มข้อเสนอการสั่งจองล่วงหน้าไปยังตัวเลือกการซื้อที่ใช้งานอยู่ซึ่งตั้งค่าความพร้อมใช้งานระดับภูมิภาคไว้ไม่ได้
เพิ่มข้อเสนอการสั่งจองล่วงหน้า
ตอนนี้คุณจะเพิ่มข้อเสนอการสั่งจองล่วงหน้าสำหรับตัวเลือกการซื้อแบบซื้อที่สร้างไว้ก่อนหน้านี้ ข้อเสนอการสั่งจองล่วงหน้าช่วยให้ผู้ใช้ซื้อไอเทมของคุณได้ก่อนที่จะวางจำหน่ายอย่างเป็นทางการ โปรดทราบว่าระบบรองรับข้อเสนอการสั่งจองล่วงหน้าสำหรับตัวเลือกการซื้อแบบซื้อเท่านั้น และกำหนดค่าได้เฉพาะผลิตภัณฑ์ใหม่ในภูมิภาค
การเพิ่มข้อเสนอการสั่งจองล่วงหน้ามี 2 ขั้นตอนดังนี้
- เตรียมตัวเลือกการซื้อแบบซื้อสำหรับข้อเสนอการสั่งจองล่วงหน้า
- เพิ่มข้อเสนอการสั่งจองล่วงหน้าสำหรับตัวเลือกการซื้อ
เตรียมตัวเลือกการซื้อแบบซื้อสำหรับข้อเสนอการสั่งจองล่วงหน้า
- เปิดแอปตัวอย่างใน Google Play Console แล้วไปที่สร้างรายได้ด้วย Play > ผลิตภัณฑ์ > ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
- ในหน้าผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว ให้คลิกลูกศรขวาสำหรับผลิตภัณฑ์ (
upcoming_movie_1) ซึ่งจะเปิดหน้าแก้ไขผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว - คลิกลูกศรขวาสำหรับ
buy-movieตัวเลือกการซื้อที่คุณสร้างไว้ก่อนหน้านี้ ซึ่งจะเปิดหน้าแก้ไขตัวเลือกการซื้อ - คลิกแก้ไขความพร้อมให้บริการและการเข้าถึง แล้วเลือกตั้งค่าเป็นพร้อมให้บริการและอนุญาตให้ผู้ใช้สั่งจองล่วงหน้า
- จากเมนูแบบเลื่อนลงทุกภูมิภาค ให้เลือกประเทศและภูมิภาคที่พร้อมให้บริการ ซึ่งควรแสดงเฉพาะ
United Statesที่คุณกำหนดค่าไว้ก่อนหน้านี้ - เลือกประเทศ แล้วคลิกตั้งค่าเป็นพร้อมให้สั่งจองล่วงหน้าเท่านั้น
- คลิกบันทึก
โปรดทราบว่าคุณยังไม่ได้เพิ่มข้อเสนอการสั่งจองล่วงหน้าลงในตัวเลือกการซื้อ ขั้นตอนถัดไปคือการเพิ่มข้อเสนอการสั่งจองล่วงหน้า
เพิ่มข้อเสนอการสั่งจองล่วงหน้า
- เปิดแอปตัวอย่างใน Google Play Console แล้วไปที่สร้างรายได้ด้วย Play > ผลิตภัณฑ์ > ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว
- ในหน้าผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว ให้คลิกเพิ่มข้อเสนอ > สั่งจองล่วงหน้าสำหรับผลิตภัณฑ์ (
upcoming_movie_1) ซึ่งจะเปิดหน้าเพิ่มการสั่งจองล่วงหน้า - ป้อนรายละเอียดการสั่งจองล่วงหน้า
- รหัสการสั่งจองล่วงหน้า: ป้อน
preorder-offer-1 - (ไม่บังคับ) เพิ่มส่วนลด: คุณเลือกได้ว่าจะไม่ใช้ส่วนลด ใช้ส่วนลดเป็นเปอร์เซ็นต์ หรือใช้ส่วนลดสุทธิ เลือกไม่มีเพื่อวัตถุประสงค์ของโค้ดแล็บนี้
- (ไม่บังคับ) แท็ก: เพิ่มแท็กที่เกี่ยวข้อง
- วันที่และเวลาเริ่มต้น: ตั้งวันที่เป็นเวลาอย่างน้อย 3 วันในอนาคต
- วันที่และเวลาสิ้นสุด: ตั้งวันที่ซึ่งอยู่หลังวันที่เริ่มต้นอย่างน้อย 24 ชั่วโมง
- ความพร้อมจำหน่ายหลังการสั่งจองล่วงหน้า: เลือกว่าผลิตภัณฑ์จะพร้อมจำหน่ายทันทีหลังจากระยะเวลาสั่งจองล่วงหน้าหรือในวันที่/เวลาที่ระบุในภายหลัง
- (ไม่บังคับ) การรับประกันราคาที่ต่ำกว่า: เลือกตัวเลือกนี้หากต้องการให้ระบบเรียกเก็บเงินจากผู้ใช้ในราคาที่ต่ำที่สุดระหว่างราคาที่สั่งจองล่วงหน้ากับราคา ณ เวลาที่วางจำหน่าย ซึ่งอาจเป็นสิ่งจูงใจที่แข็งแกร่งสำหรับผู้ซื้อในช่วงแรก
- รหัสการสั่งจองล่วงหน้า: ป้อน
- คลิกบันทึก
- เปิดหน้าแก้ไขผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวสำหรับผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว (upcoming_movie_1)
- คลิกเปิดใช้งานสำหรับตัวเลือกการซื้อ (
buy-movie) - คลิกเปิดใช้งานสำหรับข้อเสนอการสั่งจองล่วงหน้า (
preorder-offer-1) ในตัวเลือกการซื้อแบบซื้อ ซึ่งจะเปิดใช้งานข้อเสนอการสั่งจองล่วงหน้าและทำให้ข้อเสนอใช้งานได้ในวันที่คุณกำหนดค่าไว้ก่อนหน้านี้ในรายละเอียดการสั่งจองล่วงหน้า
วิดีโอการสร้างข้อเสนอการสั่งจองล่วงหน้า
วิดีโอต่อไปนี้แสดงขั้นตอนการสร้างข้อเสนอการสั่งจองล่วงหน้าที่อธิบายไว้ก่อนหน้านี้
4. ผสานรวมกับ PBL
หากต้องการผสานรวมแอปกับ Play Billing Library (PBL) ให้ทำตามขั้นตอนต่อไปนี้
- เพิ่มทรัพยากร Dependency ของ Play Billing Library ลงในแอปตัวอย่าง
dependencies { val billing_version = "8.1.0" implementation("com.android.billingclient:billing-ktx:$billing_version") } - เริ่มต้น BillingClient BillingClient คือ SDK ของไคลเอ็นต์ที่อยู่ในแอปและสื่อสารกับ Play Billing Library ข้อมูลโค้ดต่อไปนี้แสดงวิธีเริ่มต้นไคลเอ็นต์การเรียกเก็บเงิน
private BillingClient createBillingClient() { return BillingClient.newBuilder(activity) .enablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()) // For one-time products, add a listener to process and acknowledge the purchases. This will notify // Google the purchase was processed. // For client-only apps, use billingClient.acknowledgePurchase(). // If you have a secure backend, you must acknowledge purchases on your server using the // server-side API. // See https://developer.android.com/google/play/billing/security#acknowledge // In this sample snippet purchases aren't processed. You must // implement your business logic to process and acknowledge the purchases. .setListener((billingResult, purchases) -> {}) .enableAutoServiceReconnection() .build(); } - เชื่อมต่อกับ Google Play ข้อมูลโค้ดต่อไปนี้แสดงวิธีเชื่อมต่อกับ Google Play
/** * Starts the billing connection with Google Play. This method should be called exactly once * before any other methods in this class. * * @param productList The list of products to query for after the connection is established. */ public void startBillingConnection(List<Product> productList) { billingClient.startConnection( new BillingClientStateListener() { @Override public void onBillingSetupFinished(BillingResult billingResult) { if (billingResult.getResponseCode() == BillingResponseCode.OK) { Log.d(TAG, "Billing Client Connection Successful"); queryProductDetails(productList); } else { Log.e(TAG, "Billing Client Connection Failed: " + billingResult.getDebugMessage()); listener.onBillingSetupFailed(billingResult); // Propagate the error to the listener to show a message to the user. } } @Override public void onBillingServiceDisconnected() { Log.e(TAG, "Billing Client Connection Lost"); listener.onBillingError("Billing Connection Lost"); } }); } - ดึงข้อมูลผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว หลังจากผสานรวมแอปกับ PBL แล้ว คุณต้องดึงข้อมูลผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวลงในแอป ข้อมูลโค้ดต่อไปนี้แสดงวิธีดึงข้อมูลผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวในแอป
การดึงข้อมูลผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียว (private void queryProductDetails(List<Product> productList) { QueryProductDetailsParams queryProductDetailsParams = QueryProductDetailsParams.newBuilder().setProductList(productList).build(); billingClient.queryProductDetailsAsync( queryProductDetailsParams, new ProductDetailsResponseListener() { @Override public void onProductDetailsResponse( BillingResult billingResult, QueryProductDetailsResult productDetailsResponse) { if (billingResult.getResponseCode() == BillingResponseCode.OK) { List<ProductDetails> productDetailsList = productDetailsResponse.getProductDetailsList(); listener.onProductDetailsResponse(productDetailsList); } else { Log.e(TAG, "QueryProductDetailsAsync Failed: " + billingResult.getDebugMessage()); listener.onBillingError("Query Products Failed: " + billingResult.getResponseCode()); } } }); }upcoming_movie_1ในตัวอย่างนี้) ในProductDetailsจะให้การตอบกลับที่คล้ายกับต่อไปนี้ โปรดทราบว่ารายละเอียดข้อเสนอการสั่งจองล่วงหน้าจะอยู่ใน{ "productId": "upcoming_movie_1", "type": "inapp", "title": "Purrfect Mayhem: The Final Playback (Movies All Day | Play Samples)", "name": "Purrfect Mayhem: The Final Playback", "description": "Yolo and Thorne must reach the original broadcasting site to initiate the \"Final Playback\" and save the timeline. Follow them through their race against the Clockinators.", "skuDetailsToken": "<---skuDetailsToken--->", "oneTimePurchaseOfferDetails": {}, "oneTimePurchaseOfferDetailsList": [ { "priceAmountMicros": 8500000, "priceCurrencyCode": "USD", "formattedPrice": "$8.50", "offerIdToken": "<---offerIdToken--->", "offerId": "preorder", "purchaseOptionId": "buy-option", "offerTags": [], "validTimeWindow": { "startTimeMillis": 1756771200000, "endTimeMillis": 1785542400000 }, "preorderDetails": { "preorderReleaseTimeMillis": 1785542400000, "preorderPresaleEndTimeMillis": 1785542400000 } } ] }oneTimePurchaseOfferDetailsListรายการนี้มีตัวเลือกการซื้อ 1 รายการ (buy-option) ซึ่งมีการกำหนดค่าข้อเสนอการสั่งจองล่วงหน้าใน Play Console คุณระบุตัวเลือกการซื้อแต่ละรายการได้โดยใช้ offerIdToken ที่ไม่ซ้ำกัน - ดึงโทเค็นข้อเสนอพร้อมรายละเอียดข้อเสนอการสั่งจองล่วงหน้า คุณต้องมีโทเค็นข้อเสนอเพื่อเปิดตัวขั้นตอนการเรียกเก็บเงินในขั้นตอนที่ 6
@Override public void onProductDetailsResponse(List<ProductDetails> productDetailsList) { if (productDetailsList != null && !productDetailsList.isEmpty()) { // Process productDetailsList returned by QueryProductDetailsResult for (ProductDetails productDetails : productDetailsResult.getProductDetailsList()) { for (OneTimePurchaseOfferDetails oneTimePurchaseOfferDetails : productDetails.getOneTimePurchaseOfferDetailsList()) { // Checks if the offer is a preorder offer. if (oneTimePurchaseOfferDetails.getPreorderDetails() != null) { // Process the returned PreorderDetails OneTimePurchaseOfferDetails.PreorderDetails preorderDetails = oneTimePurchaseOfferDetails.getPreorderDetails(); // Get preorder release time in millis. long preorderReleaseTimeMillis = preorderDetails.getPreorderReleaseTimeMillis(); // Get preorder presale end time in millis. long preorderPresaleEndTimeMillis = preorderDetails.getPreorderPresaleEndTimeMillis(); // Get offer ID String offerId = oneTimePurchaseOfferDetails.getOfferId(); // Get the associated purchase option ID if (oneTimePurchaseOfferDetails.getPurchaseOptionId() != null) { String purchaseOptionId = oneTimePurchaseOfferDetails.getPurchaseOptionId(); } } } } } else { Log.e(TAG, "No product details found for " + productId); } } - เปิดตัวขั้นตอนการเรียกเก็บเงิน
/** * Launches the billing flow for the product with the given offer token. * * @param activity The activity instance from which the billing flow will be launched. * @param productDetails The product details of the product to purchase. * @param offerToken The offer token of the product to purchase. * @return The result of the billing flow. */ public void launchPurchase(Activity activity, ProductDetails productDetails, String offerToken) { ImmutableList<BillingFlowParams.ProductDetailsParams> productDetailsParamsList = ImmutableList.of( BillingFlowParams.ProductDetailsParams.newBuilder() .setProductDetails(productDetails) .setOfferToken(offerToken) .build()); BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setProductDetailsParamsList(productDetailsParamsList) .build(); billingClient.launchBillingFlow(activity, billingFlowParams); }
5. ทดสอบตัวเลือกการซื้อ
ก่อนที่จะทำให้ผลิตภัณฑ์แบบเรียกเก็บเงินครั้งเดียวพร้อมใช้งานในแอปที่ใช้งานจริง คุณสามารถทดสอบการผสานรวม PBL โดยใช้ผู้ทดสอบที่ได้รับอนุญาตและ Play Billing Lab
หากต้องการทำความเข้าใจวิธีทดสอบตัวเลือกการซื้อโดยใช้ Play Billing Lab โปรดดู Codelab ปลดล็อกตลาดใหม่ด้วยการกำหนดราคาผลิตภัณฑ์ตามภูมิภาค
6. ขั้นตอนถัดไป
- ดูวิธีวิเคราะห์การเลิกซื้อผลิตภัณฑ์
- ดูวิธีเข้าถึงตลาดใหม่ๆ โดยใช้การกำหนดราคาตามภูมิภาค
- ดูวิธีเพิ่มประสิทธิภาพการผสานรวมการเรียกเก็บเงินใน Play
- อย่าลืมทำตามแนวทางปฏิบัติแนะนำสำหรับการยืนยันและประมวลผลการซื้อในแบ็กเอนด์ที่ปลอดภัยเมื่อผู้ใช้เริ่มซื้อผลิตภัณฑ์เหล่านี้
เอกสารอ้างอิง
7. ยินดีด้วย
ยินดีด้วย คุณได้ไปยังส่วนต่างๆ ของ Google Play Console เพื่อสร้างข้อเสนอการสั่งจองล่วงหน้าสำหรับไอเทมแบบเรียกเก็บเงินครั้งเดียวเรียบร้อยแล้ว ตอนนี้คุณเข้าใจแคตตาล็อกผลิตภัณฑ์ที่ยืดหยุ่นของ Google Play สำหรับการซื้อแบบครั้งเดียวมากขึ้นแล้ว
แบบสำรวจ
ความคิดเห็นของคุณเกี่ยวกับ Codelab นี้มีค่าอย่างยิ่ง โปรดสละเวลาสักครู่เพื่อตอบแบบสำรวจของเรา