שימוש בחיוב ב-Play במסגרת הפעילות המהימנה באינטרנט

בנוסף לאפשרות למכור באפליקציה מוצרים דיגיטליים ומינויים בחנות Play, חיוב ב-Google Play מציע כלים לניהול הקטלוג, המחירים והמינויים, דוחות שימושיים ותהליך תשלום שמבוסס על חנות Play ומוכרת למשתמשים. היא גם דרישה לאפליקציות שפורסמו ב-Play Store ומוכרות מוצרים דיגיטליים.

גרסה 88 של Chrome תשוחרר עם גרסת טרום-השקה ל-Android, שמאפשרת לשלב את Trusted Web Activities עם Payment Request API ו-Digital Goods API כדי להטמיע תהליכי רכישה דרך החיוב ב-Google Play. אנחנו צופים שגרסת הניסיון הזו תהיה זמינה גם ל-ChromeOS בגרסה 89.

כדי להקל על השילוב באפליקציה ל-Android, צוות Trusted Web Activity מציג ספריית תוספים ל-android-browser-helper. במדריך הזה נסביר מהם השינויים הנדרשים כדי לשלב את הספרייה הזו באפליקציה קיימת.

הערה: המאמר הזה עוסק בשילוב של אפליקציית Android. אם אתם משתמשים ב-Bubblewrap כדי לפתח את האפליקציה, תוכלו להשתמש בכלי כדי לעדכן את האפליקציה. אפשר לעקוב אחרי ההטמעה ב-Bubblewrap בבעיה הזו. המדריך הזה מיועד למפתחים שלא משתמשים ב-Bubblewrap כדי לעדכן את האפליקציה שלהם.

build.gradle

ספריית התוסף לחיוב עצמה תלויה בגרסה 2.1.0 של android-browser-helper. צריך לוודא שהאפליקציה משתמשת בגרסה שווה או חדשה יותר.

תצטרכו גם להוסיף הצהרת הטמעה לספריית התוסף לחיוב:

dependencies {
    ...
    implementation 'com.google.androidbrowserhelper:androidbrowserhelper:2.1.0'
    implementation 'com.google.androidbrowserhelper:billing:1.0.0-alpha05'
}

DelegationService.java

הספרייה android-browser-helper מגיעה עם DelegationService שמוגדר כברירת מחדל, ואפשר להשתמש בו ישירות באפליקציות. כשמשתמשים בתוסף לחיוב, צריך גרסה מותאמת אישית מעט של DelegationService.

כדי לעשות זאת, צריך ליצור מחלקה משלכם של DelegationService שמרחיבה את המחלקה המקורית ומחליפת את onCreate(). ב-onCreate(), צריך להוסיף קריאה ל-method אחת שמרשמת את האפליקציה כ-handler ל-Digital Goods API:

package com.example.yourapp;

import com.google.androidbrowserhelper.playbilling.digitalgoods.DigitalGoodsRequestHandler;
import com.google.androidbrowserhelper.trusted.DelegationService;

public class DelegationService
        extends com.google.androidbrowserhelper.trusted.DelegationService {
    @Override
    public void onCreate() {
        super.onCreate();
        registerExtraCommandHandler(new DigitalGoodsRequestHandler(getApplicationContext()));
    }
}

AndroidManifest.xml

ב-Android Manifest, תצטרכו לשנות את ההפניה ל-Delegation Library להטמעה שלכם. בהצהרה המתאימה של service, מחליפים את com.google.androidbrowserhelper.trusted.DelegationService בכיתה החדשה שיצרתם.

<service
    android:name=".DelegationService"
    android:exported="true">

    <intent-filter>
        <action android:name="android.support.customtabs.trusted.TRUSTED_WEB_ACTIVITY_SERVICE"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</service>

בספריית החיוב יש גם שני רכיבים חדשים שצריך להוסיף למניפסט של Android: Service שהדפדפן יכול להתחבר אליו ולבדוק אם האפליקציה תומכת בתשלום, ו-Activity שמטפל בתהליך התשלום עצמו:

<activity
    android:name="com.google.androidbrowserhelper.playbilling.provider.PaymentActivity"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:configChanges="keyboardHidden|keyboard|orientation|screenLayout|screenSize"
    android:exported="true">
    <intent-filter>
        <action android:name="org.chromium.intent.action.PAY" />
    </intent-filter>
    <meta-data
        android:name="org.chromium.default_payment_method_name"
        android:value="https://play.google.com/billing" />
</activity>
<!-- This service checks who calls it at runtime. -->
<service
    android:name="com.google.androidbrowserhelper.playbilling.provider.PaymentService"
    android:exported="true" >
    <intent-filter>
        <action android:name="org.chromium.intent.action.IS_READY_TO_PAY" />
    </intent-filter>
</service>

מידע נוסף על Digital Goods API ועל חיוב ב-Google Play

במאמר הזה פירטנו את השלבים הנדרשים במיוחד באפליקציה ל-Android שמשתמשת ב-Trusted Web Activity, אבל לממשק Google Play Billing API יש מונחים משלו והוא כולל רכיבי לקוח ורכיבי קצה עורפי. מומלץ מאוד לקרוא את המסמכים בנושא חיוב ב-Google Play ובנושא Digital Goods API ולהבין את המושגים שלהם לפני שמשלבים את ה-API באפליקציה בסביבת הייצור.