Update ke versi terbaru

Google Pay API memperkenalkan struktur objek baru untuk PaymentDataRequest dan IsReadyToPayRequest pada Juli 2018. Panduan ini menjelaskan cara memperbarui objek yang diformat untuk Google Pay API versi 1 menjadi objek yang diformat untuk versi 2.

Metode pembayaran

Versi API ditentukan dengan setiap objek permintaan di Google Pay API versi 2.

Google Pay API versi 1 mendukung kartu sebagai satu-satunya metode pembayaran. CARD metode pembayaran adalah salah satu dari beberapa opsi metode pembayaran yang mungkin dalam Google Pay API versi 2. Situs yang sebelumnya menentukan nilai allowedPaymentMethods sebesar CARD kini harus menetapkan nilai allowedAuthMethods sebesar PAN_ONLY. Situs yang sebelumnya menentukan nilai allowedPaymentMethods sebesar TOKENIZED_CARD kini harus menetapkan nilai allowedAuthMethods sebesar CRYPTOGRAM_3DS.

Jaringan kartu yang diizinkan ditentukan bersama dengan metode autentikasi yang didukung untuk kartu di jaringan tersebut.

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

Jaringan kartu yang diizinkan dan metode autentikasinya disertakan dalam IsReadyToPayRequest untuk CARD metode pembayaran.

Tokenisasi data pembayaran kartu

Google Pay API menampilkan data kartu terenkripsi yang dirujuk oleh gateway yang Anda tentukan atau didekripsi di server Anda. Google Pay API versi 2 memindahkan tokenisasi metode pembayaran di dalam metode pembayaran 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 merchant Google

ID penjual Google adalah properti tingkat teratas di Google Pay API versi 1. Sekarang, ID penjual Google ditempatkan di dalam objek MerchantInfo dengan nama penjual opsional.

apiVersion 1

{
  merchantId: '12345678901234567890'
}

apiVersion 2

{
  merchantInfo: {
    merchantId: '12345678901234567890'
  }
}

Alamat penagihan

Alamat penagihan dan nomor telepon penagihan opsional dikaitkan dengan metode pembayaran CARD. Jika situs meminta alamat penagihan, konfigurasi apa pun yang terkait dengan respons yang diharapkan ditempatkan di dalam objek BillingAddressParameters.

apiVersion 1

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

apiVersion 2

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

Alamat pengiriman

Persyaratan alamat pengiriman opsional tetap berada di tingkat teratas objek PaymentDataRequest. Properti shippingAddressRequirements telah diganti namanya menjadi shippingAddressParameters.

Respons Google Pay API sebelumnya mungkin menampilkan nomor telepon sebagai bagian dari alamat pengiriman saat nomor telepon diminta. Nomor telepon pengiriman tidak lagi didukung oleh Google Pay API di versi apa pun. Semua handler respons yang mengharapkan nomor telepon pengiriman harus diperbarui.

apiVersion 1

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

apiVersion 2

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

Respons PaymentData

Respons objek PaymentData untuk situs yang menetapkan nilai properti apiVersion 2 di PaymentDataRequest telah berubah menjadi kartu referensi sebagai salah satu dari beberapa kemungkinan respons data pembayaran. Properti apiVersion dan apiVersionMinor yang disertakan dalam objek PaymentDataRequest muncul dalam respons PaymentData untuk menunjukkan format yang diharapkan.

apiVersion 1

{
  // no version specified
}

apiVersion 2

{
  apiVersion: 2,
  apiVersionMinor: 0
}

Informasi tentang metode pembayaran yang dipilih dan tokenisasinya ditempatkan di dalam properti paymentMethodData. Dua properti telah dihapus dari objek cardInfo metode pembayaran kartu: cardClass dan 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'
    }
  }
}

Respons pesan terenkripsi

Situs yang menentukan jenis tokenisasi metode pembayaran DIRECT dan menerima metode pembayaran API versi 1 TOKENIZED_CARD harus memperbarui cara mereka menangani properti encryptedMessage yang didekripsi. Situs harus melakukannya untuk terus meneruskan token perangkat Android yang diautentikasi dengan kriptogram 3-D Secure dan indikator e-commerce (ECI) opsional ke gateway atau pemroses Anda. Kartu adalah paymentMethod dari CARD, dengan informasi tambahan tentang metode autentikasi kartu yang dipilih di 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"
  }
}