API Android APK Authentication

L'authentification peut s'effectuer dans trois environnements différents:

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

Quel que soit le flux de travail, Google transmet l'interaction utilisateur le logiciel de l'intégrateur. L'intégrateur de paiement peut choisir de présenter à l'utilisateur interface ou renvoyer immédiatement immédiatement s'il dispose déjà des données appropriées. Pour tous les flux, l'intégrateur génère une AuthenticationResponse. Ce est signée et renvoyée à Google.

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

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

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

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

Définition de la méthode

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

Propriétés de la méthode
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 interrogé. S'il n'est pas présent, l'utilisateur a la possibilité de modifier l'identification du compte.

Réponse

Une fois que l'utilisateur a terminé l'authentification, votre application doit envoyer un résultat vos intentions à Google. Si l'authentification réussit, créez un intent et ajoutez-y la réponse gspAuthenticationResponse encodée chiffrée en tant que extra. 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 le flux doit être annulé.
Activity.RESULT_FIRST_USER L'authentification a échoué pour une raison fatale et le flux devrait être annulée. Le serveur 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 concernant l'activité

L'activité compatible avec l'action AUTHENTICATE_V1 mentionnée ci-dessus doit vérifient également que les appelants de l'API ne proviennent que d'applications signées par Google. Cela évitera que d'autres applis essaient d'appeler votre activité et pour récupérer des jetons d'identité. Pour ce faire, utilisez les attributs StandardPaymentUtils.verifyCallingActivityIsGoogleSigned juste après super.onCreate dans votre Activité la mise en œuvre.

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 une activité thème contenant windowIsTranslucent=true. Pour ce faire, utilisez l'attribut android:theme d'AndroidManifest, et que Context.setTheme() n'est pas utilisé. Par programmation, la définition du thème ne fonctionne pas correctement pour la fenêtre la translucidité. Google s'assurera que la première activité lancée suit cette mais toutes les sous-activités également lancées doivent également du modèle. Si ce n'est pas le cas, les achats auprès de développeurs tiers risquent de ne pas fonctionner.