DOCS

Profil pelanggan

Profil pelanggan

Muat informasi pembeli berulang sebelumnya ke dalam Zonos Checkout.

Profil pelanggan menyederhanakan pengalaman checkout Anda dengan memungkinkan pelanggan dengan akun untuk memuat sebelumnya alamat dan detail pembayaran mereka.

Fitur ini saat ini hanya tersedia untuk integrasi API kustom. Fitur ini belum tersedia untuk pedagang yang menggunakan plugin Checkout.

Jika Anda menjual kepada reseller, instansi pemerintah, atau organisasi nirlaba, Anda juga dapat menyinkronkan sertifikat pembebasan pajak mereka ke profil pelanggan.

Untuk mengautentikasi profil pelanggan, server backend Anda harus membuat dua panggilan API independen, yang kami rekomendasikan untuk dijalankan secara paralel untuk kinerja yang lebih baik:

  • createCart: Menghasilkan keranjang Zonos. Untuk panduan terperinci, lihat bagian Siapkan Zonos Checkout dalam dokumentasi integrasi kustom.

  • checkoutCustomerProfileAuthenticate: Mengirimkan dan memvalidasi informasi pelanggan.

1mutation checkoutCustomerProfileAuthenticate(
2$input: CheckoutCustomerProfileAuthenticateInput!
3) {
4 checkoutCustomerProfileAuthenticate(input: $input) {
5 email
6 customerId
7 organizationId
8 name
9 phone
10 locations {
11 administrativeArea
12 countryCode
13 locality
14 line1
15 line2
16 postalCode
17 }
18 oneTimePassword
19 }
20}

Saat memvalidasi sesi pelanggan, pastikan bahwa customerId yang Anda berikan dalam permintaan cocok dengan profil yang benar untuk menampilkan informasi pelanggan yang akurat saat checkout. Ingat bahwa saat membuat keranjang, Anda tidak boleh menyertakan customerId dalam metadata, karena akan ditimpa.

Setelah pelanggan diautentikasi dan pesanan ditempatkan, customerId akan tersedia di order.references saat mengambil detail pesanan melalui kueri pesanan, memungkinkan Anda mengasosiasikan pesanan dengan pelanggan yang benar.

Setelah Anda memanggil kedua mutasi, Anda akan mendapatkan kembali berikut ini:

  • cartId dari mutasi createCart untuk menghasilkan keranjang.

  • Sebuah oneTimePassword dari mutasi checkoutCustomerProfileAuthenticate untuk autentikasi pelanggan.

Anda dapat meneruskan kedua nilai ini dalam callback createCartId dalam fungsi Zonos.init untuk memuat informasi profil pelanggan yang disediakan di Checkout.

1Zonos.init({
2 ...
3 checkoutSettings: {
4 ...
5 createCartId: async () => {
6 const result = await fetch(
7 'https://api.merchant.com/api/get-cart-info',
8 {
9 body: JSON.stringify(payload),
10 method: 'POST',
11 },
12 );
13 const json =
14 await result.json();
15 return {
16 cartId: json.cartId,
17 customerAuthenticationToken:
18 json.customerProfileAuthenticate
19 ?.checkoutCustomerProfileAuthenticate.oneTimePassword ||
20 '',
21 };
22 }
23 },
24}

Pertama kali Anda mengirimkan informasi pelanggan, Zonos akan menyimpan informasi pelanggan yang disediakan. Metode pembayaran akan disimpan dengan aman di Stripe. Setiap kali detail alamat atau metode pembayaran baru dimasukkan, mereka akan ditambahkan ke profil pelanggan.

Alamat dan metode pembayaran hanya dapat ditambahkan—yang sudah ada tidak dapat diedit atau dihapus. Nama, email, dan nomor telepon pelanggan dapat diperbarui dengan checkoutCustomerUpsert.

Buat atau perbarui profil tanpa pembeli 

checkoutCustomerProfileAuthenticate mengharuskan pembeli hadir, karena mutasi ini menerbitkan kata sandi satu kali untuk sesi checkout tersebut. Saat Anda ingin membuat atau memperbarui profil di luar checkout—memuat daftar pelanggan Anda terlebih dahulu, menyinkronkan perubahan profil dari sistem Anda sendiri, atau melampirkan pembebasan pajak sebelum pesanan pertama pelanggan—gunakan checkoutCustomerUpsert sebagai gantinya.

1mutation checkoutCustomerUpsert($input: CheckoutCustomerProfileInput!) {
2 checkoutCustomerUpsert(input: $input) {
3 customerId
4 email
5 name
6 phone
7 locations {
8 administrativeArea
9 countryCode
10 line1
11 line2
12 locality
13 postalCode
14 }
15 }
16}

Profil dicocokkan berdasarkan customerId, sehingga memanggil mutasi ini berulang kali akan memperbarui profil yang sama, bukan membuat duplikat. Aman untuk dijalankan pada seluruh daftar pelanggan Anda secara terjadwal.

Tiga hal yang perlu diketahui tentang cara penerapan pembaruan:

  • Kolom yang dihilangkan tidak diubah. Mengirimkan hanya name akan memperbarui nama dan membiarkan email serta nomor telepon tetap seperti sebelumnya.
  • Nilai tidak dapat dikosongkan. Mengirimkan nilai kosong diperlakukan sama seperti menghilangkan kolom tersebut, sehingga tidak ada cara untuk menghapus nama, email, atau nomor telepon setelah ditetapkan.
  • Alamat hanya dapat ditambahkan. Lokasi yang sudah ada pada profil tidak akan diduplikasi, dan lokasi yang tidak disertakan dalam permintaan tidak akan dihapus.

checkoutCustomerUpsert tidak mengembalikan oneTimePassword. Untuk memuat profil ke dalam Checkout Anda tetap memerlukan checkoutCustomerProfileAuthenticate, yang menerbitkan kata sandi tersebut untuk sesi itu.

GraphQL API ReferenceTypes, inputs, and operations used in this guide
Pesan demo

Apakah halaman ini bermanfaat?