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

אנדרה צ'יפריאני בנדרה
אנדרה צ'יפריאני בנדרה

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

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

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

הערה: מאמר זה עוסק בשילוב של האפליקציה ל-Android. אם אתם משתמשים ב-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' נשלח עם 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, תצטרכו לשנות את ההפניה ל-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, ולהבין את המושגים שלהם לפני שמשלבים אותם באפליקציה בסביבת הייצור.