הנחיות לשילוב בתוך האפליקציה במערכת חיוב חלופית בלבד

במדריך הזה מוסבר איך לשלב את ממשקי ה-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 לפני מתבצע ניסיון חוזר.

בדיקה של מערכת החיוב החלופית

צריך להשתמש בבודקי הרישיונות כדי לבדוק את השילוב של מערכת החיוב החלופית. שלך לא יחויבו עבור עסקאות שבוצעו על ידי בודקי הרישיון. חשבונות. מידע נוסף זמין במאמר בדיקה של החיוב על רכישות באפליקציות באמצעות רישוי אפליקציה על הגדרה של בודקי רישיונות.

השלבים הבאים

כשתסיימו לשלב באפליקציה, אתם מוכנים לשלב הקצה העורפי.