Actualiza a la versión más reciente

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

Formas 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 admitía tarjetas como la única forma de pago. La forma de pago CARD es una de las múltiples opciones posibles de formas de pago en la versión 2 de la API de Google Pay. Los sitios que antes especificaban un valor de allowedPaymentMethods de CARD ahora deben establecer un valor de allowedAuthMethods de PAN_ONLY. Los sitios que antes especificaban un valor allowedPaymentMethods de TOKENIZED_CARD ahora deben establecer un valor allowedAuthMethods de CRYPTOGRAM_3DS.

Las redes de tarjetas permitidas se especifican junto con los métodos de autenticación admitidos para las tarjetas en 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 objeto IsReadyToPayRequest para una CARD forma de pago.

Asignación de token a los datos de pago con tarjeta

La API de Google Pay devuelve datos de tarjetas encriptados a los que se hace referencia en la puerta de enlace especificada o que se desencriptan en tus servidores. La versión 2 de la API de Google Pay mueve la tokenización de la forma de pago dentro de la forma de pago 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 del comerciante de Google

Un ID de comercio 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 una forma de pago CARD. Si un sitio solicita una dirección de facturación, cualquier configuración relacionada con la respuesta esperada se coloca dentro de 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

Un requisito de dirección de envío opcional permanece en el nivel superior del objeto PaymentDataRequest. Se cambió el nombre de la propiedad shippingAddressRequirements a shippingAddressParameters.

Es posible que las respuestas anteriores de la API de Google Pay hayan devuelto un número de teléfono como parte de la dirección de envío cuando se solicitó 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. Se deben actualizar todos los controladores de respuesta que esperan 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 de PaymentData

La respuesta del objeto PaymentData para los sitios que establecen un valor de propiedad apiVersion de 2 en PaymentDataRequest cambió para hacer referencia a las tarjetas como una de las múltiples respuestas posibles 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 una forma de pago seleccionada y su tokenización se coloca dentro de la propiedad paymentMethodData. Se quitaron 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 de mensaje encriptado

Los sitios que especifican un tipo de tokenización de forma de pago DIRECT y aceptan una forma de pago de la versión 1 de la API de TOKENIZED_CARD deben actualizar la forma en que controlan la propiedad encryptedMessage descifrada. El sitio debe hacer esto para seguir enviando tokens de dispositivos Android autenticados con un criptograma de 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"
  }
}