שימוש בחיוב ב-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: שירות שאליו הדפדפן יכול להתחבר ולבדוק אם האפליקציה תומכת בתשלום, ופעילות שמטפלת בתהליך התשלום עצמו:

<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 שמשתמשת בפעילות מאובטחת באינטרנט, אבל לממשק Google Play Billing API יש מונחים משלו והוא כולל רכיבי לקוח ורכיבי קצה עורפי. מומלץ מאוד לקרוא את המסמכים בנושא חיוב ב-Google Play ואת ה-Digital Goods API ולהבין את המושגים שלהם לפני שמשלבים אותם באפליקציה בסביבת הייצור.