ממשק API לאימות APK של Android

האימות יכול להתבצע בשלוש סביבות שונות:

  • האפליקציה ל-Android של כלי לשילוב תשלומים
  • האתר לנייד של הכלי לשילוב תשלומים
  • האתר למחשב של משלב תשלומים

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

באתרים לנייד ולמחשב צריך להשתמש ב-WebRedirect Authentication API מפרט, ואילו זרימת האפליקציה ל-Android חייבת להיות תואמת ל-Android. מפרט API לאימות.

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

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

<item name="android:windowIsTranslucent">true</item>

הגדרת השיטה

ל-Intent צריכים להיות המאפיינים הבאים:

מאפייני השיטה
פעולה com.google.android.payments.standard.AUTHENTICATE_V1
קטגוריה android.intent.category.DEFAULT

בקשה

שדות
gspAuthenticationRequest AuthenticationRequest

בקשת אימות.

gspAssociationId string

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

תשובה

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

...
result.setExtra("gspAuthenticationResponse", gspAuthenticationResponse);
setResult(Activity.RESULT_OK, result);
...
finish();

תוצאה

שדות
תוצאה int

Activity.RESULT_OK
האימות הצליח.
Activity.RESULT_CANCELED המשתמש ביטל את התהליך באופן ידני והתהליך אמור להיות הופסק.
Activity.RESULT_FIRST_USER האימות נכשל מסיבה חמורה, והתהליך אמור להיות בוטל. שרת IE החזיר תגובת HTTP 500 במהלך ההתחברות.

תוספות

שדות
gspAuthenticationResponse AuthenticationResponse

תגובת אימות. הערך המקודד הזה לא יכול לחרוג מ-1KB.

דרישות אחרות לגבי פעילות

הפעילות שתומכת בפעולה AUTHENTICATE_V1 שצוינה למעלה חייבת כמו כן, לבדוק שהקוראים של ה-API מגיעים רק מאפליקציות שחתומות על ידי Google. כך תמנע מאפליקציות אחרות לנסות להפעיל את הפעילות שלך לאחזר אסימוני זהות. כדי לעשות זאת אפשר להשתמש StandardPaymentUtils.verifyCallingActivityIsGoogleSigned מיד אחרי super.onCreate תוך פעילות יישום בפועל.

לדוגמה:


@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  StandardPaymentsUtils.verifyCallingActivityIsGoogleSigned(this);

  ....
}

כל הפעילויות שמופעלות בתהליך של authenticate חייבות לכלול פעילות עיצוב עם windowIsTranslucent=true. צריך לעשות זאת עם AndroidManifest android:theme מאפיין ולא נעשה בו שימוש ב-Context.setTheme(). מבחינה פרוגרמטית, הגדרת העיצוב לא פועלת כמו שצריך בחלון שקופה. Google תאכוף את הפעילות הראשונה שתושק לפי אבל כל פעילויות המשנה שיופעלו גם הן חייבות לפעול לפי דפוס. אחרת, יכול להיות שרכישות ממפתחים מצד שלישי לא יפעלו.