Cập nhật lên phiên bản mới nhất

Google Pay API đã giới thiệu các cấu trúc đối tượng mới cho các đối tượng PaymentDataRequest IsReadyToPayRequest vào tháng 7 năm 2018. Hướng dẫn này giải thích cách cập nhật các đối tượng được định dạng cho Google Pay API phiên bản 1 thành các đối tượng được định dạng cho phiên bản 2.

Phương thức thanh toán

Một phiên bản API được chỉ định cho từng đối tượng yêu cầu trong phiên bản 2 của Google Pay API.

Phiên bản 1 của Google Pay API chỉ hỗ trợ thẻ làm phương thức thanh toán. CARD Phương thức thanh toán là một trong nhiều lựa chọn phương thức thanh toán có thể có trong phiên bản 2 của Google Pay API. Những trang web trước đây chỉ định giá trị allowedPaymentMethodsCARD thì giờ đây phải đặt giá trị allowedAuthMethodsPAN_ONLY. Những trang web trước đây chỉ định giá trị allowedPaymentMethodsTOKENIZED_CARD thì giờ đây phải đặt giá trị allowedAuthMethodsCRYPTOGRAM_3DS.

Các mạng thẻ được phép được chỉ định cùng với các phương thức xác thực được hỗ trợ cho thẻ trên những mạng đó.

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

Các mạng thẻ được phép và phương thức xác thực của các mạng thẻ đó được đưa vào một IsReadyToPayRequest cho một CARD phương thức thanh toán.

Mã hoá dữ liệu thanh toán bằng thẻ

Google Pay API trả về dữ liệu thẻ được mã hoá mà cổng bạn chỉ định tham chiếu hoặc được giải mã trên các máy chủ của bạn. Phiên bản 2 của Google Pay API di chuyển quy trình mã hoá phương thức thanh toán bên trong phương thức thanh toán CARD.

apiVersion 1

{
  paymentMethodTokenizationParameters: {
    tokenizationType: 'PAYMENT_GATEWAY',
    parameters: {
      ';gateway': 'example',
      'gatewayMerchantId': 'exampleMerchantId'
    }
  }
}

apiVersion 2

{
  allowedPaymentMethods: [{
    type: 'CARD',
    tokenizationSpecification: {
      type: 'PAYMENT_GATEWAY',
      parameters: {
        9;gateway': 'example',
        'gatewayMerchantId': 'exampleMerchantId'
      }
    }
  }]
}

Mã người bán của Google

Mã người bán của Google là một thuộc tính cấp cao nhất trong phiên bản 1 của Google Pay API. Giờ đây, mã người bán của Google được đặt bên trong đối tượng MerchantInfo cùng với tên người bán (không bắt buộc).

apiVersion 1

{
  merchantId: '12345678901234567890'
}

apiVersion 2

{
  merchantInfo: {
    merchantId: '12345678901234567890'
  }
}

Địa chỉ thanh toán

Địa chỉ thanh toán và số điện thoại thanh toán (không bắt buộc) được liên kết với một phương thức thanh toán CARD. Nếu một trang web yêu cầu địa chỉ thanh toán, mọi cấu hình liên quan đến phản hồi dự kiến sẽ được đặt bên trong đối tượng BillingAddressParameters.

apiVersion 1

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

apiVersion 2

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

Ðịa chỉ giao hàng

Yêu cầu không bắt buộc về địa chỉ giao hàng vẫn ở cấp cao nhất của đối tượng PaymentDataRequest. Thuộc tính shippingAddressRequirements đã được đổi tên thành shippingAddressParameters.

Các phản hồi trước đây của Google Pay API có thể đã trả về số điện thoại trong địa chỉ giao hàng khi người dùng yêu cầu số điện thoại. Google Pay API không còn hỗ trợ số điện thoại giao hàng trong bất kỳ phiên bản nào. Bạn phải cập nhật mọi trình xử lý phản hồi dự kiến có số điện thoại giao hàng.

apiVersion 1

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

apiVersion 2

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

Phản hồi PaymentData

Phản hồi đối tượng PaymentData cho những trang web đặt giá trị thuộc tính apiVersion2 trong PaymentDataRequest đã thay đổi thành thẻ tham chiếu làm một trong nhiều phản hồi dữ liệu thanh toán có thể có. Các thuộc tính apiVersionapiVersionMinor có trong đối tượng PaymentDataRequest sẽ xuất hiện trong phản hồi PaymentData để cho biết định dạng dự kiến.

apiVersion 1

{
  // no version specified
}

apiVersion 2

{
  apiVersion: 2,
  apiVersionMinor: 0
}

Thông tin về một phương thức thanh toán đã chọn và quy trình mã hoá của phương thức đó được đặt bên trong thuộc tính paymentMethodData. Hai thuộc tính đã bị xoá khỏi đối tượng cardInfo của phương thức thanh toán bằng thẻ: 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'
    }
  }
}

Nội dung phản hồi cho thư được mã hoá

Những trang web chỉ định loại mã hoá phương thức thanh toán DIRECT và chấp nhận phương thức thanh toán TOKENIZED_CARD của API phiên bản 1 phải cập nhật cách xử lý thuộc tính encryptedMessage đã giải mã. Trang web phải thực hiện việc này để tiếp tục chuyển tiếp mã thông báo thiết bị Android được xác thực bằng mật mã 3-D Secure và chỉ báo thương mại điện tử (ECI) không bắt buộc đến cổng hoặc bộ xử lý của bạn. Thẻ là paymentMethod của CARD, với thông tin bổ sung về phương thức xác thực của thẻ đã chọn trong 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"
  }
}