API Android APK Authentication

L'authentification peut avoir lieu dans trois environnements différents:

  • Application Android de l'intégrateur de paiements
  • Site Web mobile de l'intégrateur de paiements
  • Site Web de bureau de l'intégrateur de paiements

Quel que soit le flux, Google transmet l'interaction utilisateur au logiciel de l'intégrateur de paiements. L'intégrateur de paiements peut choisir de présenter une interface à l'utilisateur ou simplement de revenir immédiatement s'il dispose déjà des données appropriées. Dans tous les flux, l'intégrateur génère une réponse AuthenticationResponse. Cette réponse est signée et renvoyée à Google.

Les sites Web pour mobile et pour ordinateur doivent respecter la spécification de l'API WebRedirect Authentication, tandis que le flux d'application Android doit respecter la spécification de l'API Android Authentication.

Les intégrateurs doivent implémenter une solution APK Android pour authentifier les utilisateurs. Cette authentification est une modalité différente, mais le même objectif que l'authentification fournie par l'authentification Web.

Un utilisateur s'authentifie auprès de l'intégrateur de paiement via une activité Android. L'intent d'authentification est appelé lors de l'association du compte et pour les défis utilisateur. Pour empêcher Android d'arrêter Play en arrière-plan lors de l'authentification, l'intégrateur doit inclure les éléments suivants dans le thème de l'activité.

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

Définition de la méthode

L'intent doit avoir les propriétés suivantes:

Propriétés des méthodes
Action com.google.android.payments.standard.AUTHENTICATE_V1
Catégorie android.intent.category.DEFAULT

Requête

Champs
gspAuthenticationRequest AuthenticationRequest

Requête d'authentification.

gspAssociationId string

S'il est présent, il contient un identifiant que l'intégrateur utilise pour rechercher les identifiants de l'utilisateur concerné par la question. Si cet identifiant n'est pas indiqué, l'utilisateur peut modifier l'identification du compte.

Réponse

Une fois que l'utilisateur a terminé l'authentification, votre application doit renvoyer un intent de résultat à Google. Si l'authentification réussit, créez un intent et ajoutez la réponse gspAuthenticationResponse encodée et chiffrée en tant que valeur supplémentaire. Ensuite, définissez le résultat de l'activité sur le code de résultat approprié.

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

Résultat

Champs
résultat int

Activity.RESULT_OK
L'authentification a réussi.
Activity.RESULT_CANCELED L'utilisateur a annulé le flux manuellement et devrait l'être également.
Activity.RESULT_FIRST_USER L'authentification a échoué pour une raison fatale, et le flux devrait être annulé. Le serveur d'IE a renvoyé une réponse HTTP 500 à la connexion.

Bonus

Champs
gspAuthenticationResponse AuthenticationResponse

Réponse d'authentification. Cette valeur encodée ne doit pas dépasser 1 Ko.

Autres exigences liées aux activités

L'activité compatible avec l'action AUTHENTICATE_V1 mentionnée ci-dessus doit également vérifier que les appelants de l'API ne proviennent que d'applications signées par Google. Cela empêchera d'autres applications d'appeler votre activité et de récupérer des jetons d'identité. Pour ce faire, utilisez le StandardPaymentUtils.verifyCallingActivityIsGoogleSigned fourni juste après super.onCreate dans l'implémentation d'Activity.

Voici un exemple :


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

  ....
}

Toutes les activités appelées dans le flux authenticate doivent fournir un thème d'activité avec windowIsTranslucent=true. Cette opération doit être effectuée avec l'attribut AndroidManifest android:theme et non Context.setTheme(). En programmation, la définition du thème ne fonctionne pas correctement pour la translucidité des fenêtres. Google s'assurera que la première activité lancée suit ce schéma, mais toutes les sous-activités qui sont également lancées doivent également suivre ce schéma. Si ce n'est pas le cas, les achats effectués par des développeurs tiers risquent de ne pas fonctionner.