Личный кабинет покупателей

Апи для работы с личным кабинетом покупателей

/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

с ключем Authorization

и значением вида "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": "Текст ошибки"
 }
]
}