Atualizar para a versão mais recente

A API Google Pay introduziu novas estruturas para os objetos PaymentDataRequest e IsReadyToPayRequest em julho de 2018. Neste guia, explicamos como os objetos formatados para a API Google Pay versão 1 podem ser formatados para a versão 2.

Formas de pagamento

Uma versão da API é especificada com cada objeto de solicitação na versão 2 da API Google Pay.

Na versão 1 da API Google Pay, apenas cartões eram aceitos como forma de pagamento. Já na versão 2 da API Google Pay, CARD é uma das várias formas de pagamento possíveis. Sites que antes especificaram um valor allowedPaymentMethods de CARD agora precisam definir um valor allowedAuthMethods de PAN_ONLY. Sites que antes especificaram um valor allowedPaymentMethods de TOKENIZED_CARD agora precisam definir um valor allowedAuthMethods de CRYPTOGRAM_3DS.

As redes de cartões permitidas são especificadas junto com métodos de autenticação compatíveis para cartões nessas redes.

apiVersion 1

{
  allowedPaymentMethods: [
    'CARD',
    'TOKENIZED_CARD'
  ],
  cardRequirements: {
    allowedCardNetworks: [
      'AMEX',
      'DISCOVER',
      'JCB',
      'MASTERCARD',
      'VISA'
    ]
  }
}

apiVersion 2

{
  apiVersion: 2,
  apiVersionMinor: 0,
  allowedPaymentMethods: [{
    type: 'CARD',
    parameters: {
      allowedAuthMethods: [
        'PAN_ONLY',
        'CRYPTOGRAM_3DS'
      ],
      allowedCardNetworks: [
        'AMEX',
        'DISCOVER',
        'JCB',
        'MASTERCARD',
        'VISA'
      ]
    }
  }]
}

As redes de cartões permitidas e os respectivos métodos de autenticação estão incluídos em um IsReadyToPayRequest para uma forma de pagamento CARD.

Tokenização de dados de pagamento com cartão

A API Google Pay retorna dados de cartão criptografados referenciados por seu gateway especificado ou descriptografados nos seus servidores. A versão 2 da API Google Pay move a tokenização da forma de pagamento para dentro da forma de pagamento CARD.

apiVersion 1

{
  paymentMethodTokenizationParameters: {
    tokenizationType: 'PAYMENT_GATEWAY',
    parameters: {
      'gateway': 'example',
      'gatewayMerchantId': 'exampleMerchantId'
    }
  }
}

apiVersion 2

{
  allowedPaymentMethods: [{
    type: 'CARD',
    tokenizationSpecification: {
      type: 'PAYMENT_GATEWAY',
      parameters: {
        'gateway': 'example',
        'gatewayMerchantId': 'exampleMerchantId'
      }
    }
  }]
}

ID do comerciante do Google

Um ID do comerciante do Google era uma propriedade de nível superior na versão 1 da API Google Pay. Agora, é colocado dentro de um objeto MerchantInfo com um nome de comerciante opcional.

apiVersion 1

{
  merchantId: '12345678901234567890'
}

apiVersion 2

{
  merchantInfo: {
    merchantId: '12345678901234567890'
  }
}

Endereço de faturamento

Um endereço de faturamento opcional e um número de telefone de faturamento estão associados a uma forma de pagamento CARD. Se um site solicitar um endereço de faturamento, qualquer configuração relacionada à resposta esperada será colocada dentro de um objeto BillingAddressParameters.

apiVersion 1

{
  cardRequirements: {
    billingAddressRequired: true,
    billingAddressFormat: 'FULL'
  },
  phoneNumberRequired: true
}

apiVersion 2

{
  allowedPaymentMethods: [{
    type: 'CARD',
    parameters: {
      billingAddressRequired: true,
      billingAddressParameters: {
        format: 'FULL',
        phoneNumberRequired: true
      }
    }
  }]
}

Endereço de entrega

Um requisito de endereço de entrega opcional permanece no nível superior do objeto PaymentDataRequest. A propriedade shippingAddressRequirements foi renomeada para shippingAddressParameters.

As respostas anteriores da API Google Pay podem ter retornado um número de telefone como parte do endereço de entrega quando um número de telefone era solicitado. Um número de telefone de entrega não é mais compatível com a API Google Pay em nenhuma versão. Todos os manipuladores de respostas que esperam um número de telefone de entrega precisam ser atualizados.

apiVersion 1

{
  shippingAddressRequired: true,
  shippingAddressRequirements: {
    allowedCountryCodes: [
      'US',
      'CA'
    ]
  }
}

apiVersion 2

{
  shippingAddressRequired: true,
  shippingAddressParameters: {
    allowedCountryCodes: [
      'US',
      'CA'
    ]
  }
}

Resposta de PaymentData

A resposta do objeto PaymentData para sites que definem um valor de propriedade apiVersion de 2 em PaymentDataRequest foi alterada para cartões de referência como uma das várias respostas possíveis de dados de pagamento. As propriedades apiVersion e apiVersionMinor incluídas no objeto PaymentDataRequest aparecem na resposta PaymentData para indicar o formato esperado.

apiVersion 1

{
  // no version specified
}

apiVersion 2

{
  apiVersion: 2,
  apiVersionMinor: 0
}

As informações sobre a forma de pagamento selecionada e a respectiva tokenização são colocadas dentro da propriedade paymentMethodData. Duas propriedades foram removidas do objeto cardInfo da forma de pagamento com cartão: cardClass e cardImageUri.

apiVersion 1

{
  cardInfo: {
    cardDescription: 'Visa •••• 1234',
    cardNetwork: 'VISA',
    cardDetails: 1234
  },
  paymentMethodToken: {
    tokenizationType: 'PAYMENT_GATEWAY',
    token: 'examplePaymentMethodToken'
  }
}

apiVersion 2

{
  paymentMethodData: {
    type: 'CARD',
    description: 'Visa •••• 1234',
    info: {
      cardNetwork: 'VISA',
      cardDetails: '1234'
    },
    tokenizationData: {
      type: 'PAYMENT_GATEWAY',
      token: 'examplePaymentMethodToken'
    }
  }
}

Resposta de mensagem criptografada

Nos sites que especificam uma tokenização de forma de pagamento do tipo DIRECT e aceitam uma forma de pagamento TOKENIZED_CARD da API versão 1, é necessário atualizar como processam a propriedade encryptedMessage descriptografada. O site deve fazer isso para continuar encaminhando tokens de dispositivos Android autenticados com um criptograma 3-D Secure e um indicador de comércio eletrônico (ECI, na sigla em inglês) opcional para seu gateway ou processador. Os cartões são paymentMethod de CARD, com mais informações sobre o método de autenticação do cartão selecionado em paymentMethodDetails.authMethod.

apiVersion 1

{
  "paymentMethod": "TOKENIZED_CARD",
  "paymentMethodDetails": {
    "authMethod": "3DS",
    "dpan": "1111222233334444",
    "expirationMonth": 10,
    "expirationYear": 2020,
    "3dsCryptogram": "AAAAAA...",
    "3dsEciIndicator": "eci indicator"
  }
}

apiVersion 2

{
  "paymentMethod": "CARD",
  "paymentMethodDetails": {
    "authMethod": "CRYPTOGRAM_3DS",
    "pan": "1111222233334444",
    "expirationMonth": 10,
    "expirationYear": 2020,
    "cryptogram": "AAAAAA...",
    "eciIndicator": "eci indicator"
  }
}