DOCS

Profili cliente

Profili cliente

Precarica in Zonos Checkout le informazioni degli acquirenti abituali.

I profili cliente semplificano l'esperienza di checkout consentendo ai clienti con un account di precaricare l'indirizzo e i dettagli di pagamento.

Questa funzionalità è attualmente disponibile solo per integrazioni API personalizzate. Non è ancora disponibile per i commercianti che utilizzano i plugin Checkout.

Se vendi a rivenditori, enti pubblici o organizzazioni no profit, puoi anche sincronizzare i loro certificati di esenzione fiscale con un profilo cliente.

Per autenticare un profilo cliente, il tuo server backend deve effettuare due chiamate API indipendenti, che consigliamo di eseguire in parallelo per migliori prestazioni:

  • createCart: genera il carrello Zonos. Per istruzioni dettagliate, consulta la sezione Configura Zonos Checkout nella documentazione sull'integrazione personalizzata.

  • checkoutCustomerProfileAuthenticate: invia e convalida le informazioni del cliente.

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}

Quando convalidi la sessione del cliente, assicurati che il customerId passato nella richiesta corrisponda al profilo corretto, in modo da mostrare informazioni accurate sul cliente al checkout. Tieni presente che, quando crei un carrello, non devi includere customerId nei metadati perché verrà sovrascritto.

Dopo l'autenticazione del cliente e l'invio dell'ordine, customerId sarà disponibile in order.references quando recuperi i dettagli dell'ordine tramite la query dell'ordine, consentendoti di associare l'ordine al cliente corretto.

Dopo aver chiamato entrambe le mutation, riceverai quanto segue:

  • cartId dalla mutation createCart per generare il carrello.

  • Un oneTimePassword dalla mutation checkoutCustomerProfileAuthenticate per l'autenticazione del cliente.

Puoi passare entrambi questi valori nel callback createCartId della funzione Zonos.init per caricare in Checkout le informazioni del profilo cliente fornite.

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}

La prima volta che invii informazioni sul cliente, Zonos memorizzerà le informazioni fornite. I metodi di pagamento verranno archiviati in modo sicuro in Stripe. Ogni volta che vengono trasmessi nuovi dettagli dell'indirizzo o del metodo di pagamento, verranno aggiunti al profilo del cliente.

Indirizzi e metodi di pagamento possono essere solo aggiunti: quelli esistenti non possono essere modificati o rimossi. Nome, email e telefono del cliente possono essere aggiornati con checkoutCustomerUpsert.

Crea o aggiorna un profilo senza un acquirente 

checkoutCustomerProfileAuthenticate richiede la presenza dell'acquirente, poiché genera una password monouso per quella sessione di checkout. Quando vuoi creare o aggiornare un profilo al di fuori di un checkout — ad esempio caricando in anticipo l'elenco dei clienti, sincronizzando le modifiche al profilo dal tuo sistema o allegando le esenzioni fiscali prima del primo ordine di un cliente — utilizza invece 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}

I profili vengono abbinati in base al customerId, quindi richiamare questa mutation più volte aggiorna lo stesso profilo invece di crearne duplicati. È sicuro eseguirla periodicamente su tutto l'elenco clienti.

Tre cose da sapere su come vengono applicati gli aggiornamenti:

  • I campi omessi non vengono modificati. Inviando solo name si aggiorna il nome, lasciando invariati email e telefono.
  • I valori non possono essere cancellati. Inviare un valore vuoto viene trattato come l'omissione del campo, quindi non è possibile rimuovere nome, email o telefono una volta impostati.
  • Gli indirizzi vengono solo aggiunti. Una località già presente nel profilo non viene duplicata, e le località non incluse nella richiesta non vengono rimosse.

checkoutCustomerUpsert non restituisce una oneTimePassword. Per caricare un profilo in Checkout hai comunque bisogno di checkoutCustomerProfileAuthenticate, che ne genera una per quella sessione.

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

Questa pagina è stata utile?