Cette page explique comment utiliser des jetons exemples pour tester votre intégration.
Générer des jetons d'exemple
Pour les intégrations directes, afin de tester le déchiffrement des jetons sur votre serveur, vous pouvez générer des exemples de jetons si vous définissez ENVIRONMENT_TEST lorsque vous construisez une instance PaymentsClient.
Lorsque l'instance PaymentsClient est construite avec l'environnement défini sur ENVIRONMENT_TEST, les appels à loadPaymentData fonctionnent comme d'habitude et demandent à l'utilisateur de sélectionner l'une de ses vraies cartes. Toutefois, il ne renvoie jamais d'informations réelles à partir de la carte sélectionnée. Au lieu de cela, le jeton obtenu a toujours une charge utile constante.
Valider la signature
Les jetons générés dans ENVIRONMENT_TEST sont chiffrés avec votre clé publique de test qui a été envoyée précédemment à Google.
Les jetons sont signés avec les
clés de test de Google. Si vous utilisez Tink, assurez-vous que .fetchSenderVerifyingKeysWith(GooglePaymentsPublicKeysManager.INSTANCE_TEST) est défini lorsque vous créez un objet PaymentMethodTokenRecipient.
Charge utile déchiffrée
Une fois l'exemple de jeton décrypté, vous recevez la charge utile en texte brut. La structure du payload dépend de la carte sélectionnée, c'est-à-dire si elle a été ajoutée à Google Wallet. De plus, la charge utile des cartes tokenisées est différente selon le réseau de la carte. La charge utile pour les cartes non tokenisées est toujours la même, quel que soit le réseau de cartes.
Les trois champs suivants peuvent être différents dans votre charge utile déchiffrée par rapport aux exemples ci-dessous :
messageExpiration: cette valeur est définie une semaine après l'heure actuelle.messageId: cette valeur est générée de manière aléatoire pour chaque charge utile.expirationYear: cette valeur est définie sur cinq ans à compter de l'année en cours.
La structure de la charge utile déchiffrée varie entre les deux versions du protocole, ECv1 et ECv2. Si vous implémentez une nouvelle intégration, la version est ECv2. Si vous n'êtes pas sûr de la version du protocole, demandez confirmation à votre contact Google.
Carte non tokenisée
Visa
Voici un exemple de charge utile déchiffrée pour les cartes Visa non tokenisées :
ECv2
{
"gatewayMerchantId": "some-merchant-id",
"messageExpiration": "1650574736277",
"messageId": "AH2Ejtc88ZHJ-2aYBQWzHwvp6l0JsCHgxVt8s91A-ZUikaXNbcjsFm6gg9ExeVR-jzIyT-mJvA_ntvfRsDDOH2jnKMjdTtXIJvPt0NBUU45R7-gnjxkx-sI0ldcWvbDHsV0735yFDbWk",
"paymentMethod": "CARD",
"paymentMethodDetails": {
"expirationYear": 2028,
"expirationMonth": 12,
"pan": "4111111111111111",
"authMethod": "PAN_ONLY"
}
}ECv1
{
"messageExpiration": "1507738377032",
"paymentMethod": "CARD",
"messageId": "AH2EjtcHYs1Ye-ZIZuZXd7eNO4QjQfZjBDtP2ti0tob_a5o22lHmGWHsBVYrrSylkFC3ZTsRdvMadQpwOGCIl7XxhTKcfElmgF7UFbcI8CeUZCWRmbTH5s7h69Baqr4FAM735VNThPiP",
"paymentMethodDetails": {
"expirationYear": 2028,
"expirationMonth": 12,
"pan": "4111111111111111"
}
}MasterCard
Voici un exemple de charge utile déchiffrée pour les cartes Mastercard non tokenisées :
ECv2
{
"gatewayMerchantId": "some-merchant-id",
"messageExpiration": "1650574585777",
"messageId": "AH2Ejte23Sp0DBWqKVQ1d8ICVQialPGgXSsTT4NnCjNy3i-jdJg6B_wllO8590dFfrLg16GqGcuSrEPjl-sQZ-K8sKCL62ahwh5kzUv4ggLwioImJmuEuKfAiEQBRW0L8zlo0Nv6LFuk",
"paymentMethod": "CARD",
"paymentMethodDetails": {
"expirationYear": 2028,
"expirationMonth": 12,
"pan": "5555555555554444",
"authMethod": "PAN_ONLY"
}
}ECv1
{
"messageExpiration": "1507738377032",
"paymentMethod": "CARD",
"messageId": "AH2EjtcHYs1Ye-ZIZuZXd7eNO4QjQfZjBDtP2ti0tob_a5o22lHmGWHsBVYrrSylkFC3ZTsRdvMadQpwOGCIl7XxhTKcfElmgF7UFbcI8CeUZCWRmbTH5s7h69Baqr4FAM735VNThPiP",
"paymentMethodDetails": {
"expirationYear": 2028,
"expirationMonth": 12,
"pan": "5555555555554444"
}
}American Express
Voici un exemple de charge utile déchiffrée pour les cartes Amex non tokenisées :
ECv2
{
"gatewayMerchantId": "some-merchant-id",
"messageExpiration": "1650574857349",
"messageId": "AH2EjtcmoURSXm2RhZ8ihnJrsty-7Ewm3NEnJDM-Atw9ewbIPvuarglows0vtaCV33b4z3PpM5RsMklbpe0aNPK5_BanGxmp_JSsOEtZYuf4m3cHTtKnxpQeonN07XDK-DUPKAaRwLfY",
"paymentMethod": "CARD",
"paymentMethodDetails": {
"expirationYear": 2028,
"expirationMonth": 12,
"pan": "378282246310005",
"authMethod": "PAN_ONLY"
}
}ECv1
{
"messageExpiration": "1507738377032",
"paymentMethod": "CARD",
"messageId": "AH2EjtcHYs1Ye-ZIZuZXd7eNO4QjQfZjBDtP2ti0tob_a5o22lHmGWHsBVYrrSylkFC3ZTsRdvMadQpwOGCIl7XxhTKcfElmgF7UFbcI8CeUZCWRmbTH5s7h69Baqr4FAM735VNThPiP",
"paymentMethodDetails": {
"expirationYear": 2028,
"expirationMonth": 12,
"pan": "378282246310005"
}
}Discover
Voici un exemple de charge utile décryptée pour les cartes Discover non tokenisées :
ECv2
{
"gatewayMerchantId": "some-merchant-id",
"messageExpiration": "1650574781399",
"messageId": "AH2EjteSxPPpbJOXKXzG1Cqkh1kzJz0UP1AG4w75n9q7gCtWsawfRlqtUZofjIBnKlbozvASxKkkdbjv2-rOfNGd_st4kFqPeb6O3IE-fXeIcHzH8x56tMRylEnfnrF6x01ET8KdUeLS",
"paymentMethod": "CARD",
"paymentMethodDetails": {
"expirationYear": 2028,
"expirationMonth": 12,
"pan": "6011111111111117",
"authMethod": "PAN_ONLY"
}
}ECv1
{
"messageExpiration": "1507738377032",
"paymentMethod": "CARD",
"messageId": "AH2EjtcHYs1Ye-ZIZuZXd7eNO4QjQfZjBDtP2ti0tob_a5o22lHmGWHsBVYrrSylkFC3ZTsRdvMadQpwOGCIl7XxhTKcfElmgF7UFbcI8CeUZCWRmbTH5s7h69Baqr4FAM735VNThPiP",
"paymentMethodDetails": {
"expirationYear": 2028,
"expirationMonth": 12,
"pan": "6011111111111117"
}
}JCB
Voici un exemple de charge utile décryptée pour les cartes JCB non tokenisées :
ECv2
{
{
"gatewayMerchantId": "some-merchant-id",
"messageExpiration": "1650574736277",
"messageId": "AH2Ejtc88ZHJ-2aYBQWzHwvp6l0JsCHgxVt8s91A-ZUikaXNbcjsFm6gg9ExeVR-jzIyT-mJvA_ntvfRsDDOH2jnKMjdTtXIJvPt0NBUU45R7-gnjxkx-sI0ldcWvbDHsV0735yFDbWk",
"paymentMethod": "CARD",
"paymentMethodDetails": {
"expirationYear": 2028,
"expirationMonth": 12,
"pan": "4111111111111111",
"authMethod": "PAN_ONLY"
}
}ECv1
{
{
"messageExpiration": "1507738377032",
"paymentMethod": "CARD",
"messageId": "AH2EjtcHYs1Ye-ZIZuZXd7eNO4QjQfZjBDtP2ti0tob_a5o22lHmGWHsBVYrrSylkFC3ZTsRdvMadQpwOGCIl7XxhTKcfElmgF7UFbcI8CeUZCWRmbTH5s7h69Baqr4FAM735VNThPiP",
"paymentMethodDetails": {
"expirationYear": 2028,
"expirationMonth": 12,
"pan": "4111111111111111"
}
}
}
}Carte tokenisée
Une carte tokenisée est une carte ajoutée à Google Wallet.
La charge utile décryptée d'une carte tokenisée dépend du type de carte sélectionné. Les trois exemples suivants montrent des charges utiles déchiffrées pour différents types de cartes tokenisées.
Visa
Voici un exemple de charge utile déchiffrée pour les cartes Visa tokenisées :
ECv2
{
"gatewayMerchantId": "some-merchant-id",
"messageExpiration": "1561533871082",
"messageId": "AH2Ejtc8qBlP_MCAV0jJG7ErQKeDrkEUtQ0N3QRvPXWJc-jgC0VTfgmarDRZvTwuzirQPdUjkMkiQ7tnDidZbtlQTO-mAgMIdXRMuYedhZXnCcokmkJOOnE7jBn-pvkyBncOgpPWFFn3",
"paymentMethod": "CARD",
"paymentMethodDetails": {
"expirationYear": 2028,
"expirationMonth": 12,
"pan": "4895370012003478",
"authMethod": "CRYPTOGRAM_3DS",
"eciIndicator": "07",
"cryptogram": "AgAAAAAABk4DWZ4C28yUQAAAAAA="
}
}ECv1
{
"messageExpiration": "1507738377032",
"paymentMethod": "TOKENIZED_CARD",
"messageId": "AH2EjtcHYs1Ye-ZIZuZXd7eNO4QjQfZjBDtP2ti0tob_a5o22lHmGWHsBVYrrSylkFC3ZTsRdvMadQpwOGCIl7XxhTKcfElmgF7UFbcI8CeUZCWRmbTH5s7h69Baqr4FAM735VNThPiP",
"paymentMethodDetails": {
"expirationYear": 2028,
"dpan": "4895370012003478",
"expirationMonth": 12,
"authMethod": "3DS",
"3dsCryptogram": "AgAAAAAABk4DWZ4C28yUQAAAAAA=",
"3dsEciIndicator": "07"
}
}American Express
Voici un exemple de charge utile déchiffrée pour les cartes American Express tokenisées :
ECv2
{
"gatewayMerchantId": "some-merchant-id",
"messageExpiration": "1561534208255",
"messageId": "AH2Ejtf3Lp6LzjK6BswXBvVKZapBJNgMUbVHF_TORaVi7lV0tvRfzvApsZm-RAXF_szQq9qS_BwLTgZGrXvk0ZydZwUISo4x6dxojDoz0fl7loXwZ8JApFrQWU__ExxljKY4Y4mu2aQz",
"paymentMethod": "CARD",
"paymentMethodDetails": {
"expirationYear": 2028,
"expirationMonth": 12,
"pan": "370295136149943",
"authMethod": "CRYPTOGRAM_3DS",
"cryptogram": "JnPYbs6FkC1tiVLREAABoAAAkgA="
}
}ECv1
{
"messageExpiration": "1507738377032",
"paymentMethod": "TOKENIZED_CARD",
"messageId": "AH2EjtcHYs1Ye-ZIZuZXd7eNO4QjQfZjBDtP2ti0tob_a5o22lHmGWHsBVYrrSylkFC3ZTsRdvMadQpwOGCIl7XxhTKcfElmgF7UFbcI8CeUZCWRmbTH5s7h69Baqr4FAM735VNThPiP",
"paymentMethodDetails": {
"expirationYear": 2028,
"dpan": "370295136149943",
"expirationMonth": 12,
"authMethod": "3DS",
"3dsCryptogram": "JnPYbs6FkC1tiVLREAABoAAAkgA="
}
}Tous les autres réseaux
Voici un exemple de charge utile décryptée pour les cartes tokenisées pour tous les autres réseaux :
ECv2
{
"gatewayMerchantId": "some-merchant-id",
"messageExpiration": "1561534208255",
"messageId": "AH2EjterqtEqlB9vQvy2kJEugwCDYtMzVtLrVH26Qd1RDFK_EFsFmPdpPOqcCIedXNpAc6sCM61GuYM_bgVl930tU8I0Ar0WUx87MIw36skUC-IT_APvbx4qRqw9Hfu2W-7zY6LMdgZ5",
"paymentMethod": "CARD",
"paymentMethodDetails": {
"expirationYear": 2028,
"expirationMonth": 12,
"pan": "5204240250197840",
"authMethod": "CRYPTOGRAM_3DS",
"cryptogram": "ALnt+yWSJdXBACMLLWMNGgADFA=="
}
}ECv1
{
"messageExpiration": "1507738377032",
"paymentMethod": "TOKENIZED_CARD",
"messageId": "AH2EjtcHYs1Ye-ZIZuZXd7eNO4QjQfZjBDtP2ti0tob_a5o22lHmGWHsBVYrrSylkFC3ZTsRdvMadQpwOGCIl7XxhTKcfElmgF7UFbcI8CeUZCWRmbTH5s7h69Baqr4FAM735VNThPiP",
"paymentMethodDetails": {
"expirationYear": 2028,
"dpan": "5204240250197840",
"expirationMonth": 12,
"authMethod": "3DS",
"3dsCryptogram": "ALnt+yWSJdXBACMLLWMNGgADFA=="
}
}