คู่มือนี้อธิบายวิธีผสานรวม API เพื่อเสนอการเรียกเก็บเงินระบบอื่นเท่านั้น (กล่าวคือ แบบไม่ให้ผู้ใช้ตัดสินใจ) ในแอปที่มีสิทธิ์ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับโปรแกรมเหล่านี้ รวมถึงข้อกำหนดของการได้รับสิทธิ์และขอบเขตทางภูมิศาสตร์ โปรดดูเกี่ยวกับ การเรียกเก็บเงิน
การตั้งค่า Play Billing Library
เพิ่มการพึ่งพา Play Billing Library ลงในแอป Android วิธีใช้ API การเรียกเก็บเงินระบบอื่นที่คุณต้องใช้ในเวอร์ชัน 6.1 ขึ้นไป
เชื่อมต่อกับ Google Play
ขั้นตอนแรกในกระบวนการผสานรวมจะเหมือนกับที่อธิบายไว้ใน คู่มือการผสานรวม Google Play Billing โดยมีการแก้ไขเล็กน้อย การเริ่มต้น BillingClient
- คุณต้องเรียกใช้เมธอดใหม่เพื่อระบุว่าแอปของคุณใช้เฉพาะ
ระบบการเรียกเก็บเงินระบบอื่น:
enableAlternativeBillingOnly
ตัวอย่างต่อไปนี้แสดงการเริ่มต้น BillingClient
ด้วยรายการเหล่านี้
การแก้ไข:
Kotlin
var billingClient = BillingClient.newBuilder(context)
.enableAlternativeBillingOnly()
.build()
Java
private BillingClient billingClient = BillingClient.newBuilder(context)
.enableAlternativeBillingOnly()
.build();
หลังจากเริ่มต้น BillingClient
แล้ว คุณจะต้องสร้างการเชื่อมต่อเพื่อ
Google Play ตามที่อธิบายไว้ในคู่มือการผสานรวม
กำลังตรวจสอบห้องว่าง
แอปของคุณควรยืนยันว่าการเรียกเก็บเงินระบบอื่นพร้อมใช้งานผ่านการโทรเท่านั้น
isAlternativeBillingOnlyAvailableAsync
API นี้จะส่งคืน BillingResponseCode.OK ถ้าการเรียกเก็บเงินระบบอื่นเท่านั้นคือ พร้อมใช้งาน โปรดดูรายละเอียดเกี่ยวกับวิธีที่แอปควรทำในการจัดการการตอบกลับ ตอบสนองโค้ดตอบกลับอื่นๆ
Kotlin
billingClient.isAlternativeBillingOnlyAvailableAsync(object:
AlternativeBillingOnlyAvailabilityListener {
override fun onAlternativeBillingOnlyAvailabilityResponse(
billingResult: BillingResult) {
if (billingResult.responseCode != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors,
// handling alternative billing only being unavailable, etc.
return
}
// Alternative billing only is available. Continue with steps in
// the guide.
}
});
Java
billingClient.isAlternativeBillingOnlyAvailable(
new AlternativeBillingOnlyAvailabilityListener() {
@Override
public void onAlternativeBillingOnlyAvailabilityResponse(
BillingResult billingResult) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors,
// handling alternative billing only being unavailable,
// etc.
return;
}
// Alternative billing only is available. Continue with steps in
// the guide.
}
});
กล่องโต้ตอบข้อมูลสำหรับผู้ใช้
หากต้องการผสานรวมกับการเรียกเก็บเงินระบบอื่นเท่านั้น แอปที่มีสิทธิ์ของคุณต้องแสดง
หน้าจอข้อมูลซึ่งช่วยให้ผู้ใช้ทราบว่าจะไม่มีการจัดการการเรียกเก็บเงิน
โดย Google Play หน้าจอข้อมูลจะต้องแสดงต่อผู้ใช้ด้วยการเรียก
showAlternativeBillingOnlyInformationDialog
API ก่อนเริ่ม
ขั้นตอนการเรียกเก็บเงินระบบอื่นในแต่ละครั้ง หากผู้ใช้รับทราบ
กล่องโต้ตอบ การใช้ API นี้มักจะไม่ส่งผลให้กล่องโต้ตอบแสดงขึ้น
อีกครั้ง อาจมีบางครั้งที่กล่องโต้ตอบแสดงต่อผู้ใช้อีกครั้งในสถานการณ์ต่างๆ
เช่น เมื่อผู้ใช้ล้างแคชในอุปกรณ์
Kotlin
// An activity reference from which the alternative billing only information
// dialog will be launched.
val activity : Activity = ...;
val listener : AlternativeBillingOnlyInformationDialogListener =
AlternativeBillingOnlyInformationDialogListener {
override fun onAlternativeBillingOnlyInformationDialogResponse(
billingResult: BillingResult) {
// check billingResult
}
}
val billingResult =
billingClient.showAlternativeBillingOnlyInformationDialog(activity,
listener)
Java
// An activity reference from which the alternative billing only information
// dialog will be launched.
Activity activity = ...;
AlternativeBillingOnlyInformationDialogListener listener =
new AlternativeBillingOnlyInformationDialogListener() {
@Override
public void onAlternativeBillingOnlyInformationDialogResponse(
BillingResult billingResult) {
// check billingResult
}
};
BillingResult billingResult =
billingClient.showAlternativeBillingOnlyInformationDialog(activity,
listener);
หากเมธอดนี้แสดงเป็น BillingResponseCode.OK แสดงว่าแอปของคุณสามารถดำเนินการต่อได้ พร้อมทำธุรกรรม ในกรณีที่เป็น BillingResponseCode.USER_CANCELED แอปของคุณควรเรียก showAlternativeBillingOnlyInformationDialog เพื่อแสดง แก่ผู้ใช้อีกครั้ง สำหรับโค้ดตอบกลับอื่นๆ โปรดดูที่การจัดการการตอบกลับ
การรายงานธุรกรรมไปยัง Google Play
ต้องรายงานธุรกรรมทั้งหมดที่ดำเนินการผ่านระบบการเรียกเก็บเงินระบบอื่น
ไปยัง Google Play โดยเรียกใช้ Google Play Developer API จากแบ็กเอนด์ของคุณภายใน
24 ชั่วโมง โดยให้ externalTransactionToken
ที่ได้รับจากการใช้
API ที่อธิบายไว้ด้านล่าง ควรสร้าง externalTransactionToken ใหม่สำหรับแต่ละ
การซื้อครั้งเดียว การสมัครใช้บริการใหม่แต่ละครั้ง และสำหรับการอัปเกรด/ดาวน์เกรดเป็น
ที่มีอยู่ ในการเรียนรู้วิธีรายงานธุรกรรม
ได้รับ externalTransactionToken
โปรดดูคู่มือการผสานรวมแบ็กเอนด์
Kotlin
billingClient.createAlternativeBillingOnlyReportingDetailsAsync(object:
AlternativeBillingOnlyReportingDetailsListener {
override fun onAlternativeBillingOnlyTokenResponse(
billingResult: BillingResult,
alternativeBillingOnlyReportingDetails:
AlternativeBillingOnlyReportingDetails?) {
if (billingResult.responseCode != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
return
}
val externalTransactionToken =
alternativeBillingOnlyReportingDetails?
.externalTransactionToken
// Send transaction token to backend and report to Google Play.
}
});
Java
billingClient.createAlternativeBillingOnlyReportingDetailsAsync(
new AlternativeBillingOnlyReportingDetailsListener() {
@Override
public void onAlternativeBillingOnlyTokenResponse(
BillingResult billingResult,
@Nullable AlternativeBillingOnlyReportingDetails
alternativeBillingOnlyReportingDetails) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
return;
}
String transactionToken =
alternativeBillingOnlyReportingDetails
.getExternalTransactionToken();
// Send transaction token to backend and report to Google Play.
}
});
การจัดการการตอบกลับ
วิธีการข้างต้น isAlternativeBillingOnlyAvailableAsync(),
showAlternativeBillingOnlyInformationDialog()
และ
createAlternativeBillingOnlyReportingDetailsAsync()
อาจกลับมา
non-BillingResponseCode.OK ในกรณีที่เกิดข้อผิดพลาด คำแนะนำ
การจัดการข้อผิดพลาดจะอธิบายไว้ด้านล่างนี้
ERROR
: นี่เป็นข้อผิดพลาดภายใน โปรดอย่าทำธุรกรรม โปรดลองอีกครั้งโดยการโทรshowAlternativeBillingOnlyInformationDialog()
เพื่อแสดงข้อมูล กล่องโต้ตอบกับผู้ใช้ในครั้งถัดไปที่ผู้ใช้ พยายามทำการซื้อเลยFEATURE_NOT_SUPPORTED
: ไม่รองรับ API การเรียกเก็บเงินระบบอื่นโดย Play Store ในอุปกรณ์ที่ใช้อยู่ ดําเนินการประมวลผล ผ่านระบบการเรียกเก็บเงินระบบอื่น ธุรกรรมไม่ได้ จะต้องรายงานให้ Google รวมถึงการต่ออายุใดๆ ที่ได้รับผลกระทบ การสมัครใช้บริการUSER_CANCELED
: อย่าทำธุรกรรมต่อ โทรshowAlternativeBillingOnlyInformationDialog()
อีกครั้งเพื่อแสดง ต่อไปเมื่อผู้ใช้พยายามทำ การซื้อBILLING_UNAVAILABLE
: ธุรกรรมนี้ไม่มีสิทธิ์สำหรับตัวเลือกอื่น การเรียกเก็บเงินเท่านั้น ดังนั้นจึงไม่ควรดำเนินการต่อภายใต้โปรแกรมนี้ นี่คือ เนื่องจากผู้ใช้ไม่ได้อยู่ในประเทศที่มีสิทธิ์เข้าร่วมโปรแกรมนี้ หรือ บัญชีของคุณยังลงทะเบียนเข้าร่วมโปรแกรมไม่สำเร็จ หากเป็น หลังจากนั้น ให้ตรวจสอบสถานะการลงทะเบียนของคุณใน Play Developer ConsoleDEVELOPER_ERROR
: มีข้อผิดพลาดเกี่ยวกับคำขอ ใช้ข้อความแก้ไขข้อบกพร่อง เพื่อระบุและแก้ไขข้อผิดพลาดก่อนดำเนินการต่อNETWORK_ERROR, SERVICE_DISCONNECTED, SERVICE_UNAVAILABLE
: ต่อไปนี้คือ ข้อผิดพลาดชั่วคราวที่ควรลองอีกครั้ง ในกรณีที่SERVICE_DISCONNECTED
สร้างการเชื่อมต่อกับ Google Play อีกครั้งก่อนวันที่ กำลังลองอีกครั้ง
ทดสอบการเรียกเก็บเงินระบบอื่น
ควรใช้ผู้ทดสอบใบอนุญาตเพื่อทดสอบการผสานรวมการเรียกเก็บเงินระบบอื่น คุณ จะไม่มีการออกใบแจ้งหนี้สำหรับธุรกรรมที่ดำเนินการโดยผู้ทดสอบใบอนุญาต บัญชี โปรดดูข้อมูลเพิ่มเติมที่ทดสอบการเรียกเก็บเงินสำหรับการซื้อในแอปด้วยการอนุญาตให้ใช้สิทธิแอปพลิเคชัน ข้อมูลเกี่ยวกับการกำหนดค่าผู้ทดสอบใบอนุญาต
ขั้นตอนถัดไป
เมื่อเสร็จสิ้นการผสานรวมในแอป คุณก็พร้อมที่จะผสานรวม แบ็กเอนด์