DOCS

Profile klientów

Profile klientów

Wstępnie załaduj informacje kupujących do Zonos Checkout.

Profile klientów usprawniają doświadczenie zakupowe, umożliwiając klientom posiadającym konto wstępne załadowanie danych adresowych i informacji o płatności.

Ta funkcja jest obecnie dostępna tylko dla niestandardowych integracji API. Ta funkcja nie jest jeszcze dostępna dla handlowców korzystających z wtyczek Checkout.

Jeśli sprzedajesz odsprzedawcom, agencjom rządowym lub organizacjom non-profit, możesz również zsynchronizować ich certyfikaty zwolnienia podatkowego z profilem klienta.

Aby uwierzytelnić profil klienta, serwer zaplecza musi wykonać dwa niezależne wywołania API, które zalecamy uruchamiać równolegle w celu uzyskania lepszej wydajności:

  • createCart: Generuje koszyk Zonos. Aby uzyskać szczegółowe wskazówki, zapoznaj się z sekcją Skonfiguruj Zonos Checkout w dokumentacji integracji niestandardowej.

  • checkoutCustomerProfileAuthenticate: Przesyła i sprawdza poprawność informacji klienta.

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}

Podczas sprawdzania sesji klienta upewnij się, że customerId przesłany w żądaniu odpowiada prawidłowemu profilowi, aby wyświetlić dokładne informacje o kliencie w kasie. Pamiętaj, że podczas tworzenia koszyka nie należy dołączać customerId w metadanych, ponieważ zostanie on nadpisany.

Po uwierzytelnieniu klienta i złożeniu zamówienia customerId będzie dostępny w order.references podczas pobierania szczegółów zamówienia za pośrednictwem zapytania dotyczącego zamówienia, umożliwiając powiązanie zamówienia z prawidłowym klientem.

Po wywołaniu obu mutacji otrzymasz następujące:

  • cartId z mutacji createCart do wygenerowania koszyka.

  • oneTimePassword z mutacji checkoutCustomerProfileAuthenticate do uwierzytelnienia klienta.

Możesz przekazać obie te wartości w callbacku createCartId w funkcji Zonos.init, aby załadować podane informacje profilu klienta do 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}

Gdy informacje o kliencie zostaną przesłane po raz pierwszy, Zonos zapisze podane dane klienta. Metody płatności będą bezpiecznie przechowywane w Stripe. Za każdym razem, gdy zostaną przekazane nowe dane adresowe lub metody płatności, zostaną dodane do profilu klienta.

Adresy i metody płatności można wyłącznie dodawać — istniejących nie można edytować ani usuwać. Imię i nazwisko, adres e-mail oraz numer telefonu klienta można zaktualizować za pomocą checkoutCustomerUpsert.

Utwórz lub zaktualizuj profil bez kupującego 

checkoutCustomerProfileAuthenticate wymaga obecności kupującego, ponieważ wystawia jednorazowe hasło dla tej sesji checkout. Gdy chcesz utworzyć lub zaktualizować profil poza sesją checkout — wczytując listę klientów z wyprzedzeniem, synchronizując zmiany profilu z własnego systemu lub dołączając zwolnienia podatkowe przed pierwszym zamówieniem klienta — użyj zamiast tego checkoutCustomerUpsert.

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}

Profile są dopasowywane na podstawie customerId, więc wielokrotne wywołanie aktualizuje ten sam profil zamiast tworzyć duplikaty. Można je bezpiecznie uruchamiać dla całej listy klientów zgodnie z harmonogramem.

Trzy rzeczy, które warto wiedzieć o działaniu aktualizacji:

  • Pominięte pola pozostają bez zmian. Wysłanie samego pola name aktualizuje imię i nazwisko, pozostawiając adres e-mail i numer telefonu bez zmian.
  • Wartości nie można wyczyścić. Wysłanie pustej wartości jest traktowane tak samo jak pominięcie pola, więc nie ma sposobu na usunięcie imienia i nazwiska, adresu e-mail ani numeru telefonu po ich ustawieniu.
  • Adresy są wyłącznie dodawane. Lokalizacja, która już istnieje w profilu, nie zostanie zduplikowana, a lokalizacje pominięte w żądaniu nie zostaną usunięte.

checkoutCustomerUpsert nie zwraca oneTimePassword. Aby załadować profil do Checkout nadal potrzebujesz checkoutCustomerProfileAuthenticate, które wystawia je dla tej sesji.

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

Czy ta strona była pomocna?