DOCS

Профили клиентов

Профили клиентов

Предварительно загружайте информацию постоянных покупателей в Zonos Checkout.

Профили клиентов упрощают процесс оформления покупки, позволяя клиентам с аккаунтом предварительно загрузить свой адрес и платежные реквизиты.

Эта функция в настоящее время доступна только для пользовательских интеграций API. Эта функция пока недоступна для продавцов, использующих плагины Checkout.

Если вы продаёте перепродавцам, государственным учреждениям или некоммерческим организациям, вы также можете синхронизировать их сертификаты освобождения от налогов с профилем клиента.

Для аутентификации профиля клиента ваш бэкенд-сервер должен выполнить два независимых вызова API, которые мы рекомендуем выполнять параллельно для лучшей производительности:

  • createCart: Генерирует корзину Zonos. Для подробного руководства см. раздел Настройка Zonos Checkout в документации по пользовательской интеграции.

  • checkoutCustomerProfileAuthenticate: Отправляет и проверяет информацию о клиенте.

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}

При проверке сессии клиента убедитесь, что customerId, который вы передаёте в запросе, соответствует правильному профилю для отображения точной информации о клиенте при оформлении покупки. Помните, что при создании корзины не следует включать customerId в метаданные, так как он будет перезаписан.

После аутентификации клиента и размещения заказа customerId будет доступен в order.references при получении сведений о заказе через запрос заказа, что позволит вам связать заказ с правильным клиентом.

После вызова обеих мутаций вы получите следующее:

  • cartId из мутации createCart для генерации корзины.

  • oneTimePassword из мутации checkoutCustomerProfileAuthenticate для аутентификации клиента.

Вы можете передать оба эти значения в обратный вызов createCartId в функции Zonos.init для загрузки предоставленной информации профиля клиента в 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}

При первой отправке информации о клиенте Zonos сохранит предоставленную информацию о клиенте. Платёжные методы будут безопасно сохранены в Stripe. Каждый раз при передаче новых адресов или реквизитов способа платежа они будут добавлены в профиль клиента.

Адреса и платёжные методы можно только добавлять — существующие нельзя редактировать или удалить. Имя, email и телефон клиента можно обновить с помощью checkoutCustomerUpsert.

Создание или обновление профиля без покупателя 

checkoutCustomerProfileAuthenticate требует присутствия покупателя, поскольку эта мутация выпускает одноразовый пароль для данной сессии оформления покупки. Когда вам нужно создать или обновить профиль вне оформления покупки — заранее загрузить список клиентов, синхронизировать изменения профиля из вашей собственной системы или прикрепить сертификаты освобождения от налогов до первого заказа клиента — используйте вместо этого 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}

Профили сопоставляются по customerId, поэтому повторный вызов этой мутации обновляет один и тот же профиль, а не создаёт дубликаты. Её можно безопасно запускать по всему списку клиентов по расписанию.

Вот три важных момента о том, как применяются обновления:

  • Пропущенные поля остаются без изменений. Если передать только name, обновится только имя, а email и телефон останутся прежними.
  • Значения нельзя очистить. Передача пустого значения равнозначна пропуску поля, поэтому удалить уже заданные имя, email или телефон невозможно.
  • Адреса только добавляются. Адрес, уже существующий в профиле, не дублируется, а адреса, не включённые в запрос, не удаляются.

checkoutCustomerUpsert не возвращает oneTimePassword. Чтобы загрузить профиль в Checkout, вам всё ещё понадобится checkoutCustomerProfileAuthenticate, которая выпускает его для данной сессии.

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

Была ли эта страница полезной?


На этой странице: