При работе по API обязательно хранить базу клиентов в вашей системе.

При получении клиентом электронной карты система CARD PR отправит хук в вашу систему (группа методов 1), вам необходимо обработать данный хук и сохранить данные клиента в вашей базе. Если клиент обновит свои данные, система CARD PR отправит новый хук.

Если данные обновятся в вашей системе (например, процент скидки или бонус), вам необходимо отправить хук в CARD PR (группа методов 2), система CARD PR обновит карту клиента и отправит на нее push.

===

Группа методов 1 – Передача данных из CARD PR в вашу CRM.

Робот CARD PR вызывает заданный URL CRM.
Ваш адрес должен быть обязательно с HTTPS и по адресу должен быть уже рабочий скрипт. Для установки хука сообщите ваш URL в техподдержку.

Метод 1.1. createCustomer – при регистрации клиентов карты.
Метод 1.2. updateCustomer – при обновлении клиентом данных.
Данные:
{
  name – имя
  surname – фамилия (необязательно)
  middlename – отчество (необязательно)
  email – электронная почта
  phone – мобильный телефон клиента
  birthday – дата рождения dd.mm.yyyy (необязательно)
  cardNumbers – массив c номерами карт
  cardTracks – ассоциативный массив с номерами и треками карт
  extra – пользовательские переменные (массив, дополнительно)
  promo* – промо-код клиента для реферальной программы (дополнительно)
  referCustomerPhone* – телефон клиента-реферала (дополнительно)
}
*доступны при подключенных промо-кодах на тарифе Бизнес и выше

Пример:
https://yourdomain.com/hook_url
{
  "method": "createCustomer",
  "customer": {
    "name": "Иван",
    "surname": "Петров",
    "middlename": "Иванович",
    "email": "ivan@ivan.ru",
    "phone": "+79111111111",
    "birthday": "1990-01-25",
    "cardNumbers": ["120"],
    "cardTracks": { "120": "876234876234" },
    "extra": {
      "sex": "male",
      "promo": "BBBBB" //промо-код, который ввел клиент при регистрации
    },
    "promo": "AAAAA", //промо-код клиента для приглашений
    "referCustomerPhone": "+79000000000"
  }
}

Обработчик получает данные, проверяет наличие клиента в CRM системе по номеру телефона. Если клиента с таким номером телефона нет, его нужно создать, создать ему карту и вернуть customerId. Если клиент с таким номером телефона есть, нужно обновить данные этого клиента и добавить ему новую карту (заменить, если CRM система не поддерживает несколько карт) и вернуть customerId. Номера карт назначаются на стороне CARD PR и при интеграции необходимо прописать в настройках стартовый номер свободного диапазона карт.

Необходимый ответ от CRM:
customerId – уникальный идентификатор пользователя в вашей CRM.

Пример успешного вызова (HTTP 200):
{ "customerId": "6d2845ff-0a07-11e7-25df-d8d18565926f" }

Пример вызова с ошибкой (HTTP 400):
{ "error": "Bad Request" }

Метод 1.3. readBalance – запрос баланса, необходим для ручного запроса на обновление процентов и баланса на карте клиента.
Пример запроса:
https://yourdomain.com/hook_url
{
  "crm_key": "",
  "method": "readBalance",
  "customer": {
    "phone": "+79111111111",
    "cardNumbers": ["120"]
  }
}

Обработчик должен вернуть баланс/бонус/скидку по указанному клиенту (идентификация по номеру телефона и номеру карты).
Пример ответа:
{
  "success": true,
  "bonus" : "12.5",
  "balance": "5",
  "discount": "17.88"
}

Метод 1.4. addBalance – хук на добавление бонусов, необходим для начисления привественных и реферальных бонусов.
Пример запроса:
https://yourdomain.com/hook_url
{
  "crm_key": "",
  "method": "addBalance",
  "customer": {
    "phone": "+79111111111",
    "cardNumbers": ["120"],
    "sum": 50,
    “transactionId”: id/guid
  }
}

Обработчик должен добавить баланс указанному клиенту (идентификация по номеру телефона и номеру карты).

Пример ответа:
{
  "success": true
}

===

Группа методов 2 – Передача данных из вашей CRM в CARD PR.

Используется для создания и обновления электронных карт при изменении информации в вашей CRM.

Вызов процедур осуществляется на адрес
https://core.codepr.ru/api/v2/crm/{method_name}
method_name – название метода
данные передаются в формате json
для контроля доступа используется app_key в блоке данных (доступен в настройках)
ключ для идентификации клиентов – поле phone в формате +79XXXXXXXXX

