DOCS

Perfis de clientes

Perfis de clientes

Pré-carregue as informações do comprador recorrente no Zonos Checkout.

Os perfis de cliente simplificam sua experiência de checkout, permitindo que os clientes com uma conta preencham previamente seu endereço e detalhes de pagamento.

No momento, esse recurso está disponível apenas para integrações personalizadas da API. Este recurso ainda não está disponível para comerciantes que usam plug-ins Checkout.

Se você vende para revendedores, órgãos públicos ou organizações sem fins lucrativos, também é possível sincronizar seus certificados de isenção fiscal com um perfil de cliente.

Para autenticar um perfil de cliente, seu servidor backend deve fazer duas chamadas API independentes, que recomendamos executar em paralelo para melhor desempenho:

  • createCart: Gera o carrinho Zonos. Para obter orientações detalhadas, consulte a seção Configurar Zonos Checkout na documentação de integração personalizada.

  • checkoutCustomerProfileAuthenticate: Envia e valida as informações do 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}

Ao validar a sessão do cliente, certifique-se de que o customerId que foi passado na solicitação corresponde ao perfil correto para exibir informações precisas do cliente na finalização da compra. Observe que ao criar um carrinho, você não deve incluir customerId nos metadados, pois será substituído.

Depois que o cliente for autenticado e o pedido for feito, o customerId estará disponível em order.references ao recuperar os detalhes do pedido usando a consulta do pedido, permitindo associar o pedido ao cliente correto.

Depois de chamar ambas as mutações, você obterá o seguinte:

  • cartId da mutação createCart para gerar o carrinho.

  • Um oneTimePassword da mutação checkoutCustomerProfileAuthenticate para autenticação do cliente.

Você pode passar os dois valores no callback createCartId na função Zonos.init para carregar as informações do perfil do cliente fornecidas no 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}

Na primeira vez que você enviar informações do cliente, a Zonos armazenará as informações fornecidas. Os métodos de pagamento serão armazenados de forma segura no Stripe. Cada vez que novos dados de endereço ou forma de pagamento forem passados, eles serão adicionados ao perfil do cliente.

Endereços e formas de pagamento só podem ser adicionados—os já existentes não podem ser editados ou removidos. O nome, e-mail e telefone de um cliente podem ser atualizados com checkoutCustomerUpsert.

Crie ou atualize um perfil sem um comprador 

checkoutCustomerProfileAuthenticate exige a presença do comprador, já que emite uma senha de uso único para essa sessão de checkout. Quando você quiser criar ou atualizar um perfil fora de um checkout—carregando sua lista de clientes com antecedência, sincronizando alterações de perfil a partir do seu próprio sistema ou anexando isenções fiscais antes do primeiro pedido de um cliente—use 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}

Os perfis são combinados pelo customerId, portanto, chamar isso repetidamente atualiza o mesmo perfil em vez de criar duplicatas. É seguro executar isso em toda a sua lista de clientes de forma programada.

Três coisas a saber sobre como as atualizações são aplicadas:

  • Campos omitidos permanecem inalterados. Enviar apenas name atualiza o nome e mantém o e-mail e o telefone como estavam.
  • Os valores não podem ser apagados. Enviar um valor vazio é tratado da mesma forma que omitir o campo, portanto não há como remover um nome, e-mail ou telefone depois de definido.
  • Os endereços só são adicionados. Um endereço que já existe no perfil não é duplicado, e os endereços deixados de fora da solicitação não são removidos.

checkoutCustomerUpsert não retorna um oneTimePassword. Para carregar um perfil no Checkout, você ainda precisa do checkoutCustomerProfileAuthenticate, que emite um para essa sessão.

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

Esta página foi útil?