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

האימות יכול להתרחש בשלוש סביבות שונות:

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

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

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