Интеграция Интернет магазин - Лояльность
Задание на реализацию обмена данных между Интернет-магазином и АВМ Loyalty
Метод на получение истории начисления, списания бонусов 22
Суть задачи - организовать регулярный автоматический (без участия человека) обмен данными между интернет-магазином Клиента и системой лояльности АВМ Loyalty.
В систему АВМ Loyalty передаются все транзакции, как идентифицированные, так и неидентифицированные.
Обмен данными между интернет-магазином и системой АВМ Loyalty должен быть реализован:
- Online - взаимодействие интернет-магазина и системы АВМ Loyalty происходит в режиме реального времен)
Данные передаются методами RESTful API по протоколу https.
Для взаимодействия интернет-магазина и Лояльности могут использоваться методы API:
POST /v2/client/check-phone - метод проверяет есть ли этот номер телефона уже в программе лояльности;
POST /partner/operation/user/registration - создает новый счет в системе, заполняет анкету нового участника программы;
GET v2.1/client/oauth2/authorize - запрос на проверку данных;
POST v2.1/client/oauth2/authorize - для получения кода авторизации;
POST v2.1/client/oauth2/token - для получения токена доступа;
POST v2.1/client/oauth2/revoke - для получения обновленного "access_token" и "refresh_token" ;
POST /partner/operation/pre-check - предрасчёт по чеку;
POST /partner/operation/check-confirm - запрос подтверждения продажи;
POST /partner/referral/link- для создания связи реферал - реферер;
Операции продажи:
Порядок выполнения операций продажи:
Карт-юзер-инф
- Получить ответ предрасчета POST /v2/partner/operation/pre-check.
- Вывести сообщение сколько можно списать бонусов за этот чек, если можно списать бонусы - значение из параметра "receipt_bonus_amount": С вопросом списать ли бонусы (Ответ Да, и Ответ Нет).
- Если Ответ Да. Вывести поле для ввода количества к списанию, при этом отображать максимальное допустимое количество к списанию. Если пользователь ввел сумму бонусов больше, чем допустимая - выдавать соответствующее сообщение и не отправлять данные. Добавить кнопку после ввода - Отправить (выполнить второй предрасчет POST /v2/partner/operation/pre-check) и Отмена - не списывать бонусы (вывести сумму к оплате на чек и количество начисленных бонусов попозиционно и общее количество на чек) При нажатии отправить вывести сумму к оплате на чек и количество начисленных и списанных бонусов попозиционно и общее количество на чек).
- Если Ответ Нет вывести сумму к оплате на чек и количество начисленных бонусов попозиционно и общее количество.
- После введения суммы к оплате - подтверждение операции продажи POST /v2/partner/operation/check-confirm
При любых изменениях в продажи - посылать запрос POST /v2/partner/operation/pre-check
Описание всех методов доступно по ссылке:
https://documenter.getpostman.com/view/10073265/TzJuAdf5
канал API: https://api.sandbox.abmloyalty.app
ключ (токен):
версия: v2
тип авторизации: Basic Authentication (можно использовать поле имени пользователя как токен(ключ) доступа и пропустить пароль)
ключ:
!! доступ к тестовой базе. Потом нужно будет переключиться на продуктовую систему
- Проверка номера телефона участника
POST /v2/client/check-phone – метод проверяет есть ли этот номер телефона уже в программе лояльности, если есть, то в параметр is_exist в ответ приходит true, если нет-false.
Название |
Тип данных |
Описание |
Соответствует значению у Клиента |
---|---|---|---|
phone |
string |
Номер мобильного телефона в формате 380######### |
2.1. Запрос списка дополнительных полей
GET /system/profile-fields- возвращает список дополнительных полей анкеты и их обязательность к заполнению.
2.2. Запрос списка регионов
GET /v2/client/geo/{country}/regions - возвращает все регионы и их ID
{country} - ID страны
2.3. Запрос списка городов
GET /v2/client/geo/{country}/{city}/search-city - поиск по части названия города, возвращает города (регионы, страны) заданной country, max = 10шт
{country} - ID страны
{city} - часть названия города
{country} - ID страны прописать в запросе по умолчанию и не выводить в интерфейс пользователя для выбора.
Например, ID страны Казахстан = 81
POST /partner/operation/user/registration
- Создает новый счет в системе, заполняет анкету нового участника программы.
- В параметрах необходимо передать анкетные данные клиента.
Обязательными параметрами являются те поля анкеты, которые установлены как обязательны к заполнению (в данном примере 5 параметров). - Метод возвращает телефон и guid нового, созданного в системе участника программы лояльности.
Название |
Тип данных |
Описание |
Соответствует значению у Клиента |
---|---|---|---|
phone |
string |
Номер мобильного телефона в формате 380######### |
|
first_name |
integer |
Имя участника ПЛ |
|
middle_name |
string |
Отчество участника ПЛ |
|
last_name |
string |
Фамилия участника ПЛ |
|
birth_day |
string |
Дата рождения участника ПЛ в формате 1989-03-17 |
|
id_region |
integer |
Глобальный справочник региона проживания |
|
id_city |
integer |
Глобальный справочник города проживания, связан с регионом. |
|
gender |
integer |
Пол: 1 - мужчина 2- женщина |
|
sms_notify |
integer |
Подписаться на смс рассылку: 1-Согласен 0-Не согласен |
|
email_notify |
integer |
Подписаться на email рассылку: 1-Согласен 0-Не согласен |
|
|
string |
Электронная почта в формате abm@abmcloud.com |
|
address |
string |
Адрес участника ПЛ |
|
channel_reg |
integer |
Канал регистрации. Для интернет магазина: 9. |
Пример ответа, при успешном запросе:
{
"success": true,
"status": 201,
"data": {
"phone": "380931000013",
"guid": "68c147a2-edbd-4df5-a8b2-dadfb3a70ebc",
}
}
https://documenter.getpostman.com/view/2804494/SzfCUkyK?version=latest
OAuth 2.0 — протокол авторизации, позволяющий выдать одному сервису (Например, интернет- магазину) права на доступ к ресурсам пользователя на другом сервисе (в Личном кабинете). Протокол избавляет от необходимости доверять приложению логин и пароль, а также позволяет выдавать ограниченный набор прав.
Схема процесса: Приложение (Интернет- магазин), Сервис (Личный кабинет)
- С веб-старицы клиента (интернет - магазина) происходит редирект на страницу авторизации нашего ЛК: https://{base_url}/authorize?client_id={client_id}&redirect_uri={redirect_uri} где {base_url} - базовий url ЛК, {client_id} - id клиента, сгенерированный при создании конфигурации в CRM, {redirect_uri} - uri сервиса, на который будет выполняться редирект с добавлением в GET-параметры временного токена.(данные предоставляет АБМ)
- На странице авторизации у пользователя запрашивается подтверждение выдачи прав.(Страница личного кабинета с формой на соглашение предоставить свои данные - в случае, если авторизация в ЛК совершена, если не - форма для авторизации, потом соглашение).
- В случае согласия пользователя, браузер редиректится на URL, указанный при открытии страницы авторизации, с добавлением в GET-параметры специального ключа — authorization code.
- Сервер приложения выполняет POST-запрос с полученным authorization code в качестве параметра. В результате этого запроса возвращается access token.
Для работы с OAuth используются методы:
POST v2.1/client/oauth2/token
Служит для получения "access_token" - используется как временный токен авторизации, и "refresh_token" - токен для повторного запроса "access_token", если срок действия последнего истек. Срок действия "access_token" - 3600 сек. Информация о сроке действия возвращается в параметре "expires_in".
Название |
Тип данных |
Описание |
Соответствует значению у Клиента |
---|---|---|---|
client_id |
string |
id клиента, сгенерированный при создании конфигурации в CRM |
|
client_secret |
string |
ключ клиента (сервиса), сгенерированный при создании конфигурации в CRM |
|
code |
string |
временный код авторизаци, отправленный в параметре "code" GET-запроса на "redirect_uri" |
|
redirect_uri |
string |
uri сервиса, на который будет выполняться редирект с добавлением в GET-параметры временного токена. Задается при создании конфигурации в CRM |
Ответ: {
"success": true,
"status": 201,
"data": {
"token_type": "Bearer",
"expires_in": 3600,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjJhYzUwOTI1ZjE5YTBhYTQxNDZmYTRhYzhiMDQ5OGEwZjgyZDVlMzJmZjE3ODM3YmE3ZDkxM2RhM2JlNTRiYzhhZWVjZGZiMDQ0YjE4MzJiIn0.eyJhdWQiOiJFWS1RLVpMdUhRV0Fwakx6bDZMcE14NS1pYlBuZDMiLCJqdGkiOiIyYWM1MDkyNWYxOWEwYWE0MTQ2ZmE0YWM4YjA0OThhMGY4MmQ1ZTMyZmYxNzgzN2JhN2Q5MTNkYTNiZTU0YmM4YWVlY2RmYjA0NGIxODMyYiIsImlhdCI6MTU4ODAwODIwNywibmJmIjoxNTg4MDA4MjA3LCJleHAiOjE1ODgwMTE4MDcsInN1YiI6Ijc1NiIsInNjb3BlcyI6W119.dVG7iE3v8ZnxqS3TM88koQjCr7xTun1Nj4XAH1vSlOhgccYVjK8s7YRvEVlo_ti1JrNg1nMSUauX8tqRuCjnRDrCA0fCteJdPc0s3ZrEKjoy8XYNqbxtiurOJAz3bICUdF1s-hJbkV5yWYZleJZ2SfPDR3mSq1FPnWawCCeOpdzo0P3VFI3JiLBoRbSMLRS4k8AUhOIy5AGyITG8dY0mwS-EYmmmXkJG-2eO-KZcfvJWmCCC8NPhELVcyj1-gmmFOf_-_yWHW95ZHhQV8PVArNtvQPvL_JLeYLPK93DGXum73qB-zmCSbRIC4GpjAzkCW17QOkUTo_RDU1jB9QQFLQ",
"refresh_token": "def5020091793bb299b6c802a5ef5714aaeda1637d38ad33cbfbc6130cae09ef043fe7c7bbfa1315cb039f0abb4cc989d1112097be33bd1485512ded277e507867cdc1d8b360a9c4a933afaddf810fba2cf1e5bddace9e5e9fbf48e888527e1c8383f52e23d90031fc8b4cf80e6675e49000939df24562ce17541ff898eb1b4e7567b5d29a04d1b20c538f3b09a6fe340cd39589274bf2d5ba7a40af9c9dff0f11aa063fdc168aab0ab263a6812d99ec07a2d202ed7c9fd47f74db862c36de2da60f7d3077262a16817a292ba3fc60afdfd49ed001591411a5de8c49000fa308c75e28b2d19e0c65a4eb35774841998876dd1293163e5c380ad3b325bd67bcc461a6da3c88fdb8c0130ecb1ac94303a4254fa36704827bc89e39e7f801691301c6cfd3212458509a79b2d59c02aa575dac88c4fcce16f080caf33681cecf08c1c4ef26e86bc495e4da7bc89ae501385fe5f071d5b4395be4385f9d5ef5176ae81b045356402a1ef2c1d83f7885924855105ef0b99dffa553a666b22332572666"
}
POST v2.1/client/oauth2/revoke
Служит для получения обновленного "access_token" и "refresh_token" по "refresh_token". Срок действия "refresh_token" - 1 мес.
Название |
Тип данных |
Описание |
Соответствует значению у Клиента |
---|---|---|---|
client_id |
string |
id клиента, сгенерированный при создании конфигурации в CRM |
|
client_secret |
string |
ключ клиента (сервиса), сгенерированный при создании конфигурации в CRM |
|
refresh_token |
string |
временный код авторизаци, отправленный в параметре "code" GET-запроса на "redirect_uri" |
|
redirect_uri |
string |
uri сервиса, на который будет выполняться редирект с добавлением в GET-параметры временного токена. Задается при создании конфигурации в CRM |
Ответ: {
"success": true,
"status": 201,
"data": {
"token_type": "Bearer",
"expires_in": 3600,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImFiN2U1OWUzMzdlZWVhMjcxY2Q1MGU2ZGRlNTUwNjRjZGNkMzkwY2Y0MmQzYzJiN2Q5ODdiZDlhYWMzYjIxMzM1MGVlN2U2NzMwYzY2MzE5In0.eyJhdWQiOiJFWS1RLVpMdUhRV0Fwakx6bDZMcE14NS1pYlBuZDMiLCJqdGkiOiJhYjdlNTllMzM3ZWVlYTI3MWNkNTBlNmRkZTU1MDY0Y2RjZDM5MGNmNDJkM2MyYjdkOTg3YmQ5YWFjM2IyMTMzNTBlZTdlNjczMGM2NjMxOSIsImlhdCI6MTU4ODAwOTg1NywibmJmIjoxNTg4MDA5ODU3LCJleHAiOjE1ODgwMTM0NTcsInN1YiI6Ijc1NiIsInNjb3BlcyI6W119.DfA7la0WtVTj5QxVgIbPKMjc6LUQLb40T3pM4UtyDeYy0cTmcIv8qYMb_t1Yu8SRNgQwovOO8Y95eUnisM3l7h2sup1Abg78QYR2XaX3y9OiW388lJ2bTPgDTncgR7IliAx49jdDIgju5xRcRfukcJRkqd4ewrW3707tgteHMkuN6XWAafrSI0GZKkRgT9vFT4AvSIklo2tc8s8NGXBP-aIyvyYZNWSjaF6o52OE0ThYaKkUeMvPbbmITO2VsEOS3ko7BQye-5tQn2QhomU-CaSS96B7fBdFb--zgzGCgBgMB1ABi46MOAz_5sr9jGj2iZN7VnpvWZZQlzIXziSnnw",
"refresh_token": "def50200ef5c8a317304e039d3da86ed4aa375b90fe8314343218dbb4018cea97ebf9a3da7cb9b0467e201e25f6db9d3cb7c174e7f9b4a5b0b4d368787fa6998484a5fc0d8388c0aae18de6e21928ef5fc947f64c6be4bf0c6ab5890bf54eabb0eb4a9a820405f773ae2152b374b1131c84bacffbd63e5b04fef47c0e2f925281e9e600b872dcc15e50e2a51320a04ad3ed0a1ca9bdbd09d990bed18c89355751ef879e4fc851229c58e6c39557f0cba1124b59508d7d3ea911a6da6934335016300f2fee308c0cbf524a22060776e72ba7820316b323ae42b711643eb6a3382e9cf688e988cb9e95e796c84e151b3274f20a11727064041c6fd7541da441bc17a576fff0c48e996ae703939c097793da76a1e3e94e81f33c52cb7f69530e3ba7b43672f5046c088c5c88ccbf25f5f9b5b9b6b6d7eb97efaf7e0bb8246212ad93623c2e7288e7e12f7d7938005423dafaaac72099eed05aca120fe0aa962a9de05b3170e1ebcfb65696bd13dde40d7e66a42bcff24ff02462de8e35694dd9059"
}
Доступные методы при авторизации по "access_token":
Важно! При работе с запросами по "access_token" Использовать тип авторизации "Bearer"
- GET v2/client/partners
- GET v2/client/card/card-info
- GET v2/client/accounts
- GET v2/client/partner/news-all
- GET v2/client/partner/news-all/{id}
- GET v2/client/partner/{guid}/news
- GET v2/client/partner/{guid}/news/{id}
- GET v2/client/profile
- GET v2/client/client-history
- GET v2/client/card/card-info
- GET v2/client/partner/actions
- GET v2/client/partner/actions/{id}
POST /v2/partner/operation/pre-check
Если пользователь - участник программы лояльности необходимо заполнить значение в поле card или phone. Если пользователь не участник программы лояльности, данные card или phone не передавать.
Данные полученные в pre-check нужно кешировать для дальнейшей печать чека и отправки данных о продажах в учетную систему клиента.
Данные параметра meta в receipt_details соответствуют значением товара описание деталей клиент .
- проверяет наличие купона в системе, принадлежность к партнеру
- возможность его погашения данным юзером в данный момент времени
- связывает код купона с номером транзакции, к которой будет применен купон
- делает предрасчет чека с учетом купона (для скидочного купона)
В запросе необходимо заполнять существующий параметр "coupon"
Перечень параметров в запросе:
Название |
Тип данных |
Описание |
Соответствует значению у Клиента |
---|---|---|---|
branch_id |
string |
Код (id) торговой точки Предварительно должен быть создан в CRM Лояльности |
|
card |
integer |
Номер карты участника ПЛ |
|
coupon |
string |
Код купона, если купонов несколько, их необходимо записать через запятую |
|
guid |
string |
Guid участника программы лояльности |
|
offline |
boolean |
Определяет режим проведения операции : 1 - офлайн, 0-онлайн Списать бонусы в режиме офлайн невозможно |
|
operator_id |
string |
Код кассира Предварительно должен быть создан в CRM Лояльности |
|
phone |
string |
Номер телефона участника ПЛ |
|
receipt_bonus_amount |
number |
Количество бонусов за чек. Этот параметр используется только в том случае, если партнер сам рассчитывает бонус. Соответствующая настройка должна быть применена в CRM. |
Не передавать |
receipt_currency |
string |
Валюта бонусов |
Передавать значение BON |
receipt_datetime |
Integer (тип: 1470825537) |
Дата и время покупки ( формат unix time) |
|
receipt_description |
string |
Описание типа покупки |
Звичайний продаж |
receipt_details |
string |
Детали покупки (полный список товаров и их свойства в квитанции) в виде массива JSON. «position» - позиция в чеке. "prod_cat" - код группы товаров. «prod_code» - код SKU. «prod_name» - полное название продукта. «prod_price» - цена товара. "prod_amount" - количество товара. «prod_sum» - общая стоимость продукта (обычно равна prod_amount * prod_price). bonus_restrict - исключить позицию из расчета бонуса, не требуется "meta":"{\"параметр1\":\"значение\", \"параметр2\":\"значение\"}" |
|
session_id |
integer |
Код сессии |
|
terminal_id |
string |
Код кассы |
|
variables |
string |
Доп. св-тва товара в виде массива JSON Пример: {"key1":1, "key2":1} |
Пример ответа, при успешном запросе (значение в параметре "pre_check_id" необходимо сохранить, для передачи в операции подтверждения продажи )
{
"success": true,
"status": 201,
"data": {
"pre_check": {
"pre_check_id": "1548149007.104900.03",// id который необходимо будет подтвердить методом check-confirm
"payment": {
"money": 899.03, // "чистая"сумма к оплате (сколько денег необходимо заплатить пользователю, за вычетом дисконтных и бонусных скидок
"bonus_redeemed": 1, // сколько бонусов использовано на оплату покупки
"discount": 0// размер скидки в деньгах
},
"currency": "BON",// валюта начисления бонусов
"coupon": [
{
"code": "3863NUM6",
"success": false,
"message": "Coupon configuration is not active"
},
{
"code": "6556PRE",//номер купона
"success": true,
"message": "",
"reward_type": "1"
}
], // купон использованный с этим чеком
"branch_id": "001", // id торговой точки
"terminal_id": "terminal_1",// id кассы
"operator_id": "operator_1",// id кассыра
"session_id": null, // id сессии
"receipt_amount": 900.03, // полная сумма чека
"payment_bonus": 63.86, // всего бонусов начислено по чеку
"base_bonus": 63.86, //размер базового бонуса (кэшбэк)
"receipt_description": "Precheck test",// описание чека
"birthday_bonus": 0, // бонус в день рождения
"userStatusFixBonus": 0, // бонус за статус (только фиксированная сумма вознаграждения, не %)
"receipt_details": [
{
"position": 1, // номер позиции в чеке
"prod_cat": "20316",// категория продукта (если товара нет в CRM, то возвращается как "0")
"prod_code": "13997",// sku продукта
"prod_name": "КОНФ ВЕСОВЫЕ АССОРТИ",// название продукта (если товара нет в CRM, то возвращается как "no name product")
"prod_price": "100.01",// цена продукта
"prod_amount": "3",// количество продукта(шт.)
"prod_sum": 300.03, // общая стоимость по позиции продукта
"bonus_restrict": "ok",
"discount_limit": 300.03, // максимально возможная скидка на позицию
"discount": 0, // размер примененной скидки на позицию
"parameters": [],// дополнительные параметры позиции, установленные в настройках товаров(цена, мрц, ограничения по начислению и списанию бонусов)
"discount_success": [],// информация по успешно примененным дисконтным акциям
"discount_bonus": 0, // размер скидки предоставленный бонусами в деньгах
"bonus": 0, // количество бонусов начисленных на позицию
"bonus_success": []// подробная информация по бонусным начислениям на позицию
},
{
"position": 2,
"prod_cat": "20316",
"prod_code": "86163",
"prod_name": "Tekila Patron silver 0.5",
"prod_price": "100",
"prod_amount": "2",
"prod_sum": 200,
"discount_limit": 0,
"discount": 0,
"parameters": {
"price": 100,
"mrp": null,
"discount": 0,
"max_calculation_bonus": 4,
"max_payment_bonus": 0
},
"discount_success": [ // подробная информация по бонусным начислениям на позицию
{
"rule": "coupon",// тип начисления
"action_id": 0, // id акции (для начисления по акции)
"action_title": "",//название акции
"info": "6556PRE",
"discount": 7.11, // количество начисленных бонусов
"priority": 1// приоритет акции
}
],
"discount_bonus": 0,
"bonus": 4,
"bonus_success": [
{
"rule": "cashback",
"action_id": 0,
"action_title": "",
"bonus": 4,
"priority": 999998
}
]
},
{
"position": 3,
"prod_cat": "20316",
"prod_code": "77765",
"prod_name": "ПАКЕТ МАЙКА ФИРМЕННЫЙ ЕЛИСЕЙ 12КГ",
"prod_price": "100",
"prod_amount": "2",
"prod_sum": 200,
"discount_limit": 200,
"discount": 0,
"parameters": [],
"discount_success": [],
"discount_bonus": 0.5,
"bonus": 29.93,
"bonus_success": [
{
"rule": "cashback",
"action_id": 0,
"action_title": "",
"bonus": 29.93,
"priority": 999998
}
]
},
{
"position": 4,
"prod_cat": "20316",
"prod_code": "13997",
"prod_name": "КОНФ ВЕСОВЫЕ АССОРТИ",
"prod_price": "100",
"prod_amount": "2",
"prod_sum": 200,
"discount_limit": 200,
"discount": 0,
"parameters": {
"price": 100,
"mrp": 95,
"discount": 0,
"max_calculation_bonus": 200,
"max_payment_bonus": 200
},
"discount_success": [],
"discount_bonus": 0.5,
"bonus": 29.93,
"bonus_success": [
{
"rule": "cashback",
"action_id": 0,
"action_title": "",
"bonus": 29.93,
"priority": 999998
}
]
}
],
"max_payment_bonus_check": 2264.5, // максимальное количество бонусов для списания(в бонусах)
"max_payment_money_check": 226.45, // максимальное количество бонусов для списания(в денежной единице)
"balance_available": 100 , //доступно бонусов на счету в участника ПЛ
}
}
}
POST /v2/partner/operation/check-confirm
применяет купон (ставит отметку об использовании)
Перечень параметров в запросе:
Название |
Тип данных |
Описание |
Соответствует значению у Клиента |
---|---|---|---|
box |
number |
Количество денег, которые будут переначислены в бонусы согласно коэффициенту списания. Должен быть реализован функционал копилки. |
|
check_number |
integer |
Номер чека Код операции продажи. При формировании должен быть уникальным в разрезе партнера |
Формат: Номер_чека_+_Дата_покупки |
payment_type |
string |
Массив с типами оплат. Пример: [{"type":1,"sum":899},{"type":2,"sum":0.00}] |
|
pre_check_id |
string |
Код (ID) операции полученній в ответе на запрос POST /v2/partner/operation/pre-check |
|
sms_id |
идентификатор смс подтверждения списания бонусов |
||
code |
код полученный в смс покупателя |
Пример ответа, при успешном запросе
{
"success": true,
"status": 201,
"data": {
"pre_check_id": "1548149007.104900.03", // идентификатор подтвержденного чека
"check_number": "100110", // номер чека, переданный кассой
"box_bonus": 0.07, // бонусы переданные в копилку
"bonus_accrued": 63.93, // начисленные бонусы
"bonus_redeemed": 1, // списанные бонусы, в счет оплаты
"bonus_balance": 288, // баланс бонусов у пользователя после оплаты чека
"c2b_result": { // информация по операции списания
"success": true, // статус операции
"errorDescription": "", // описание в случае ошибки
"processing_transaction_datetime": 1548150560, // время операции в unixtime
"c2b_check_number": "C2B-100110" // id операции
},
"b2c_result": { // информация по операции списания
"success": true, // статус операции
"errorDescription": "", // описание в случае ошибки
"processing_transaction_datetime": 1548150560, // время операции в unixtime
"b2c_check_number": "B2C-100110" // id операции
},
"coupon": [ // информация по купонам
{
"code": "6067PRECHECK",
"success": true,
"message": "",
"options": {
"received_discount": "16.85",
"redemption_count": 1
},
"reward_type": "1"
}
]
}
}
POST /partner/referral/link
Участие в РП не обязательно. Часть участников программы лояльности могут быть в РП, в то время как другая часть участников могут быть обычными держателями карт лояльности.
Нет постоянной привязки Реферала к Рефереру. Соотношение Реферал-Реферер может меняться от операции к операции.
К одному рефереру может быть привязано несколько рефералов. Реферал может поменять своего реферера, при этом старая связь не удаляется, а переходит в неактивный статус.
Реферер (referrer) – участник ПЛ, по рекомендации которого рефералы совершают операции.
Реферал (referee) – участник ПЛ, который совершает операцию по рекомендации другого участника.
РП – реферальная программа
Связь реферал -> реферер может быть создана двумя способами:
- при регистрации, если будущий участник ПЛ указал идентификатор реферера и при этом выполняется событие Регистрация.
- после регистрации, если участник ПЛ указал идентификатор реферера, при этом событие Регистрация не выполняется.
Идентификатор реферера может быть изменен рефералом в любой момент. В таком случае в системе создается новая связь реферер -> реферал, а старая связь деактивируется (сохраняем для истории и отчетности).
Событие Регистрация считать выполненным, если участник ПЛ заполнил все обязательные поля анкеты и указал идентификатор своего реферера (указана ссылка реферера на момент, когда юзеру проставляется дата регистрации в rtl_users.start_day). После этого в системе создается связь реферер -> реферал и фиксируется событие Регистрация.
Алгоритм:
- Создание пользователя в системе
- Создание связи реферер -> реферал методом /partner/referral/link
- Завершение регистрации (заполнение всех обязательных полей анкеты)
Событие Покупка считать выполненным, если на момент покупки участник ПЛ является рефералом (в системе существует активная связь реферер -> реферал). После этого в системе фиксируется событие Покупка.
Алгоритм:
- Предрасчёт по чеку методом pre-check
- Создание связи реферер -> реферал методом /partner/referral/link
- Подтверждение чека методом check-confirm
Или
- Создание связи реферер -> реферал методом /partner/referral/link
- Предрасчёт по чеку методом pre-check
- Подтверждение чека методом check-confirm
Название |
Тип данных |
Описание |
Соответствует значению у Клиента |
---|---|---|---|
refereeToken |
string |
Токен (номер карты/телефона кто совершает продажу) |
|
refereeType |
string |
Тип идентификации рефери(card/phone) |
|
refererToken |
string |
Токен (номер карты/телефона по рекомендации которого операция происходит) |
|
refererType |
string |
Тип идентификации реферера(card/phone) |
Пример успешного ответа:
{
"success": true,
"status": 201,
"data": {
"refererType": "card",
"refererToken": "20000000001",
"refereeType": "card",
"refereeToken": "20000000001"
}
}
Метод на получение исторических транзакций
GET /v2/partner/operation/user/{type}/{token}/client-history
GET /v2/partner/operation/user/phone/380631024903/client-history?dateFrom=2021-01-01&dateTo=2021-12-31 HTTP/1.1
Host: api-groupeseb.abmloyalty.app
Content-Type: application/x-www-form-urlencoded
"description": "Bonus write off Partner:1 User:26430 Sum:2.000000"
"description": "Bonus write off Partner:1 User:26430 Sum:3.000000"
"description": "Bonus write off Partner:1 User:26430 Sum:1.000000"
"description": "Bonus write off Partner:1 User:26430 Sum:2.000000"
"description": "Bonus write off Partner:1 User:26430 Sum:1.000000"
"description": "Gift bonus User:19 Generator:26430 From:2021-11-16 To:2021-11-21 Sum:2.000000"
"description": "Gift bonus User:18 Generator:26430 From:2021-11-16 To:2021-11-21 Sum:3.000000"
"description": "Gift bonus User:17 Generator:26430 From:2021-11-15 To:2021-11-19 Sum:1.000000"
"description": "Gift bonus User:16 Generator:26430 From:2021-11-15 To:2021-11-20 Sum:2.000000"
"description": "Bonus write off Partner:1 User:26430 Sum:10.000000"
"description": "Bonus write off Partner:1 User:26430 Sum:10.000000"
"description": "Bonus write off Partner:1 User:26430 Sum:1.000000"
"description": "Bonus write off Partner:1 User:26430 Sum:1.000000"
"description": "Gift bonus User:10 Generator:26430 From:2021-10-19 To:2021-10-23 Sum:1.000000"
"description": "Bonus write off Partner:1 User:26430 Sum:1.000000"
"description": "Gift bonus User:8 Generator:26430 From:2021-10-11 To:2021-10-16 Sum:1.000000"
"description": "Bonus write off Partner:1 User:26430 Sum:5.000000"
"description": "Profile fill Юлия Шейнина 10.00BON expiration date 28.10.2021"
"href": "https://api-groupeseb.abmloyalty.app/v2/partner/operation/user/phone/380631024903/client-history?dateFrom=2021-01-01&dateTo=2021-12-31&page=1"
"href": "https://api-groupeseb.abmloyalty.app/v2/partner/operation/user/phone/380631024903/client-history?dateFrom=2021-01-01&dateTo=2021-12-31&page=1"
"href": "https://api-groupeseb.abmloyalty.app/v2/partner/operation/user/phone/380631024903/client-history?dateFrom=2021-01-01&dateTo=2021-12-31&page=2"
"href": "https://api-groupeseb.abmloyalty.app/v2/partner/operation/user/phone/380631024903/client-history?dateFrom=2021-01-01&dateTo=2021-12-31&page=2"
Примеры ответов для разных типов операций (с описанием параметров)
"type": "check" - продажа
"type": "check_return" - возврат
"type": "pending" -начисление бонусов за регистрацию, заполнение полей анкеты
"type": "gift"- подарочные бонусы
"type": "burn"-сгорание бонусов
"type": " withdraw"- ручное начисление или списание бонусов.