Отправка аутентифицированной информации о клиенте
Для аутентификации профиля клиента ваш бэкенд-сервер должен выполнить два независимых вызова API, которые мы рекомендуем выполнять параллельно для лучшей производительности:
-
createCart: Генерирует корзину Zonos. Для подробного руководства см. раздел Настройка Zonos Checkout в документации по пользовательской интеграции. -
checkoutCustomerProfileAuthenticate: Отправляет и проверяет информацию о клиенте.
mutation checkoutCustomerProfileAuthenticate($input: CheckoutCustomerProfileAuthenticateInput!) { checkoutCustomerProfileAuthenticate(input: $input) { email customerId organizationId name phone locations { administrativeArea countryCode locality line1 line2 postalCode } oneTimePassword }}При проверке сессии клиента убедитесь, что customerId, который вы передаёте в запросе, соответствует правильному профилю для отображения точной информации о клиенте при оформлении покупки. Помните, что при создании корзины не следует включать customerId в метаданные, так как он будет перезаписан.
После аутентификации клиента и размещения заказа customerId будет доступен в order.references при получении сведений о заказе через запрос заказа, что позволит вам связать заказ с правильным клиентом.
Создание корзины с профилем клиента
После вызова обеих мутаций вы получите следующее:
-
cartIdиз мутацииcreateCartдля генерации корзины. -
oneTimePasswordиз мутацииcheckoutCustomerProfileAuthenticateдля аутентификации клиента.
Вы можете передать оба эти значения в обратный вызов createCartId в функции Zonos.init для загрузки предоставленной информации профиля клиента в Checkout.
Zonos.init({ ... checkoutSettings: { ... createCartId: async () => { const result = await fetch( 'https://api.merchant.com/api/get-cart-info', { body: JSON.stringify(payload), method: 'POST', }, ); const json = await result.json(); return { cartId: json.cartId, customerAuthenticationToken: json.customerProfileAuthenticate ?.checkoutCustomerProfileAuthenticate.oneTimePassword || '', }; } },}Управление профилями клиентов
При первой отправке информации о клиенте Zonos сохранит предоставленную информацию о клиенте. Платёжные методы будут безопасно сохранены в Stripe. Каждый раз при передаче новых адресов или реквизитов способа платежа они будут добавлены в профиль клиента.
Адреса и платёжные методы можно только добавлять — существующие нельзя редактировать или удалить. Имя, email и телефон клиента можно обновить с помощью checkoutCustomerUpsert.
Создание или обновление профиля без покупателя
checkoutCustomerProfileAuthenticate требует присутствия покупателя, поскольку эта мутация выпускает одноразовый пароль для данной сессии оформления покупки. Когда вам нужно создать или обновить профиль вне оформления покупки — заранее загрузить список клиентов, синхронизировать изменения профиля из вашей собственной системы или прикрепить сертификаты освобождения от налогов до первого заказа клиента — используйте вместо этого checkoutCustomerUpsert.
mutation checkoutCustomerUpsert($input: CheckoutCustomerProfileInput!) { checkoutCustomerUpsert(input: $input) { customerId email name phone locations { administrativeArea countryCode line1 line2 locality postalCode } }}Профили сопоставляются по customerId, поэтому повторный вызов этой мутации обновляет один и тот же профиль, а не создаёт дубликаты. Её можно безопасно запускать по всему списку клиентов по расписанию.
Вот три важных момента о том, как применяются обновления:
- Пропущенные поля остаются без изменений. Если передать только
name, обновится только имя, а email и телефон останутся прежними. - Значения нельзя очистить. Передача пустого значения равнозначна пропуску поля, поэтому удалить уже заданные имя, email или телефон невозможно.
- Адреса только добавляются. Адрес, уже существующий в профиле, не дублируется, а адреса, не включённые в запрос, не удаляются.
Профили клиентов
Предварительно загружайте информацию постоянных покупателей в Zonos Checkout.
Профили клиентов упрощают процесс оформления покупки, позволяя клиентам с аккаунтом предварительно загрузить свой адрес и платежные реквизиты.
Эта функция в настоящее время доступна только для пользовательских интеграций API. Эта функция пока недоступна для продавцов, использующих плагины Checkout.
Если вы продаёте перепродавцам, государственным учреждениям или некоммерческим организациям, вы также можете синхронизировать их сертификаты освобождения от налогов с профилем клиента.