Метод: user_create_or_update;
Данные (в блоке также можно передавать пользовательские переменные):
{
  app_key – ключ приложения
  phone – мобильный телефон клиента
  email – электронная почта
  name – имя
  surname – фамилия (необязательно)
  middlename – отчество (необязательно)
  birthday – дата рождения dd.mm.yyyy (необязательно)
  discount – размер скидки в % (по умолчанию 0)
  bonus – размер бонуса в % (по умолчанию 0)
  balance – количество бонусов (по умолчанию 0)
  customerId – идентификатор клиента в вашей CRM (по умолчанию "")
  link – ссылка на страницу с формой выдачи карты со "/"
  sms – текст sms-сообщения (“Предлагаем установить карту: %link%”)
}

Для генерации уникальной ссылки на именную карту (form_url) необходимо передавать ссылку на страницу с формой в поле link.
В тексте sms-сообщения %link% будет заменено на уникальную ссылку для получения карты.

Ответ:
{
  success – сообщение о создании клиента (bool)
  card – сообщение о создании карты (bool)
  card_number – номер созданной карты (строка)
  card_track – трек созданной карты (строка)
  card_url – прямая ссылка на карту (url)
  form_url – ссылка на страницу установки карты (url)
}

Пример создания клиента:
https://core.codepr.ru/api/v2/crm/user_create_or_update
{
  "app_key" : "76GUHT6HTU7TJ7UT67",
  "phone" : "+79111111111",
  "email" : "ivan@ivan.ru",
  "name" : "Иван",
  "surname" : "Петров",
  "middlename" : "Иванович",
  "birthday" : "11.12.1990",
  "discount" : "5",
  "bonus" : "0",
  "balance" : "0",
  "link" : "https://demo.codepr.ru/",
  "sms" : "Предлагаем установить карту: %link%"
}

Пример текста смс-сообщения
(по ссылке выдается карта без ввода персональных данных):
Предлагаем установить карту: https://demo.codepr.ru/?hash=2f10171a33f66f3bc425335690ec880c

Пример отправки push:
https://core.codepr.ru/api/v2/crm/user_create_or_update
{
  "app_key" : "76GUHT6HTU7TJ7UT67",
  "phone" : "+79111111111",
  "email" : "ivan@ivan.ru",
  "name" : "Иван",
  "surname" : "Петров",
  "middlename" : "Иванович",
  "birthday" : "11.12.1990",
  "discount" : "5",
  "bonus" : "0",
  "balance" : "0",
  "message" : "Спецпредложение!",
  "push" : "Два товара по цене одного."
}

Для отображения push на карте, переменные message и push должны быть созданы и настроены на карте. Подробнее о настройке переменных на карте.

===

Приложение A. Пример CURL из Linux-консоли (Cygwin для Windows).
curl -d '{"app_key":"", "phone":"", "email":"", "name":"", "surname":"", "middlename":"", "birthday":"", "discount":"", "bonus":"", "balance":""}' -H "Content-Type: application/json" -X POST https://core.codepr.ru/api/v2/crm/user_create_or_update

Приложение B. Пример реализации на PHP.
$url = 'https://core.codepr.ru/api/v2/crm/user_create_or_update';
$post = [
'app_key' => '',
'phone' => '',
'email' => '',
'name' => '',
'surname' => '',
'middlename' => '',
'birthday' => '',
'discount' => '',
'bonus' => '',
'balance' => ''
];

$data_string = json_encode($post);

$options = [
    CURLOPT_TIMEOUT => 30,
    CURLOPT_POST => 1,
    CURLOPT_HEADER => 0,
    CURLOPT_URL => $url,
    CURLOPT_FRESH_CONNECT => 1,
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_FORBID_REUSE => 1,
    CURLOPT_SSL_VERIFYHOST => 0,
    CURLOPT_SSL_VERIFYPEER => 0,
    CURLOPT_POSTFIELDS => $data_string,
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'Content-Length: '.strlen($data_string)
    ]
];

$ch = curl_init();
curl_setopt_array($ch, $options);
$result = curl_exec($ch);

===

Примечания

1. При работе с API есть лимиты на количество запросов:
Тариф Старт – 1 / сек, 60 / час.
Тариф Бизнес – 1 / сек, 600 / час.
Тариф Корпорация – 1 / сек, 3600 / час.
Увеличение лимитов по запросу в техподдержку.

2. При получении ошибки сформируйте запрос в техподдержку с предоставлением логов (запрос + ответ).

3. Для передачи данных по клиентам в вашу CRM реализуйте интеграцию согласно группе методов 1 – Передача данных из CARD PR в вашу CRM.

Вы нашли ответ?