Тестирование с использованием пробных токенов

На этой странице рассказано, как протестировать интеграцию с помощью пробных токенов.

Создание пробных токенов

Чтобы создать пробные токены и проверить их расшифровку на сервере, настройте среду TEST при построении экземпляра PaymentsClient.

Когда образец PaymentsClient построен в среде TEST, вызовы loadPaymentData функционируют в обычном режиме. Пользователь увидит запрос на выбор одной из существующих карт, однако информация о карте не будет показана. В результате у получившегося токена появится полезная нагрузка.

Проверка подлинности подписи

Токены, созданные в среде TEST, шифруются с помощью тестового открытого ключа, отправленного заранее в Google.

Токены подписываются с помощью тестовых ключей Google. Если вы пользуетесь библиотекой Tink, при создании объекта PaymentMethodTokenRecipient правильно настройте метод .fetchSenderVerifyingKeysWith(GooglePaymentsPublicKeysManager.INSTANCE_TEST).

Расшифрованная полезная нагрузка

После расшифровки пробного токена вы получите полезную нагрузку в виде открытого текста. Структура полезной нагрузки зависит от того, является ли выбранная карта токенизированной (добавлена ли она в Google Pay). Кроме того, полезная нагрузка токенизированных карт зависит от платежной системы. Полезная нагрузка всех нетокенизированных карт одинакова вне зависимости от платежной системы.

Значения следующих трех полей в приведенных примерах могут отличаться от ваших.

  • messageExpiration – временная метка. Одна неделя с текущего момента.
  • messageId – идентификатор сообщения. Случайно генерируется для каждого токена.
  • expirationYear – временная метка. Пять лет с текущего года.

Структура полезной нагрузки различается в зависимости от версии протокола – ECv1 или ECv2. Если вы выполняете новую интеграцию, следует использовать версию ECv2. Если вы не уверены, какой протокол лучше использовать, обратитесь к своему контактному лицу в Google.

Нетокенизированная карта

В следующем примере представлена полезная нагрузка нетокенизированной карты.

ECv2

{
    "gatewayMerchantId": "some-merchant-id",
    "messageExpiration": "1561534717239",
    "messageId": "AH2EjteBXyoZR2TrJK_C2SKvwoG0dsw5WsQDkGOODXA_jwN0TF9j_I_NzWOLNwImcjBEfndMBiDgDJx9phz6H3D4jJQKy22-zcm38gaVcSPK3T_y7Qj1JEAZ-V0KgjpOXWBQTxC2M6vV",
    "paymentMethod": "CARD",
    "paymentMethodDetails": {
        "expirationYear": 2026,
        "expirationMonth": 12,
        "pan": "4111111111111111",
        "authMethod": "PAN_ONLY"
    }
}

ECv1

{
  "messageExpiration": "1507738377032",
  "paymentMethod": "CARD",
  "messageId": "AH2EjtcHYs1Ye-ZIZuZXd7eNO4QjQfZjBDtP2ti0tob_a5o22lHmGWHsBVYrrSylkFC3ZTsRdvMadQpwOGCIl7XxhTKcfElmgF7UFbcI8CeUZCWRmbTH5s7h69Baqr4FAM735VNThPiP",
  "paymentMethodDetails": {
    "expirationYear": 2026,
    "expirationMonth": 12,
    "pan": "4111111111111111"
  }
}

Токенизированная карта

Токенизированными называют карты, добавленные в Google Pay.

В этом случае полезная нагрузка зависит от типа токенизированной карты. В следующих трех примерах показаны полезные нагрузки для карт разных платежных систем.

Visa

Ниже приведен пример расшифрованной полезной нагрузки токенизированной карты Visa.

ECv2

{
    "gatewayMerchantId": "some-merchant-id",
    "messageExpiration": "1561533871082",
    "messageId": "AH2Ejtc8qBlP_MCAV0jJG7ErQKeDrkEUtQ0N3QRvPXWJc-jgC0VTfgmarDRZvTwuzirQPdUjkMkiQ7tnDidZbtlQTO-mAgMIdXRMuYedhZXnCcokmkJOOnE7jBn-pvkyBncOgpPWFFn3",
    "paymentMethod": "CARD",
    "paymentMethodDetails": {
        "expirationYear": 2026,
        "expirationMonth": 12,
        "pan": "4895370012003478",
        "authMethod": "CRYPTOGRAM_3DS",
        "eciIndicator": "07",
        "cryptogram": "AgAAAAAABk4DWZ4C28yUQAAAAAA="
    }
}

