最新バージョンへの更新

Google Pay API では、2018 年 7 月に新しいオブジェクト構造として、PaymentDataRequestIsReadyToPayRequest が導入されました。このガイドでは、Google Pay API バージョン 1 用にフォーマットされたオブジェクトを、バージョン 2 用のオブジェクトに更新する方法について説明します。

お支払い方法

API バージョンは、Google Pay API のバージョン 2 の各リクエスト オブジェクトで指定されます。

Google Pay API のバージョン 1 でサポートしていたお支払い方法はカードのみでしたが、Google Pay API のバージョン 2 では、CARD は唯一のお支払い方法ではなく、他のお支払い方法も含まれます。以前に CARD の値として allowedPaymentMethods を指定していたサイトでは、現在は PAN_ONLY の値として allowedAuthMethods を設定する必要があります。以前に TOKENIZED_CARD の値として allowedPaymentMethods を指定していたサイトでは、現在は CRYPTOGRAM_3DS の値として allowedAuthMethods を設定する必要があります。

許可されたカード ネットワークは、そのネットワーク上のカードに対してサポートされている認証方法とともに指定されます。

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

許可されたカード ネットワークとその認証方法は、CARDお支払い方法IsReadyToPayRequest に含まれています。

カード支払いデータのトークン化

Google Pay API は、指定したゲートウェイによって参照されるか販売者独自のサーバーで復号される、暗号化されたカードデータを返します。Google Pay API のバージョン 2 では、支払い方法のトークン化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'
      }
    }
  }]
}

Google 販売アカウント ID

Google の販売者 ID は、Google Pay API のバージョン 1 の最上位のプロパティでした。現在、Google の販売者 ID は、オプションの販売者名を持つ MerchantInfo オブジェクト内に配置されます。

apiVersion 1

{
  merchantId: '12345678901234567890'
}

apiVersion 2

{
  merchantInfo: {
    merchantId: '12345678901234567890'
  }
}

請求先住所

オプションの請求先住所と請求先電話番号は、CARD のお支払い方法に関連付けられています。 サイトから請求先住所がリクエストされる場合、必要なレスポンスに関連する構成は BillingAddressParameters オブジェクト内に配置されます。

apiVersion 1

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

apiVersion 2

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

配送先住所

オプションの配送先住所要件は、PaymentDataRequest オブジェクトの最上位に残されています。shippingAddressRequirements プロパティは名前が shippingAddressParameters に変更されました。

以前の Google Pay API レスポンスでは、電話番号がリクエストされたときに配送先住所の一部として電話番号を返していたことがありました。しかし、現在では Google Pay API のどのバージョンでも配送先の電話番号はサポートされていません。 配送先の電話番号を必要とするレスポンス ハンドラはすべて更新する必要があります。

apiVersion 1

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

apiVersion 2

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

PaymentData レスポンス

PaymentDataRequestapiVersion プロパティの値として 2 を設定したサイトでの PaymentData オブジェクトによるレスポンスは、使用可能な複数の支払いデータ レスポンスの 1 つとしてカードを参照するように変更されました。PaymentDataRequest オブジェクトに含まれていた apiVersion プロパティと apiVersionMinor プロパティは、必要な形式を示すために PaymentData レスポンスに含まれます。

apiVersion 1

{
  // no version specified
}

apiVersion 2

{
  apiVersion: 2,
  apiVersionMinor: 0
}

選択されたお支払い方法とそのトークン化に関する情報は、paymentMethodData プロパティ内に配置されます。cardClasscardImageUri の 2 つのプロパティがカードのお支払い方法の cardInfo オブジェクトから削除されました。

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

暗号化されたメッセージ レスポンス

DIRECT の支払い方法トークン化タイプを指定し、TOKENIZED_CARD の API バージョン 1 のお支払い方法を受け入れるサイトでは、復号された encryptedMessage プロパティの処理方法を更新する必要があります。更新することで、3D セキュア クリプトグラムで認証された Android デバイスのトークンとオプションの電子商取引インジケータ(ECI)をゲートウェイまたはデータ処理者へ引き続き転送できます。カードは CARDpaymentMethod であり、選択されたカードの認証方法に関する追加情報が 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"
  }
}