Mettre à jour vers la dernière version

L'API Google Pay a introduit de nouvelles structures d'objets pour les objets PaymentDataRequest et IsReadyToPayRequest en juillet 2018. Ce guide explique comment mettre à jour les objets formatés pour la version 1 de l'API Google Pay afin qu'ils soient formatés pour la version 2.

Modes de paiement

Une version de l'API est spécifiée avec chaque objet de requête dans la version 2 de l'API Google Pay.

La version 1 de l'API Google Pay n'acceptait que les cartes comme mode de paiement. Le mode de paiement CARD est l'une des nombreuses options de mode de paiement possibles dans la version 2 de l'API Google Pay. Les sites qui spécifiaient auparavant une valeur allowedPaymentMethods de CARD doivent désormais définir une valeur allowedAuthMethods de PAN_ONLY. Les sites qui spécifiaient auparavant une valeur allowedPaymentMethods de TOKENIZED_CARD doivent désormais définir une valeur allowedAuthMethods de CRYPTOGRAM_3DS.

Les réseaux de cartes autorisés sont spécifiés à côté des méthodes d'authentification compatibles pour les cartes de ces réseaux.

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'
      ]
    }
  }]
}

Les réseaux de cartes autorisés et leurs méthodes d'authentification sont inclus dans un IsReadyToPayRequest pour un CARD mode de paiement.

Tokenisation des données de paiement par carte

L'API Google Pay renvoie des données de carte chiffrées référencées par la passerelle que vous avez spécifiée ou déchiffrées sur vos serveurs. La version 2 de l'API Google Pay déplace la tokenisation des modes de paiement à l'intérieur du mode de paiement 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'
      }
    }
  }]
}

Référence marchand Google

L'ID de marchand Google était une propriété de premier niveau dans la version 1 de l'API Google Pay. L'ID marchand Google est désormais placé dans un objet MerchantInfo avec un nom de marchand facultatif.

apiVersion 1

{
  merchantId: '12345678901234567890'
}

apiVersion 2

{
  merchantInfo: {
    merchantId: '12345678901234567890'
  }
}

Adresse de facturation

Une adresse et un numéro de téléphone de facturation facultatifs sont associés à un mode de paiement CARD. Si un site demande une adresse de facturation, toute configuration liée à la réponse attendue est placée dans un objet BillingAddressParameters.

apiVersion 1

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

apiVersion 2

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

Adresse de livraison

Une exigence d'adresse de livraison facultative reste au niveau supérieur de l'objet PaymentDataRequest. La propriété shippingAddressRequirements a été renommée shippingAddressParameters.

Les réponses précédentes de l'API Google Pay pouvaient renvoyer un numéro de téléphone dans l'adresse de livraison lorsqu'un numéro de téléphone était demandé. L'API Google Pay ne prend plus en charge les numéros de téléphone de livraison, quelle que soit la version. Tous les gestionnaires de réponse qui attendent un numéro de téléphone de livraison doivent être mis à jour.

apiVersion 1

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

apiVersion 2

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

Réponse PaymentData

La réponse de l'objet PaymentData pour les sites qui définissent une valeur de propriété apiVersion sur 2 dans PaymentDataRequest a été modifiée pour référencer les cartes comme l'une des nombreuses réponses possibles concernant les données de paiement. Les propriétés apiVersion et apiVersionMinor incluses dans l'objet PaymentDataRequest apparaissent dans la réponse PaymentData pour indiquer le format attendu.

apiVersion 1

{
  // no version specified
}

apiVersion 2

{
  apiVersion: 2,
  apiVersionMinor: 0
}

Les informations sur un mode de paiement sélectionné et sa tokenisation sont placées dans la propriété paymentMethodData. Deux propriétés ont été supprimées de l'objet cardInfo du mode de paiement par carte : cardClass et 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'
    }
  }
}

Réponse à un message chiffré

Les sites qui spécifient un type de tokenisation du mode de paiement DIRECT et acceptent un mode de paiement TOKENIZED_CARD de l'API version 1 doivent modifier la façon dont ils gèrent la propriété encryptedMessage déchiffrée. Le site doit le faire pour continuer à transférer les jetons d'appareil Android authentifiés avec un cryptogramme 3-D Secure et un indicateur de commerce électronique (ECI) facultatif à votre passerelle ou processeur. Les cartes sont un paymentMethod de CARD, avec des informations supplémentaires sur la méthode d'authentification de la carte sélectionnée dans 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"
  }
}