Method: associateAccount

Mengaitkan akun pelanggan dengan pemroses pembayaran ke instrumen Google yang ditambahkan.

Pengaitan akun terjadi setelah integrator mengautentikasi pengguna. Pengaitan terjadi melalui panggilan server ke server yang berisi requestId untuk alur autentikasi terkait (authenticationRequestId), associationId, dan googlePaymentToken (GPT). Pemroses pembayaran harus mengaitkan associationId dan googlePaymentToken ke akun pelanggan untuk autentikasi. GPT digunakan untuk memulai pembayaran. associationId digunakan selama panggilan autentikasi ulang untuk mengidentifikasi akun untuk autentikasi.

Jika Google mengirimkan associationId atau googlePaymentToken yang telah dilihat integrator selama pengaitan yang berbeda, maka integrator akan menampilkan error.

Jika endpoint mengalami error saat memproses permintaan, isi respons dari endpoint ini harus berjenis ErrorResponse.

Contoh permintaan terlihat seperti:


{
  "requestHeader": {
    "protocolVersion": {
      "major": 1,
      "minor": 0,
      "revision": 0
    },
    "requestId": "cmVxdWVzdDE",
    "requestTimestamp": "1481899949606"
 },
 "googlePaymentToken": "ZXhhbXBsZSB1bmlxdWUgcGF5bWVudCB0b2tlbiB2YWx1ZQ__",
 "authenticationRequestId": "bnAxdWTydDX==",
 "associationId": "LmddbXBsZSByZWZlcmVuY2UgdG9rZW4gdmFsdWU_",
 "provideUserInformation": true
}

Contoh respons akan terlihat seperti ini:


  {
  "responseHeader": {
    "responseTimestamp": "1481899949611"
  },
  "paymentIntegratorAssociateAccountId": "xx77df88934hfd",
  "accountId": "1234-5678-91",
  "accountNickname": "***-91",
  "tokenExpirationTime": "0",
  "userInformation": {
    "name": "Example Customer",
    "addressLine": ["123 Main St"],
    "localityName": "Springfield",
    "administrativeAreaName": "CO",
    "postalCodeNumber": "80309",
    "countryCode": "US"
  },
  "result": "SUCCESS"
}

Permintaan HTTP

POST https://www.integratorhost.example.com/v1/associateAccount

Isi permintaan

Isi permintaan memuat data dengan struktur berikut:

Representasi JSON
{
  "requestHeader": {
    object (RequestHeader)
  },
  "provideUserInformation": boolean,
  "googlePaymentToken": string,
  "associationId": string,

  // Union field account_verification can be only one of the following:
  "authenticationRequestId": string,
  "otpVerification": {
    object (OtpVerification)
  }
  // End of list of possible types for union field account_verification.
}
Kolom
requestHeader

object (RequestHeader)

WAJIB: Header umum untuk semua permintaan.

provideUserInformation

boolean

WAJIB: Berlaku jika kami ingin integrator memberikan alamat yang terkait dengan akun ini.

googlePaymentToken

string

WAJIB: Token yang akan digunakan Google untuk memulai pembelian dengan pemroses pembayaran.

Ini adalah string yang memiliki panjang maksimum 100 karakter.

associationId

string

WAJIB: ID pengaitan ini. ID ini dibuat oleh Google dan dikirim selama alur autentikasi ulang untuk mengidentifikasi akun mana yang harus diautentikasi.

Ini adalah string yang memiliki panjang maksimum 100 karakter.

Kolom union account_verification.

account_verification hanya dapat berupa salah satu dari yang berikut:

authenticationRequestId

string

OPSIONAL: requestId permintaan autentikasi yang mendahului panggilan ini. ID ini dibuat oleh Google selama alur autentikasi. Ini hanya ada jika pengguna menggunakan autentikasi aplikasi Android, autentikasi web, atau metode autentikasi asinkron yang menggunakan authenticationResultNotification.

otpVerification

object (OtpVerification)

OPSIONAL: Data yang diperlukan untuk memverifikasi OTP yang dihasilkan dari sendOtp. Ini hanya ada jika pengguna melalui jalur sendOtp.

Isi respons

Objek respons untuk metode akun pengaitan.

Jika berhasil, isi respons memuat data dengan struktur berikut:

Representasi JSON
{
  "responseHeader": {
    object (ResponseHeader)
  },
  "paymentIntegratorAssociateAccountId": string,
  "tokenExpirationTime": string,
  "accountId": string,
  "userMessage": string,
  "userInformation": {
    object (UserInformation)
  },
  "result": enum (AssociateAccountResultCode),

  // Union field account_names can be only one of the following:
  "accountNickname": string,
  "fullAccountNickname": string
  // End of list of possible types for union field account_names.
}
Kolom
responseHeader

object (ResponseHeader)

WAJIB: Header umum untuk semua respons.

paymentIntegratorAssociateAccountId

string

