최신 버전으로 업데이트

Google Pay API는 2018년 7월에 PaymentDataRequestIsReadyToPayRequest 객체의 새로운 객체 구조를 도입했습니다. 이 가이드는 Google Pay API 버전 1용으로 형식이 지정된 객체를 버전 2용으로 업데이트하는 방법을 설명합니다.

결제 수단

API 버전은 Google Pay API 버전 2의 각 요청 객체와 함께 지정됩니다.

Google Pay API 버전 1은 카드를 유일한 결제 방법으로 지원했지만 CARD 결제 수단은 Google Pay API 버전 2에서 사용할 수 있는 여러 결제 수단 옵션 중 하나입니다. 이전에 CARDallowedPaymentMethods 값을 지정한 사이트는 이제 PAN_ONLYallowedAuthMethods 값을 설정해야 합니다. 이전에 TOKENIZED_CARDallowedPaymentMethods 값을 지정한 사이트는 이제 CRYPTOGRAM_3DSallowedAuthMethods 값을 설정해야 합니다.

사용 가능한 카드 네트워크는 해당 네트워크 카드에 지원되는 인증 방법과 함께 지정됩니다.

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 Pay API 버전 1에서 Google 판매자 ID는 최상위 속성이었습니다. 하지만 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 응답

PaymentDataRequest에서 2apiVersion 속성 값을 설정하는 사이트의 PaymentData 객체 응답은 카드를 여러 가능한 결제 데이터 응답 중 하나로서 참조하도록 변경되었습니다. PaymentDataRequest 객체에 포함된 apiVersionapiVersionMinor 속성은 PaymentData 응답에 표시되어 예상 형식을 나타냅니다.

apiVersion 1

{
  // no version specified
}

apiVersion 2

{
  apiVersion: 2,
  apiVersionMinor: 0
}

선택한 결제 수단 및 토큰화에 대한 정보는 paymentMethodData 속성에 배치됩니다. 카드 결제 수단의 cardInfo 객체에서 두 속성 cardClasscardImageUri가 삭제되었습니다.

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 Secure 암호 및 선택적 전자 상거래 표시기(ECI)로 인증된 Android 기기 토큰을 게이트웨이 또는 대행업체로 계속 전달해야 하기 때문입니다. 카드는 paymentMethodDetails.authMethod에서 선택한 카드의 인증 방법에 대한 추가 정보가 있는 CARDpaymentMethod입니다.

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