ECv1

{
  "messageExpiration": "1507738377032",
  "paymentMethod": "TOKENIZED_CARD",
  "messageId": "AH2EjtcHYs1Ye-ZIZuZXd7eNO4QjQfZjBDtP2ti0tob_a5o22lHmGWHsBVYrrSylkFC3ZTsRdvMadQpwOGCIl7XxhTKcfElmgF7UFbcI8CeUZCWRmbTH5s7h69Baqr4FAM735VNThPiP",
  "paymentMethodDetails": {
    "expirationYear": 2026,
    "dpan": "4895370012003478",
    "expirationMonth": 12,
    "authMethod": "3DS",
    "3dsCryptogram": "AgAAAAAABk4DWZ4C28yUQAAAAAA=",
    "eciIndicator": "07"
  }
}

American Express

Ниже приведен пример расшифрованной полезной нагрузки токенизированной карты American Express.

ECv2

{
    "gatewayMerchantId": "some-merchant-id",
    "messageExpiration": "1561534208255",
    "messageId": "AH2Ejtf3Lp6LzjK6BswXBvVKZapBJNgMUbVHF_TORaVi7lV0tvRfzvApsZm-RAXF_szQq9qS_BwLTgZGrXvk0ZydZwUISo4x6dxojDoz0fl7loXwZ8JApFrQWU__ExxljKY4Y4mu2aQz",
    "paymentMethod": "CARD",
    "paymentMethodDetails": {
        "expirationYear": 2026,
        "expirationMonth": 12,
        "pan": "370295136149943",
        "authMethod": "CRYPTOGRAM_3DS",
        "cryptogram": "JnPYbs6FkC1tiVLREAABoAAAkgA="
    }
}

ECv1

{
  "messageExpiration": "1507738377032",
  "paymentMethod": "TOKENIZED_CARD",
  "messageId": "AH2EjtcHYs1Ye-ZIZuZXd7eNO4QjQfZjBDtP2ti0tob_a5o22lHmGWHsBVYrrSylkFC3ZTsRdvMadQpwOGCIl7XxhTKcfElmgF7UFbcI8CeUZCWRmbTH5s7h69Baqr4FAM735VNThPiP",
  "paymentMethodDetails": {
    "expirationYear": 2026,
    "dpan": "370295136149943",
    "expirationMonth": 12,
    "authMethod": "3DS",
    "3dsCryptogram": "JnPYbs6FkC1tiVLREAABoAAAkgA="
  }
}

Другие платежные системы

Ниже приведен пример полезной нагрузки токенизированных карт других платежных систем.

ECv2

{
    "gatewayMerchantId": "some-merchant-id",
    "messageExpiration": "1561534208255",
    "messageId": "AH2EjterqtEqlB9vQvy2kJEugwCDYtMzVtLrVH26Qd1RDFK_EFsFmPdpPOqcCIedXNpAc6sCM61GuYM_bgVl930tU8I0Ar0WUx87MIw36skUC-IT_APvbx4qRqw9Hfu2W-7zY6LMdgZ5",
    "paymentMethod": "CARD",
    "paymentMethodDetails": {
        "expirationYear": 2026,
        "expirationMonth": 12,
        "pan": "5204240250197840",
        "authMethod": "CRYPTOGRAM_3DS",
        "cryptogram": "ALnt+yWSJdXBACMLLWMNGgADFA=="
    }
}

ECv1

{
  "messageExpiration": "1507738377032",
  "paymentMethod": "TOKENIZED_CARD",
  "messageId": "AH2EjtcHYs1Ye-ZIZuZXd7eNO4QjQfZjBDtP2ti0tob_a5o22lHmGWHsBVYrrSylkFC3ZTsRdvMadQpwOGCIl7XxhTKcfElmgF7UFbcI8CeUZCWRmbTH5s7h69Baqr4FAM735VNThPiP",
  "paymentMethodDetails": {
    "expirationYear": 2026,
    "dpan": "5204240250197840",
    "expirationMonth": 12,
    "authMethod": "3DS",
    "3dsCryptogram": "ALnt+yWSJdXBACMLLWMNGgADFA=="
  }
}