WAJIB: ID ini khusus untuk integrator dan dihasilkan oleh integrator. Nomor ini hanya digunakan untuk tujuan proses debug guna mengidentifikasi panggilan ini. Ini adalah pengenal yang digunakan integrator untuk mengenali panggilan ini.

tokenExpirationTime

string (int64 format)

OPSIONAL: Milidetik sejak epoch saat token berakhir masa berlakunya. Gunakan 0 untuk menandakan bahwa token masih berlaku.

accountId

string

WAJIB: ID akun yang dimiliki pengguna dengan integrator. Tindakan ini digunakan untuk risiko Google memahami penggunaan kembali akun dan hubungan akun serta agen operasi pelanggan Google untuk membantu pelanggan mendiagnosis masalah. ID ini harus dapat dikenali pengguna (misalnya, pengguna mengetahui ID ini karena ID ini muncul di laporan mutasinya atau muncul di situs setelah login ke akun).

Nilai ini harus tidak dapat diubah selama masa berlaku akun.

userMessage
(deprecated)

string

TIDAK DIGUNAKAN LAGI: Deskripsi hasil yang akan ditampilkan kepada pengguna jika hasilnya bukan SUCCESS.

userInformation

object (UserInformation)

WAJIB: Informasi pengguna yang diketahui dan akan dibagikan oleh integrator terkait pelanggan ini kepada Google. Digunakan untuk informasi risiko dan mengisi otomatis alamat.

result

enum (AssociateAccountResultCode)

WAJIB: Hasil dari pengaitan ini.

Kolom union account_names.

account_names hanya dapat berupa salah satu dari yang berikut:

accountNickname

string

OPSIONAL: String yang digunakan pengguna untuk mengetahui akun ini untuk tujuan tampilan. Ini adalah akhiran nama panggilan akun. Misalnya empat digit terakhir nomor telepon. Google akan menunjukkan di antarmuka pengguna bahwa ini hanya akhiran nama panggilan.

Nilai ini akan ditampilkan di UI, seperti alur pembelian, agar pengguna dapat membedakan berbagai metode pembayaran.

fullAccountNickname

string

OPSIONAL: String yang digunakan pengguna untuk mengetahui akun ini untuk tujuan tampilan. Tidak seperti accountNickname, ini adalah nama panggilan akun lengkap. Misalnya, 56565-56501 untuk nomor telepon atau sally@sample-email.com untuk identitas email.

Nilai ini akan ditampilkan di UI, seperti alur pembelian, agar pengguna dapat membedakan berbagai metode pembayaran.

UserInformation

Struktur yang menyimpan informasi tentang pengguna.

Representasi JSON
{
  "name": string,
  "addressLine": [
    string
  ],
  "localityName": string,
  "administrativeAreaName": string,
  "postalCodeNumber": string,
  "countryCode": string,
  "phone": string,
  "emailAddress": string
}
Kolom
name

string

OPSIONAL: Nama lengkap pelanggan.

addressLine[]

string

OPSIONAL: Kolom ini menyimpan teks Alamat yang tidak terstruktur.

localityName

string

OPSIONAL: Istilah ini samar-samar, tetapi umumnya mengacu pada bagian kota dari suatu alamat. Di wilayah dunia dengan lokalitas yang tidak didefinisikan dengan baik atau tidak cocok dengan struktur ini (misalnya, Jepang dan China), biarkan localityName kosong dan gunakan addressLine.

Contoh: US city, IT comune, UK post city.

administrativeAreaName

string

OPSIONAL: Subdivisi administratif tingkat teratas negara ini" Contoh: Negara bagian AS, wilayah IT, provinsi CN, prefektur Jepang.

postalCodeNumber

string

OPSIONAL: Terlepas dari namanya, nilai posCodeNumber sering kali berupa alfanumerik. Contoh: "94043", "SW1W", "SW1W 9TQ".

countryCode

string

OPSIONAL: Kode negara alamat pelanggan, diharapkan sesuai dengan ISO-3166-1 Alpha-2.

phone

string

OPSIONAL: Nomor telepon pelanggan.

emailAddress

string

OPSIONAL: Alamat email pelanggan.

AssociateAccountResultCode

Kode hasil untuk akun pengaitan.

Enum
UNKNOWN_RESULT Jangan pernah menetapkan nilai default ini!
SUCCESS Pengaitan berhasil.
USER_AUTHENTICATION_FAILED Meskipun paket autentikasi akun ditampilkan, autentikasi pengguna gagal.
NOT_ELIGIBLE Akun pengguna tidak memenuhi syarat untuk layanan ini.
OTP_NOT_MATCHED OTP tidak cocok dengan yang dikirim integrator.
OTP_ALREADY_USED OTP sudah digunakan.
OTP_LIMIT_REACHED Pengguna telah meminta atau mencoba memverifikasi terlalu banyak OTP.
OTP_EXPIRED OTP telah berakhir.