API Android APK Top Up

La recharge peut être effectuée 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 implémente une interface utilisateur qui semble familière à l'utilisateur, mais le flux doit être spécifiquement dédié à l'approvisionnement de l'utilisateur, ce qui signifie que celui-ci doit être redirigé via un processus de rechargement de crédit plutôt que dans une interface utilisateur à usage général, au cours de laquelle il devrait avoir recours à une procédure de recharge de crédit.

Tous les flux font en sorte que l'intégrateur génère une réponse TopUpRedirectResponse. 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 Web Top Up, tandis que le flux de l'application Android doit respecter la spécification de l'API Android Top Up.

Les intégrateurs doivent implémenter une solution APK Android pour authentifier l'utilisateur, puis le diriger vers un flux leur permettant de recharger leur solde. Il s'agit d'une modalité différente, mais ayant le même objectif que la recharge de crédit fournie par la Crédit Web.

Un utilisateur accède au flux de l'application d'intégrateur de paiement via une activité Android. L'intent de recharge de crédit peut être appelé directement à partir d'une application Play dans laquelle l'utilisateur a l'intention d'effectuer un achat. Pour empêcher Android d'arrêter Play en arrière-plan pendant la recharge de crédit, 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.TOPUP_V1
Catégorie android.intent.category.DEFAULT

Requête

Champs
gspTopUpRequest TopUpRedirectRequest

Demande de recharge de crédit.

gspAssociationId string

Contient un identifiant que l'intégrateur utilise pour rechercher les identifiants du compte que l'utilisateur complète. Il s'agit de l'ID d'association envoyé lors de l'association de comptes dans la demande AssociateAccountRequest.

Réponse

Une fois que l'utilisateur a terminé le flux de recharge de crédit, votre application doit renvoyer un intent de résultat à Google. Si la recharge aboutit, créez un intent et ajoutez les éléments gspTopUpResponse et redirectRequestId encodés et chiffrés en tant qu'extras. Ensuite, définissez le résultat de l'activité sur le code de résultat approprié.

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

Résultat

Champs
résultat int

Activity.RESULT_OK
L'approvisionnement a bien été effectué.
Activity.RESULT_CANCELED L'utilisateur a annulé le flux manuellement et devrait l'être également.
Activity.RESULT_FIRST_USER La recharge 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
gspTopUpResponse TopUpRedirectResponse

OBLIGATOIRE: réponse de recharge de crédit. Cette valeur encodée ne doit pas dépasser 1 Ko.
redirectRequestId string

OBLIGATOIRE: requestId envoyé dans la demande de paiement de redirection initiale ou qui a initié la demande. Google vérifiera qu'il s'agit du requestId envoyé. Sinon, le flux "Complete Redirect" échouera.

Autres exigences liées aux activités

L'activité compatible avec l'action TOPUP_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 données utilisateur. 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 de recharge de crédit 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.