Hướng dẫn này mô tả cách tích hợp với các API để hỗ trợ việc chào bán bên ngoài trong các ứng dụng và khu vực đủ điều kiện. Để tìm hiểu thêm về chương trình chào bán bên ngoài bao gồm các điều kiện tham gia và phạm vi địa lý. yêu cầu của chương trình.
Thiết lập Thư viện Play Billing
Để sử dụng API chào bán bên ngoài, thêm phần phụ thuộc Thư viện Play Billing phiên bản 6.2.1 trở lên vào ứng dụng Android của bạn. Nếu bạn cần di chuyển từ một phiên bản cũ, hãy làm theo các hướng dẫn trong hướng dẫn di chuyển trước khi triển khai chào bán bên ngoài.
Kết nối với Google Play
Các bước đầu tiên trong quy trình tích hợp cũng giống như các bước được mô tả trong
hướng dẫn tích hợp thanh toán, kèm theo một vài sửa đổi khi
khởi chạy BillingClient
:
- Bạn cần gọi một phương thức mới để cho biết rằng bạn muốn sử dụng
ưu đãi:
enableExternalOffer
.
Ví dụ sau minh hoạ việc khởi động BillingClient
với một số điểm sửa đổi:
Kotlin
var billingClient = BillingClient.newBuilder(context)
.enableExternalOffer()
.build()
Java
private BillingClient billingClient = BillingClient.newBuilder(context)
.enableExternalOffer()
.build();
Sau khi khởi động BillingClient
, bạn cần thiết lập kết nối với Google Play theo mô tả trong hướng dẫn tích hợp.
Kiểm tra tính khả dụng
Ứng dụng của bạn nên xác nhận rằng ưu đãi bên ngoài là có sẵn bằng cách gọi điện
isExternalOfferAvailableAsync
.
API này trả về BillingResponseCode.OK
nếu có ưu đãi bên ngoài.
Xem bài viết xử lý phản hồi để biết thông tin chi tiết về cách ứng dụng của bạn
phản hồi các mã phản hồi khác.
Kotlin
billingClient.isExternalOfferAvailableAsync(
object : ExternalOfferAvailabilityListener {
override fun onExternalOfferAvailabilityResponse(
billingResult: BillingResult) {
if (billingResult.responseCode != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors,
// handling external offers unavailable, etc.
return
}
// External offers are available. Continue with steps in the
// guide.
})
Java
billingClient.isExternalOfferAvailableAsync(
new ExternalOfferAvailabilityListener() {
@Override
public void onExternalOfferAvailabilityResponse(
BillingResult billingResult) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors,
// handling external offers being unavailable, etc.
return;
}
// External offers are available. Continue with steps in the
// guide.
}
});
Chuẩn bị mã thông báo giao dịch bên ngoài
Để báo cáo giao dịch bên ngoài cho Google Play, bạn phải có
mã giao dịch được tạo từ Thư viện Play Billing. Trang bên ngoài mới
mã thông báo giao dịch phải được tạo mỗi khi người dùng truy cập vào một
trang web của bạn thông qua API chào bán bên ngoài. Bạn có thể thực hiện việc này bằng cách gọi
createExternalOfferReportingDetailsAsync
. Mã thông báo này phải là
được tạo ngay trước khi người dùng được chuyển ra ngoài ứng dụng. Phải
không bao giờ được lưu vào bộ nhớ đệm và tạo một mã mới mỗi khi người dùng được chuyển hướng
bên ngoài ứng dụng.
Kotlin
billingClient.createExternalOfferReportingDetailsAsync(
object : ExternalOfferReportingDetailsListener {
override fun onExternalOfferReportingDetailsResponse(
billingResult: BillingResult,
externalOfferReportingDetails: ExternalOfferReportingDetails?) {
if (billingResult.responseCode != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
return
}
val externalTransactionToken =
externalOfferReportingDetails?.externalTransactionToken
// Persist the transaction token locally. Pass it to the external
// website when showExternalOfferInformationDialog is called.
}
})
Java
billingClient.createExternalOfferReportingDetailsAsync(
new ExternalOfferReportingDetailsListener() {
@Override
public void onExternalOfferReportingDetailsResponse(
BillingResult billingResult,
@Nullable ExternalOfferReportingDetails
externalOfferReportingDetails) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
return;
}
String transactionToken =
externalOfferReportingDetails.getExternalTransactionToken();
// Persist the external transaction token locally. Pass it to the
// external website when showExternalOfferInformationDialog is
// called.
}
});
Hộp thoại thông tin dành cho người dùng
Để tích hợp với ưu đãi bên ngoài, ứng dụng đủ điều kiện của bạn phải hiển thị thông tin
màn hình giúp người dùng hiểu rằng họ sắp được chuyển hướng ra ngoài
ứng dụng đến một trang web bên ngoài. Màn hình thông tin phải được hiển thị cho người dùng bằng
gọi API showExternalOfferInformationDialog
trước khi liên kết với một
nội dung chào bán bên ngoài.
Kotlin
// An activity reference from which the external offers information dialog
// will be launched.
val activity : Activity = ...;
val listener : ExternalOfferInformationDialogListener =
ExternalOfferInformationDialogListener {
override fun onExternalOfferInformationDialogResponse(
billingResult: BillingResult){
// Check billingResult
}
}
val billingResult = billingClient.showExternalOfferInformationDialog(
activity, listener)
Java
// An activity reference from which the external offers information dialog
// will be launched.
Activity activity = ...;
ExternalOfferInformationDialogListener listener =
new ExternalOfferInformationDialogListener() {
@Override
public void onExternalOfferInformationDialogResponse(
BillingResult billingResult) {
if (billingResult.responseCode != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
}
// Open the external website, passing along the external transaction
// token as a URL parameter. If the user purchases an item, be sure
// to report the transaction to Google Play.
}
}
BillingResult billingResult =
billingClient.showExternalOfferInformationDialog(activity, listener);
Nếu phương thức này trả về BillingResponseCode.OK
, thì ứng dụng của bạn có thể tiếp tục
đưa người dùng đến trang web bên ngoài. Nếu phương thức này trả về
BillingResponseCode.USER_CANCELED
, ứng dụng của bạn không được tiếp tục mở
của bạn.
Báo cáo giao dịch cho Google Play
Tất cả giao dịch bên ngoài đều phải được báo cáo cho Google Play
bằng cách gọi API Nhà phát triển Google Play từ phần phụ trợ. Giao dịch bên ngoài
phải được báo cáo trong khi cung cấp
externalTransactionToken
có được bằng cách sử dụng
API createExternalOfferReportingDetailsAsync
. Nếu người dùng thực hiện nhiều
các giao dịch mua hàng, bạn có thể sử dụng cùng một
externalTransactionToken
để báo cáo từng giao dịch mua. Để tìm hiểu cách báo cáo
giao dịch, hãy xem hướng dẫn tích hợp phần phụ trợ.
Xử lý phản hồi
Khi xảy ra lỗi, các phương thức isExternalOfferAvailableAsync
,
createExternalOfferReportingDetailsAsync
và
showExternalOfferInformationDialog
có thể trả về các phản hồi khác với
BillingResponseCode.OK
. Hãy cân nhắc xử lý các mã phản hồi này như sau:
ERROR
: Đây là lỗi nội bộ. Đừng tiếp tục giao dịch hoặc mở trang web bên ngoài. Thử lại bằng cách gọishowExternalOfferInformationDialog()
để hiển thị thông tin cho người dùng vào lần tiếp theo bạn cố gắng hướng người dùng ra ngoài .FEATURE_NOT_SUPPORTED
: API chào bán bên ngoài không được hỗ trợ bởi Cửa hàng Play trên thiết bị hiện tại. Đừng tiếp tục giao dịch hoặc mở trang web bên ngoài.USER_CANCELED
: Không tiếp tục mở trang web bên ngoài. Gọi điệnshowExternalOfferInformationDialog()
một lần nữa để hiển thị thông tin cho người dùng vào lần tiếp theo bạn cố gắng hướng người dùng ra ngoài ứng dụng.BILLING_UNAVAILABLE
: Giao dịch không đủ điều kiện cho ưu đãi bên ngoài và do đó không nên tiếp tục theo chương trình này. Điều này là do người dùng không ở quốc gia đủ điều kiện để tham gia chương trình này hoặc tài khoản của bạn chưa đăng ký tham gia chương trình. Nếu có, hãy kiểm tra trạng thái đăng ký của bạn trong Play Console.DEVELOPER_ERROR
: Yêu cầu này gặp phải lỗi. Hãy sử dụng thông báo gỡ lỗi để xác định và sửa lỗi trước khi tiếp tục.NETWORK_ERROR, SERVICE_DISCONNECTED, SERVICE_UNAVAILABLE
: Đây là lỗi tạm thời cần được xử lý bằng chính sách thử lại thích hợp. Trong trường hợpSERVICE_DISCONNECTED
, hãy thiết lập lại kết nối với Google Play trước khi thử lại.
Thử nghiệm ưu đãi bên ngoài
Bạn nên sử dụng nhân viên kiểm thử được cấp phép để kiểm thử việc tích hợp chào bán bên ngoài. Bạn sẽ không được lập hoá đơn cho các giao dịch do người kiểm thử được cấp phép tài khoản. Xem bài viết Thử nghiệm tính năng thanh toán trong ứng dụng bằng quy trình cấp phép ứng dụng để biết thêm thông tin thông tin về cách định cấu hình nhân viên kiểm thử được cấp phép.
Các bước tiếp theo
Sau khi hoàn tất quy trình tích hợp trong ứng dụng, bạn đã sẵn sàng tích hợp phần phụ trợ.