Android APK Authentication API

認証は、次の 3 つの異なる環境で行われます。

  • 決済インテグレータの Android アプリ
  • 決済事業者のモバイルサイト
  • 決済事業者の PC 用ウェブサイト

いずれのフローでも、Google はユーザーの操作を支払い処理チームに引き渡します。 統合しています決済インテグレータは、ユーザーに インターフェースを返すか、すでに適切なデータがあればすぐに返します。 すべてのフローで、インテグレータは AuthenticationResponse を生成します。この レスポンスが署名されて Google に返送されます。

モバイルサイトとデスクトップ ウェブサイトは、WebRedirect Authentication API に準拠している必要があります Android アプリのフローは Android の Authentication API の仕様。

インテグレータは、ユーザーを認証するための Android APK ソリューションを実装する必要があります。 この認証は別のモダリティですが、 Google Cloud によって提供される認証を 認証をご覧ください。

ユーザーは、Android デバイス経由で決済インテグレータで認証を行います。 アクティビティ。 認証インテントは、アカウントの関連付け時に呼び出されます。また、 解決できます。特定の Google Play の残高で 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

Activity.RESULT_OK
認証に成功しました。
Activity.RESULT_CANCELED ユーザーが手動でフローをキャンセルしたので、フローを中止する必要があります。
Activity.RESULT_FIRST_USER 致命的な理由で認証に失敗したため、フローを 中止されました。IE サーバーからログイン時に HTTP 500 応答が返されました。

その他

フィールド
gspAuthenticationResponse AuthenticationResponse

認証レスポンス。エンコードされた値は 1 KB を超えないようにする必要があります。

その他のアクティビティ要件

上記の AUTHENTICATE_V1 アクションをサポートするアクティビティは、 また、API の呼び出し元が、Google によって署名されたアプリケーションからのみ発生することも確認します。 これにより、他のアプリがアクティビティを呼び出そうとしたり、 ID トークンを取得できます。これを行うには、 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 は、最初に起動されるアクティビティがこれに従うことを強制します。 起動されるサブアクティビティもこのパターンに従う パターンです。使用されていない場合、サードパーティ デベロッパーからの購入が動作しない可能性があります。