驗證程序可能在三種不同的環境中:
- 付款整合商的 Android 應用程式
- 付款整合商的行動網站
- 付款整合商的電腦版網站
無論流程為何,Google 都會將使用者與付款整合商的軟體交給 Google 處理。付款整合商可以選擇向使用者顯示介面,或在已有合適的資料後立即傳回。所有流程都會導致整合商產生 AuthenticationResponse。這個回應會經過簽署並傳回 Google。
行動版和電腦版網站必須遵守 WebRedirect Authentication API 規範,而 Android 應用程式流程則必須符合 Android Authentication API 規範。
整合商應實作 Android APK 解決方案來驗證使用者。這項驗證是不同的形態,但用途與網路驗證提供的驗證相同。
使用者透過 Android 活動,透過付款整合商進行驗證。系統會在連結帳戶時叫用驗證意圖,以便使用者遇到困難。為避免 Android 在驗證期間終止背景 Play,整合商需要在活動主題中加入以下內容。
<item name="android:windowIsTranslucent">true</item>
方法定義
意圖必須具備以下屬性:
方法屬性 | |
---|---|
動作 |
com.google.android.payments.standard.AUTHENTICATE_V1 |
類別 | android.intent.category.DEFAULT |
要求
欄位 | |
---|---|
gspAuthenticationRequest
|
AuthenticationRequest
驗證要求。 |
gspAssociationId
|
string
如果有,整合商會使用這組 ID 來查詢已驗證的使用者的憑證。如果沒有顯示這項資訊,使用者可以選擇變更帳戶識別資訊。 |
回應
使用者完成驗證後,應用程式需要將結果意圖傳回 Google。如果驗證成功,請建立意圖,並將經過加密的編碼 gspAuthenticationResponse 新增為額外項目。接著,將活動結果設為適當的結果程式碼。
...
result.setExtra("gspAuthenticationResponse", gspAuthenticationResponse);
setResult(Activity.RESULT_OK, result);
...
finish();
結果
欄位 | |||||||
---|---|---|---|---|---|---|---|
結果 |
int
|
額外內容
欄位 | |
---|---|
gspAuthenticationResponse |
AuthenticationResponse
驗證回應。這個編碼的值不得超過 1 KB。 |
其他活動要求
支援上述 AUTHENTICATE_V1
動作的活動也必須檢查 API 的呼叫端是否只來自 Google 簽署的應用程式。這有助於防止其他應用程式嘗試叫用您的活動及擷取身分權杖。方法是在 Activity 實作中的 super.onCreate
後,使用提供的 StandardPaymentUtils.verifyCallingActivityIsGoogleSigned
來執行這項操作。
範例如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StandardPaymentsUtils.verifyCallingActivityIsGoogleSigned(this);
....
}
在 authenticate
流程中叫用的所有活動都必須提供含有 windowIsTranslucent=true
的活動主題。這項操作必須使用 AndroidManifest android:theme 屬性才能完成,請勿使用 Context.setTheme()
。以程式輔助方式設定主題時,無法正確設定視窗透明度。Google 會強制啟動第一個活動符合此模式,但所有一併啟動的子活動也必須遵循此模式。否則,第三方開發人員可能無法購買你的產品。