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
|
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.