Личный кабинет покупателей
Апи для работы с личным кабинетом покупателей
- /api/customer/account/register
- /api/customer/auth
- /api/customer/account/password_reset
- /api/customer/account/password_reset_confirm
- api/customer/info
- (POST) api/customer/info
- api/customer/orders
- api/customer/orders/cancelled
/api/customer/account/register
Создание нового аккаунта покупателя
/api/customer/account/register
Для регистрации необходимо выполнить следующий запрос
{
"email": "test@test.com",
"phone": "+798585858",
"firstName": "Ivan",
"lastName": "Ivanov",
"middleName": "Ivanocich"
}
Обязательные поля: email
Также необходимо в Header добавить domain, в котором указать нужный домен магазина.
Успех
возвращается сгенерированный пароль и jwt token для доступа
{
"success": true,
"authToken": {
"success": true,
"access_token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJpdmFuQHRlc3QuY29tIiwiZXhwIjoxNTk5MDU2MDA1fQ.-eEOV2NxHQAmt0habFOB18dr-P_drgS0S4YJmx15RMnTZYcGElwi7oEAgm-8qakr-aroYwyxrdwQ1NS_WVgYqA",
"token_type": "bearer",
"login": "ivan@test.com",
"expires_in": 14400,
"init_state": "completed"
},
"password": "8N9y8Jqb"
}
Ошибка
{
"success": false,
"errors": [
{
"code": 403,
"message": "Данный покупатель уже существует"
}
],
"authToken": null,
"password": null
}
/api/customer/auth
Авторизация
/api/customer/auth
Для авторизации необходимо выполнить следующий запрос
{
"emailLogin": "yura@test.com",
"password": "123456"
}
Также необходимо в Header добавить domain, в котором указать нужный домен магазина.
В ответ возвращается
Успех
{
"success": true,
"access_token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ3b3c1NkBtYWlsLnJ1IiwiZXhwIjoxNTQ2OTc2NzQ5fQ.4Zdev5PSIk1TmsPFxjxHukYwH1wa_efn19cfLIkT8k2g9xEeVMOnYK4A4pTC6NCpsp2kq8_dvygRxAyyEKNwiQ",
"token_type": "bearer",
"login": "wow56@mail.ru",
"expires_in": 14400
}
где access_token содержит токен для доступа
expires_in - количество секунд действительности выданного токена.
Ошибка:
{
"success": false,
"errors": [
{
"code": 401,
"message": "Unauthorized"
}
]
}
Для последующих методов, использовать ключ токена следующим образом:
в запросе должен быть header
и значением вида "Bearer {access_token}"
например Bearer
eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ3b3c1NUBtYWlsLnJ1IiwiZXhwIjoxNTQ2ODA3MjU3fQ.1vSO5DXhewQfjKITK76W8JhEZM_Wx2YgyEbdjfg9GDs0ymtRtmRgFuZen_n8fM00H1Uda_i6M2-Y1PbjN4edZA
/api/customer/account/password_reset
Запрос на сброс пароля покупателя
api/customer/account/password_reset
Для запроса сброса необходимо отправить следующий запрос:
{
"email":"test@test.ru"
}
Также необходимо в Header добавить domain, в котором указать нужный домен магазина.
В ответ возвращается
Успех:
{
"success": true
}
при этом, по указанному email отправляется письмо со ссылкой вида
http://localhost:33043/customer_password_reset_confirm/?t=6aaccd91-1045-4200-b105-b4db79490fee
Где адрес сервера будет взят из текущего адреса, включая домен 3 уровня.
срок действия токена - 1 час
Данная ссылка будет открыта пользователем в браузере GET запросом.
js код должен обработать открытие подобной ссылки и вывести пользователю запрос на ввод нового пароля и подтверждение пароля.
По нажатию кнопки подтверждения на данном экране создания нового пароля следует выполнить POST запрос на адрес
/api/customer/password_reset_confirm
с передачей токена из ссылки и нового пароля (см следующий метод).
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "Текст ошибки"
}
]
}
/api/customer/account/password_reset_confirm
Сброс пароля
/api/customer/account/password_reset_confirm
Для сброса необходимо выполнить запрос с передачей временного токена сброса пароля и нового пароля:
{
"token":"6aaccd91-1045-4200-b105-b4db79490fee",
"password": "abcd"
}
Также необходимо в Header добавить domain, в котором указать нужный домен магазина, для этого покупателя.
В ответ возвращается
Успех:
{
"success": true
}
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "Текст ошибки"
}
]
}
api/customer/info
Запрос данных покупателя
api/customer/info
Метод возвращает информацию о текущем покупателе.
Параметр | Тип / формат | Описание |
id |
string |
Идентификатор пользователя |
emailLogin |
string |
Почта пользователя - является логином |
firstName |
string |
Имя |
lastName | string | Фамилия |
middleName | string | Отчество |
fullName | string | Имя в формате ФИО |
phone | string | Отформатированный телефон |
rawPhone | string | Телефон |
alternativeRawPhome | string | Дополнительный телефон |
alternativePhone | string | Дополнительный отформатированный телефон |
address |
object |
Адрес пользователя |
consentToNewsletter |
boolean |
Согласие на email рассылку |
Пример результата запроса:
{
"id": "9a5e8591-7ea7-adb6-34db-546f105fc11a",
"emailLogin": "ivan@test.com",
"firstName": "Ivan",
"lastName": "Ivanov",
"middleName": "Ivanovich",
"fullName": "Ivanov Ivan Ivanovich",
"phone": "",
"rawPhone": "+7985858585",
"alternativePhone": ""
"address": {
"country": "Россия",
"countryCode": "RU",
"region": "Московская",
"area": null,
"city": "Красногорск",
"settlement": "Ангелово",
"street": "мкр МЖК Росинка",
"house": "74/1",
"block": "",
"building": "",
"flat": "1",
"fullAddress": "Московская обл, г Красногорск, село Ангелово, мкр МЖК Росинка, д 74/1, кв. 1",
"fullCity": null,
"rawData": null,
"zip": "143442",
"regionFias": "29251dcf-00a1-4e34-98d4-5c47484a36d4",
"areaFias": null,
"cityFias": "63fcf18a-365e-451f-baee-8d09ac50b773",
"settlementFias": "2b627d06-2257-4c20-83b1-5efa10ef57b4"
},
"consentToNewsletter": true
}
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "Покупатель не найден"
}
]
}
(POST) api/customer/info
Редактировать информацию о покупателе
api/customer/info
Производит редактирование профиля текущего покупателя.
пример запроса:
{
"rawPhone": "+7985858585",
"firstName": "Oleg",
"lastName": "Pushkin",
"middleName": "Ivanov"
"password": "123456",
"rawAlternativePhone": "+85645545454",
"address": {
"country": "Россия",
"countryCode": "RU",
"region": "Московская",
"area": null,
"city": "Красногорск",
"settlement": "Ангелово",
"street": "мкр МЖК Росинка",
"house": "74/1",
"block": "",
"building": "",
"flat": "1",
"fullAddress": "Московская обл, г Красногорск, село Ангелово, мкр МЖК Росинка, д 74/1, кв. 1",
"fullCity": null,
"rawData": null,
"zip": "143442",
"regionFias": "29251dcf-00a1-4e34-98d4-5c47484a36d4",
"areaFias": null,
"cityFias": "63fcf18a-365e-451f-baee-8d09ac50b773",
"settlementFias": "2b627d06-2257-4c20-83b1-5efa10ef57b4"
},
"consentToNewsletter": true
}
В ответ возвращается
Успех:
В случае успеха вернется обновленный покупатель:
{
"id": "9a5e8591-7ea7-adb6-34db-546f105fc11a",
"emailLogin": "ivan@test.com",
"rawPhone": "+7985858585",
"firstName": "Oleg",
"lastName": "Pushkin",
"middleName": "Ivanov"
"rawAlternativePhone": "+85645545454",
"fullName": "Pushkin Oleg Ivanov",
"phone": "",
"alternativePhone": ""
"address": {
"country": "Россия",
"countryCode": "RU",
"region": "Московская",
"area": null,
"city": "Красногорск",
"settlement": "Ангелово",
"street": "мкр МЖК Росинка",
"house": "74/1",
"block": "",
"building": "",
"flat": "1",
"fullAddress": "Московская обл, г Красногорск, село Ангелово, мкр МЖК Росинка, д 74/1, кв. 1",
"fullCity": null,
"rawData": null,
"zip": "143442",
"regionFias": "29251dcf-00a1-4e34-98d4-5c47484a36d4",
"areaFias": null,
"cityFias": "63fcf18a-365e-451f-baee-8d09ac50b773",
"settlementFias": "2b627d06-2257-4c20-83b1-5efa10ef57b4"
},
"consentToNewsletter": true
}
ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "Покупатель не найден"
}
]
}
api/customer/orders
Запрос списка заказов
api/customer/orders
Метод возвращает список заказов текущего покупателя.
Пейджинация
Для пейджинации используются параметры page и size: size - записей на странице, page - номер страницы.
Пример: api/customer/orders?page=0&size=200
Если параметры не переданы, то дефолтные значения page=0&size=10
Также, для отображение пейджинации следует анализировать параметр recordsTotal, возвращающий общее количество записей (с учетом примененной фильтрации, если она есть).
Пример результата запроса
{
"success": true,
"recordsTotal": 2,
"orders": [
{
"id": "20412212",
"date": "2020-06-03 09:22:06",
"updateTs": "2020-06-10 16:09:43.226",
"status": "ORDER_INFO_DONE",
"totalOrderSum": 1208,
"insuranceSum": 1059,
"insuranceSumAutoCalculation": true,
"paymentStatus": "PAID",
"confirmStatus": "APPROVED",
"paymentMethodCode": "online",
"paymentMethodType": "ONLINE",
"needCustomerPayment": true,
"shortUrl": "http://r.kak2c.ru/o6meazi",
"delivery": {
"code": "b26909d5-8424-7de9-42ca-53f668f70a8a",
"type": "COURIER",
"title": "BERU",
"pickupPointId": null,
"logoUrl": "https://storage.yandexcloud.net/lk-kak2c/delivery_beru_middle.svg",
"trackingNumber": "20412212",
"trackingURL": null,
"desiredDeliveryDate": null,
"desiredDeliveryTimeFrom": "09:00",
"desiredDeliveryTimeTo": "18:00",
"actualDeliveryDate": null,
"pvzComment": null,
"deliveryComment": null,
"address": {
"country": "Россия",
"countryCode": "RU",
"region": "Москва",
"area": null,
"city": "Москва",
"settlement": null,
"street": null,
"house": null,
"block": null,
"building": null,
"flat": null,
"fullAddress": "Москва",
"fullCity": null,
"rawData": null,
"zip": null,
"regionFias": null,
"areaFias": null,
"cityFias": null,
"settlementFias": null
},
"receiver": {
"name": "Покупатель на Беру",
"surname": null,
"patronymic": null,
"phone": "+70000000000",
"rawPhone": "+70000000000",
"alternativePhone": "",
"email": null,
"post": null,
"personType": "CUSTOMER",
"address": {
"country": "Россия",
"countryCode": "RU",
"region": "Москва",
"area": null,
"city": "Москва",
"settlement": null,
"street": null,
"house": null,
"block": null,
"building": null,
"flat": null,
"fullAddress": "Москва",
"fullCity": null,
"rawData": null,
"zip": null,
"regionFias": null,
"areaFias": null,
"cityFias": null,
"settlementFias": null
}
},
"deliveryServices": null
},
"items": [
{
"num": 1,
"variantId": "83491",
"variantExtId": "NL290-83491",
"productId": "1052",
"productExtId": "83490",
"name": "CC крем «Абсолютное совершенство» SPF 20, 30 мл, Оттенок: Light ",
"article": "NL290-83491",
"quantity": 1,
"vatRate": "VAT_20",
"price": 1059,
"skuType": "SKU",
"itemDimensions": {
"height": 0,
"width": 0,
"depth": 0
},
"itemWeight": 0,
"barcode": "6412600834918"
},
{
"num": 2,
"variantId": "delivery",
"name": "Доставка",
"article": "",
"quantity": 1,
"vatRate": "VAT_20",
"price": 149,
"skuType": "SERVICE",
"barcode": ""
}
],
"customerPaymentInProcess": false,
"customer": {
"id": "9a5e8591-7ea7-adb6-34db-546f105fc11a",
"emailLogin": "yura@test.com",
"firstName": "Yura",
"lastName": "Dan",
"middleName": "Dan",
"fullName": "Dan Yura Dan",
"phone": "",
"rawPhone": "+7985858585",
"alternativePhone": "",
"address": {
"country": "Россия",
"countryCode": "RU",
"region": "Московская",
"area": null,
"city": "Красногорск",
"settlement": "Ангелово",
"street": "мкр МЖК Росинка",
"house": "74/1",
"block": "",
"building": "",
"flat": "1",
"fullAddress": "Московская обл, г Красногорск, село Ангелово, мкр МЖК Росинка, д 74/1, кв. 1",
"fullCity": null,
"rawData": null,
"zip": "143442",
"regionFias": "29251dcf-00a1-4e34-98d4-5c47484a36d4",
"areaFias": null,
"cityFias": "63fcf18a-365e-451f-baee-8d09ac50b773",
"settlementFias": "2b627d06-2257-4c20-83b1-5efa10ef57b4"
}
},
"c": "f132f0d9-ced0-1134-573c-5dba550e3792"
},
{
"id": "19918626",
"date": "2020-05-25 21:19:24",
"updateTs": "2020-06-05 17:38:27.352",
"status": "ORDER_INFO_DONE",
"totalOrderSum": 579,
"insuranceSum": 579,
"insuranceSumAutoCalculation": true,
"paymentStatus": "NOT_PAID",
"confirmStatus": "APPROVED",
"paymentMethodCode": "cod-cash",
"paymentMethodType": "COD_CASH",
"needCustomerPayment": false,
"shortUrl": "http://r.kak2c.ru/jc2dyb2",
"delivery": {
"code": "b26909d5-8424-7de9-42ca-53f668f70a8a",
"type": "COURIER",
"title": "BERU",
"pickupPointId": null,
"logoUrl": "https://storage.yandexcloud.net/lk-kak2c/delivery_beru_middle.svg",
"trackingNumber": "19918626",
"trackingURL": null,
"desiredDeliveryDate": null,
"desiredDeliveryTimeFrom": "09:00",
"desiredDeliveryTimeTo": "18:00",
"actualDeliveryDate": null,
"pvzComment": null,
"deliveryComment": null,
"address": {
"country": "Россия",
"countryCode": "RU",
"region": "Москва",
"area": null,
"city": "Москва",
"settlement": null,
"street": null,
"house": null,
"block": null,
"building": null,
"flat": null,
"fullAddress": "Москва",
"fullCity": null,
"rawData": null,
"zip": null,
"regionFias": null,
"areaFias": null,
"cityFias": null,
"settlementFias": null
},
"receiver": {
"name": "Покупатель на Беру",
"surname": null,
"patronymic": null,
"phone": "+70000000000",
"rawPhone": "+70000000000",
"alternativePhone": "",
"email": null,
"post": null,
"personType": "CUSTOMER",
"address": {
"country": "Россия",
"countryCode": "RU",
"region": "Москва",
"area": null,
"city": "Москва",
"settlement": null,
"street": null,
"house": null,
"block": null,
"building": null,
"flat": null,
"fullAddress": "Москва",
"fullCity": null,
"rawData": null,
"zip": null,
"regionFias": null,
"areaFias": null,
"cityFias": null,
"settlementFias": null
}
},
"deliveryServices": null
},
"items": [
{
"num": 1,
"variantId": "84981",
"variantExtId": "NL110-84981",
"productId": "1019",
"productExtId": "NL110-84981",
"name": "Тушь с черникой для чувствительных глаз, 9 мл, Оттенок: Черный ",
"article": "NL110-84981",
"quantity": 1,
"vatRate": "NO_VAT",
"price": 579,
"img": "https://storage.yandexcloud.net/images-k2c/eef378d6-853f-4c75-a3b4-b2bdec352fe7.jpg",
"skuType": "SKU",
"itemDimensions": {
"height": 0,
"width": 0,
"depth": 0
},
"itemWeight": 0,
"barcode": "6412600849813"
},
{
"num": 2,
"variantId": "delivery",
"name": "Доставка",
"article": "",
"quantity": 1,
"vatRate": "NO_VAT",
"price": 0,
"skuType": "SERVICE",
"barcode": ""
}
],
"customerPaymentInProcess": false,
"customer": {
"id": "9a5e8591-7ea7-adb6-34db-546f105fc11a",
"emailLogin": "yura@test.com",
"firstName": "Yura",
"lastName": "Dan",
"middleName": "Dan",
"fullName": "Dan Yura Dan",
"phone": "",
"rawPhone": "+7985858585",
"alternativePhone": "",
"address": {
"country": "Россия",
"countryCode": "RU",
"region": "Московская",
"area": null,
"city": "Красногорск",
"settlement": "Ангелово",
"street": "мкр МЖК Росинка",
"house": "74/1",
"block": "",
"building": "",
"flat": "1",
"fullAddress": "Московская обл, г Красногорск, село Ангелово, мкр МЖК Росинка, д 74/1, кв. 1",
"fullCity": null,
"rawData": null,
"zip": "143442",
"regionFias": "29251dcf-00a1-4e34-98d4-5c47484a36d4",
"areaFias": null,
"cityFias": "63fcf18a-365e-451f-baee-8d09ac50b773",
"settlementFias": "2b627d06-2257-4c20-83b1-5efa10ef57b4"
}
},
"c": "326a2701-e668-c8b2-dda6-ab259921aaee"
}
],
}
Ошибка:
{
"success": false,
"errors": [{"code": 0,"message": "Текст ошибки"}]
}
api/customer/orders/cancelled
Отменить заказ покупателя
api/customer/orders/cancelled
Производит отмену заказа.
пример тела запроса:
{
"orderId":"1029"
}
В ответ возвращается
успех:
{
"success": true
}
ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "Текст ошибки"
}
]
}