במדריך הזה מוסבר איך לשלב את ממשקי ה-API כדי להציע מערכת חיוב חלופית בלבד (כלומר, ללא אפשרות בחירה של המשתמש) באפליקציות שעומדות בדרישות. למידע נוסף על התוכניות האלה כולל דרישות הסף והיקף גיאוגרפי, אפשר לעיין במאמר מידע על תוכנית חלופית חיוב.
הגדרה של ספריית החיובים ב-Play
מוסיפים את התלות של ספריית החיובים ב-Play לאפליקציה ל-Android. כדי להשתמש ממשקי API של מערכת חיוב חלופית שנדרשים לשימוש בגרסה 6.1 ואילך.
חיבור ל-Google Play
השלבים הראשונים בתהליך השילוב זהים לשלבים שמתוארים כאן המדריך לשילוב חיוב ב-Google Play, עם כמה שינויים אתחול של לקוח החיוב:
- עליך להפעיל שיטה חדשה כדי לציין שהאפליקציה שלך משתמשת רק
מערכת חיוב חלופית:
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. חובה להציג את מסך המידע למשתמשים על ידי קריאה
API של showAlternativeBillingOnlyInformationDialog
לפני שמפעילים את
במערכת חיוב חלופית בכל פעם. אם המשתמש כבר אישר את
תיבת דו-שיח כזו, שימוש ב-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.
}
});
טיפול בתשובה
ה-methods isAlternativeBillingOnlyAvailableAsync(),
showAlternativeBillingOnlyInformationDialog()
שלמעלה, וגם
createAlternativeBillingOnlyReportingDetailsAsync()
עשוי להחזיר
תגובות non-BillingResponseCode.OK במקרה של שגיאות. המומלצים
אופן הטיפול בשגיאות האלה מתואר בהמשך:
ERROR
: זוהי שגיאה פנימית. לא להמשיך בביצוע העסקה. רוצה לנסות שוב?showAlternativeBillingOnlyInformationDialog()
כדי להציג את המידע למשתמש בפעם הבאה שהמשתמש מנסה לבצע רכישה.FEATURE_NOT_SUPPORTED
: ממשקי ה-API של מערכת חיוב חלופית לא נתמכים על ידי חנות Play במכשיר הנוכחי. להמשיך בעיבוד שבוצעו באמצעות מערכת חיוב חלופית. העסקה לא צריך לדווח ל-Google ועל חידושי המינוי שהושפעו למינויים.USER_CANCELED
: לא להמשיך בביצוע העסקה. שיחת טלפוןshowAlternativeBillingOnlyInformationDialog()
שוב כדי להציג את בתיבת דו-שיח עם מידע למשתמש בפעם הבאה שהמשתמש ינסה לבצע רכישה.BILLING_UNAVAILABLE
: העסקה לא כשירה לביצוע חיוב בלבד, ולכן היא לא אמורה להמשיך בתוכנית הזו. הדבר הסיבה לכך היא שהמשתמש לא נמצא במדינה שבה אפשר להשתתף בתוכנית הזו, או החשבון שלך לא נרשם בהצלחה לתוכנית. אם במהלך הסרטון לאחר מכן, יש לבדוק את סטטוס ההרשמה ב-Play Developer Console.DEVELOPER_ERROR
: יש שגיאה בבקשה. שימוש בהודעה על תוצאות ניפוי הבאגים כדי לזהות ולתקן את השגיאה לפני שממשיכים.NETWORK_ERROR, SERVICE_DISCONNECTED, SERVICE_UNAVAILABLE
: אלה שגיאות זמניות שמומלץ לנסות שוב. במקרה שלSERVICE_DISCONNECTED
ייצור מחדש חיבור עם Google Play לפני מתבצע ניסיון חוזר.
בדיקה של מערכת החיוב החלופית
צריך להשתמש בבודקי הרישיונות כדי לבדוק את השילוב של מערכת החיוב החלופית. שלך לא יחויבו עבור עסקאות שבוצעו על ידי בודקי הרישיון. חשבונות. מידע נוסף זמין במאמר בדיקה של החיוב על רכישות באפליקציות באמצעות רישוי אפליקציה על הגדרה של בודקי רישיונות.
השלבים הבאים
כשתסיימו לשלב באפליקציה, אתם מוכנים לשלב הקצה העורפי.