Actualizar a la última versión

En julio del 2018, la API de Google Pay introdujo nuevas estructuras de objetos para PaymentDataRequest y IsReadyToPayRequest. En esta guía se explica cómo actualizar objetos con formato para la versión 1 de la API Google Pay a objetos con formato para la versión 2.

Métodos de pago

En la versión 2 de la API de Google Pay, se especifica una versión de la API con cada objeto de solicitud.

La versión 1 de la API de Google Pay solo admitía tarjetas como forma de pago. El CARD método de pago es una de las múltiples opciones de método de pago posibles en la versión 2 de la API de Google Pay. Los sitios que antes especificaban un valor de allowedPaymentMethods de CARD ahora deben definir un valor de allowedAuthMethods de PAN_ONLY. Los sitios que antes especificaban un valor de allowedPaymentMethods de TOKENIZED_CARD ahora deben definir un valor de allowedAuthMethods de CRYPTOGRAM_3DS.

Las redes de tarjetas permitidas se especifican junto con los métodos de autenticación admitidos para las tarjetas de esas 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'
      ]
    }
  }]
}

Las redes de tarjetas permitidas y sus métodos de autenticación se incluyen en un IsReadyToPayRequest de un CARD método de pago.

Tokenización de datos para pagos con tarjeta

La API de Google Pay devuelve datos de tarjetas cifrados a los que hace referencia la pasarela que hayas especificado o que se descifran en tus servidores. La versión 2 de la API Google Pay mueve la tokenización de métodos de pago al interior del CARD método de pago.

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 del comerciante de Google

El ID de comerciante de Google era una propiedad de nivel superior en la versión 1 de la API de Google Pay. Ahora, el ID de comerciante de Google se coloca dentro de un objeto MerchantInfo con un nombre de comerciante opcional.

apiVersion 1

{
  merchantId: '12345678901234567890'
}

apiVersion 2

{
  merchantInfo: {
    merchantId: '12345678901234567890'
  }
}

Dirección de facturación

Una dirección de facturación y un número de teléfono de facturación opcionales están asociados a un método de pago de CARD. Si un sitio solicita una dirección de facturación, cualquier configuración relacionada con la respuesta esperada se coloca en un objeto BillingAddressParameters.

apiVersion 1

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

apiVersion 2

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

Dirección de envío

El requisito de dirección de envío opcional sigue estando en el nivel superior del objeto PaymentDataRequest. Se ha cambiado el nombre de la propiedad shippingAddressRequirements a shippingAddressParameters.

Es posible que las respuestas anteriores de la API Google Pay hayan devuelto un número de teléfono como parte de la dirección de envío cuando se solicitaba un número de teléfono. La API de Google Pay ya no admite números de teléfono de envío en ninguna versión. Deben actualizarse todos los controladores de respuesta que esperen un número de teléfono de envío.

apiVersion 1

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

apiVersion 2

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

Respuesta PaymentData

La respuesta del objeto PaymentData de los sitios que definen el valor de la propiedad apiVersion como 2 en PaymentDataRequest se ha modificado para hacer referencia a las tarjetas como una de las posibles respuestas de datos de pago. Las propiedades apiVersion y apiVersionMinor incluidas en el objeto PaymentDataRequest aparecen en la respuesta PaymentData para indicar el formato esperado.

apiVersion 1

{
  // no version specified
}

apiVersion 2

{
  apiVersion: 2,
  apiVersionMinor: 0
}

La información sobre un método de pago seleccionado y su tokenización se coloca en la propiedad paymentMethodData. Se han eliminado dos propiedades del objeto cardInfo del método de pago con tarjeta: cardClass y 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'
    }
  }
}

Respuesta a un mensaje cifrado

Los sitios que especifican un tipo de tokenización de método de pago DIRECT y aceptan un método de pago de la versión 1 de la API TOKENIZED_CARD deben actualizar la forma en que gestionan la propiedad encryptedMessage descifrada. El sitio debe hacerlo para seguir reenviando tokens de dispositivo Android autenticados con un criptograma 3-D Secure y un indicador de comercio electrónico (ECI) opcional a tu pasarela o procesador. Las tarjetas son un paymentMethod de CARD, con información adicional sobre el método de autenticación de la tarjeta seleccionada en 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"
  }
}