CARDPR
API / MCP · v2.8.1

Customer Infrastructure API

CARDPR соединяет ваш продукт с Apple Wallet и Google Wallet. Выпускайте карты, обновляйте их и отправляйте push из одного API.

Выпускайте и обновляйте карты Wallet из своей системы

Один API для идентификации, состояния карты, push и автоматизации в Apple Wallet и Google Wallet.

Ваше приложение / CRM / AIданные клиента + событие
CARDPR APIWallet, push, NFC
Телефон клиентаApple Wallet · Google Wallet
Identityклиент → карта → телефон → бизнес
Stateбаланс, членство, билет, статус
Communicationpush, гео, живые обновления карты
Automationсобытие → триггер → действие

Conceptual call

{
  "phone": "+79000000001",
  "balance": 1250,
  "tier": "Gold"
}

CARDPR обновляет Apple Wallet и Google Wallet, показывает текущий статус, может отправить push, применить сегмент и запустить триггер. Клиент видит это в Wallet.

MCP-сервер

Подключите этот сервер к AI-клиенту: ChatGPT, Claude, Cursor и другим. Агент сможет найти клиента, обновить карту, создать предложение и отправить push. Приватный ключ в Настройки → API в кабинете.

{
  "mcpServers": {
    "CARDPR": {
      "type": "http",
      "url": "https://mcp.cardpr.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_PRIVATE_KEY"
      }
    }
  }
}

Ваша система → CARDPR

Создавайте и обновляйте карты Wallet, когда данные меняются в CRM, и читайте данные из CARDPR. Передавайте app_key, приватный ключ из Настройки → API. Для тестов подойдёт Postman.

1.1 status

Проверка приватного ключа и статуса аккаунта.

POST https://core.cardpr.com/api/v2/status
Запрос
{
  "app_key": "приватный_ключ"
}
Ответ
{
  "app": "account_name",
  "balance": 15000.00
}

1.2 user_create_or_update

Создание или обновление клиента в CARDPR. Ключ: номер телефона в формате E.164. Можно передавать пользовательские переменные. template_uuid смотрите в адресной строке шаблона.

POST https://core.cardpr.com/api/v2/crm/user_create_or_update
Запрос
{
  "app_key": "приватный_ключ",
  "name": "имя",
  "phone": "мобильный телефон клиента",
  "email": "электронная почта",
  "surname": "фамилия",
  "middlename": "отчество",
  "birthday": "дата рождения dd.mm.yyyy",
  "discount": "размер скидки в %",
  "bonus": "размер бонуса в %",
  "balance": "количество бонусов",
  "card_track": "...",
  "template_uuid": "...",
  "customerId": "идентификатор клиента в вашей CRM",
  "link": "ссылка на форму выдачи карт",
  "sms": "Предлагаем установить карту: %link%"
}

Чтобы отправить персональную ссылку на установку, передайте URL формы в link. В тексте SMS %link% заменится на эту ссылку.

Ответ
{
  "success": true,
  "sms_send": true,
  "card": true,
  "card_number": "номер созданной карты",
  "card_track": "трек созданной карты",
  "card_url": "персональная ссылка Apple Wallet",
  "card_gpay_url": "персональная ссылка Google Pay",
  "form_url": "персональная ссылка на форму",
  "user_hash": "hash для персонализации формы"
}
Создать клиента и отправить SMS
{
  "app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "phone": "+79111111111",
  "email": "ilia@cardpr.com",
  "name": "Илья",
  "surname": "Орлов",
  "middlename": "Андреевич",
  "birthday": "11.11.1980",
  "discount": 0,
  "bonus": 3.50,
  "balance": 100,
  "link": "https://form.cardpr.com/00000000-0000-0000-0000-000000000000",
  "sms": "Ваша карта доступна по ссылке: %link%"
}
Пример SMS
Ваша карта доступна по ссылке: https://form.cardpr.com/00000000-0000-0000-0000/?hash=2f10171a33f66f3bc425335690ec880c
Изменение баланса

Если в шаблоне настроен push на изменение баланса, клиент увидит сообщение на экране блокировки.

{
  "app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "phone": "+79111111111",
  "balance": 120
}
Персональный push на карту
При отправке пуша не меняйте переменные, к которым привязаны уведомления в шаблоне. Если отправить пуш и одновременно изменить такую переменную, уйдёт системное уведомление, что карта изменилась.
{
  "app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "phone": "79111111111",
  "push": "Ваш заказ готов к выдаче!"
}
Web push

Нужно подключённое webpush-приложение из Маркетплейса.

{
  "app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "phone": "+79111111111",
  "send_webpush": "Ваш заказ готов к выдаче!"
}

1.3 read_customer

Получение данных клиента по номеру телефона или номеру карты. Телефон в формате E.164.

POST https://core.cardpr.com/api/v2/crm/read_customer
Запрос: phone или card
{
  "app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "phone": "",
  "card": "",
  "invites": true,
  "installs": true
}
Ответ
{
  "customer": {
    "phone": "+79111111111",
    "email": "ilia@cardpr.com",
    "name": "Илья",
    "surname": "Орлов",
    "middlename": "Андреевич",
    "birthday": "11.11.1980",
    "cardNumbers": ["120"],
    "cardTracks": [{"card": "120", "track": "78374598987"}],
    "cardInstalls": [{"card": "120", "install": true}],
    "discount": 4.5,
    "bonus": 0,
    "balance": 0,
    "template_uuid": "...",
    "remoteId": "6326",
    "invitedBy": "+79000000000",
    "invites": ["+79000000011", "+79000000012"]
  }
}

1.4 read_customers

Список клиентов по дате регистрации.

POST https://core.cardpr.com/api/v2/crm/read_customers
Запрос
{
  "app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "start_date": "01.01.2020",
  "end_date": "31.12.2020 23:59:59",
  "installed": true,
  "offset": 0
}
  • Если installed не указан, метод вернёт всех клиентов.
  • Если true: клиенты с установленной картой.
  • Если false: клиенты без установленной карты.
  • Возвращает первых 100 клиентов. Для следующей страницы используйте offset.
Ответ
{
  "customers": ["+79000000011", "+79000000012"]
}

1.5 push/create

Создать push-рассылку по всей базе или сегменту. Тип: push или webpush. Для webpush нужно приложение из Маркетплейса. После создания отправьте рассылку методом push/send. Для одиночного пуша используйте user_create_or_update. segment_uuid в адресной строке сегмента.

POST https://core.cardpr.com/api/v2/crm/push/create
Запрос
{
  "app_key": "",
  "message": "",
  "type": "",
  "name": "",
  "segment_uuid": ""
}
Ответ
{
  "result": {
    "name": "Push#0000",
    "uuid": "00000000-0000-0000-0000-000000000000",
    "message": "Тестовый push!"
  }
}

1.6 push/send

Выполнить push-рассылку. push_uuid в адресной строке кампании или из ответа push/create.

POST https://core.cardpr.com/api/v2/crm/push/send
Запрос
{
  "app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "push_uuid": "00000000-0000-0000-0000-000000000000"
}

CARDPR → ваша система

Когда клиент получает карту Wallet, CARDPR отправляет хук на HTTPS URL из настроек интеграции. Обработайте его и сохраните клиента в своей базе. Если баланс или скидка изменятся у вас, отправьте хук обратно: CARDPR обновит карту и может отправить push.

Авторизация: HTTP Basic или crm_key. Для crm_key укажите его в поле пароля, логин оставьте пустым. Заголовки: X-organization-id, X-program-id, X-wallet-id. Можно ограничить доступ по IP: 31.31.207.106 и 89.111.172.125. Для отладки: webhook.site.

2.1 createCustomer

Регистрация карты клиентом. Ищите клиента по телефону (E.164). Если нет, создайте его и карту, верните customerId. Если есть, обновите, добавьте карту (или замените, если CRM однокарточная), верните customerId. Номера карт выдаёт CARDPR; в настройках интеграции укажите старт свободного диапазона.

POST HTTPS webhook URL
{
  "crm_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "method": "createCustomer",
  "customer": {
    "name": "Илья",
    "surname": "Орлов",
    "middlename": "Андреевич",
    "email": "ilia@cardpr.com",
    "phone": "+79111111111",
    "birthday": "1980-01-25",
    "cardNumbers": ["120"],
    "cardTracks": [{"card": "120", "track": "876234876234"}],
    "extra": {
      "gender": "male",
      "promo": "BBBBB"
    },
    "balance": 300.00,
    "bonus": 10.00,
    "discount": 25.00,
    "promo": "AAAAA",
    "user_hash": "bdbb6325684284e5fd92dadba33d1275",
    "referCustomerPhone": "+79000000000"
  }
}

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

HTTP 200
{"customerId": "6d2845ff-0a07-11e7-25df-d8d18565926f"}
HTTP 400
{"error": "Detailed error description..."}

2.2 readBalance

Запрос баланса для ручного обновления бонусов и скидки на карте.

POST HTTPS webhook URL
Запрос
{
  "crm_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "method": "readBalance",
  "customer": {
    "phone": "+79111111111",
    "cardNumbers": ["120"]
  }
}

Верните баланс / бонус / скидку по клиенту, которого определили по телефону и номеру карты.

Ответ
{
  "success": true,
  "bonus": 12.5,
  "balance": 5,
  "discount": 17.88
}

2.3 addBalance

Хук на начисление бонусов.

POST HTTPS webhook URL
Запрос
{
  "crm_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "method": "addBalance",
  "customer": {
    "phone": "+79111111111",
    "cardNumbers": ["120"],
    "sum": 50.00,
    "transactionId": "id/guid",
    "lifetime": 14
  }
}

Начислите бонусы клиенту по телефону и номеру карты. Если передан lifetime, начисление сгорит через это число суток (24ч).

Ответ
{
  "success": true
}

Примечания

Приложение A. curl
curl -d '{"app_key":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "phone":"+79000000000", "email":"ilia@cardpr.com", "name":"Илья", "surname":"Орлов", "middlename":"Андреевич", "birthday":"03.05.1980", "discount":0, "bonus":5, "balance":200}' -H "Content-Type: application/json" -X POST https://core.cardpr.com/api/v2/crm/user_create_or_update
Приложение B. PHP
<?php
$url = 'https://core.cardpr.com/api/v2/crm/user_create_or_update';
$post = [
  'app_key' => 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
  'phone' => '+79000000000',
  'email' => 'ilia@cardpr.com',
  'name' => 'Илья',
  'surname' => 'Орлов',
  'middlename' => 'Андреевич',
  'birthday' => '03.05.1980',
  'discount' => 0,
  'bonus' => 4.5,
  'balance' => 100
];
$data_string = json_encode($post);
$ch = curl_init();
curl_setopt_array($ch, [
  CURLOPT_TIMEOUT => 30,
  CURLOPT_POST => 1,
  CURLOPT_URL => $url,
  CURLOPT_RETURNTRANSFER => 1,
  CURLOPT_SSL_VERIFYPEER => true,
  CURLOPT_POSTFIELDS => $data_string,
  CURLOPT_HTTPHEADER => [
    'Content-Type: application/json',
    'Content-Length: '.strlen($data_string)
  ]
]);
echo curl_exec($ch);
?>
  • Лимиты: Base: 1/сек, 60/час; Advanced: 1/сек, 600/час; Expert и Exclusive: 1/сек, 3600/час. Учитываются все запросы вашей системы. Лимиты можно поднять через поддержку.
  • В примерах могут быть комментарии JSON5. В реальных JSON-запросах комментарии нельзя.
  • При ошибке пришлите в поддержку логи запроса и ответа.
  • Чтобы передавать регистрации в CRM, реализуйте методы CARDPR → ваша система.
  • Входящие хуки: webhook.site. Исходящие вызовы: Postman.