1.1 status
Проверка приватного ключа и статуса аккаунта.
{
"app_key": "приватный_ключ"
}{
"app": "account_name",
"balance": 15000.00
}CARDPR соединяет ваш продукт с Apple Wallet и Google Wallet. Выпускайте карты, обновляйте их и отправляйте push из одного API.
Один API для идентификации, состояния карты, push и автоматизации в Apple Wallet и Google Wallet.
Conceptual call
{
"phone": "+79000000001",
"balance": 1250,
"tier": "Gold"
}CARDPR обновляет Apple Wallet и Google Wallet, показывает текущий статус, может отправить push, применить сегмент и запустить триггер. Клиент видит это в Wallet.
Подключите этот сервер к AI-клиенту: ChatGPT, Claude, Cursor и другим. Агент сможет найти клиента, обновить карту, создать предложение и отправить push. Приватный ключ в Настройки → API в кабинете.
{
"mcpServers": {
"CARDPR": {
"type": "http",
"url": "https://mcp.cardpr.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_PRIVATE_KEY"
}
}
}
}Создавайте и обновляйте карты Wallet, когда данные меняются в CRM, и читайте данные из CARDPR. Передавайте app_key, приватный ключ из Настройки → API. Для тестов подойдёт Postman.
Проверка приватного ключа и статуса аккаунта.
{
"app_key": "приватный_ключ"
}{
"app": "account_name",
"balance": 15000.00
}Создание или обновление клиента в CARDPR. Ключ: номер телефона в формате E.164. Можно передавать пользовательские переменные. template_uuid смотрите в адресной строке шаблона.
{
"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 для персонализации формы"
}{
"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%"
}Ваша карта доступна по ссылке: https://form.cardpr.com/00000000-0000-0000-0000/?hash=2f10171a33f66f3bc425335690ec880cЕсли в шаблоне настроен push на изменение баланса, клиент увидит сообщение на экране блокировки.
{
"app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"phone": "+79111111111",
"balance": 120
}{
"app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"phone": "79111111111",
"push": "Ваш заказ готов к выдаче!"
}Нужно подключённое webpush-приложение из Маркетплейса.
{
"app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"phone": "+79111111111",
"send_webpush": "Ваш заказ готов к выдаче!"
}Получение данных клиента по номеру телефона или номеру карты. Телефон в формате E.164.
{
"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"]
}
}Список клиентов по дате регистрации.
{
"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: клиенты без установленной карты.offset.{
"customers": ["+79000000011", "+79000000012"]
}Создать push-рассылку по всей базе или сегменту. Тип: push или webpush. Для webpush нужно приложение из Маркетплейса. После создания отправьте рассылку методом push/send. Для одиночного пуша используйте user_create_or_update. segment_uuid в адресной строке сегмента.
{
"app_key": "",
"message": "",
"type": "",
"name": "",
"segment_uuid": ""
}{
"result": {
"name": "Push#0000",
"uuid": "00000000-0000-0000-0000-000000000000",
"message": "Тестовый push!"
}
}Выполнить push-рассылку. push_uuid в адресной строке кампании или из ответа push/create.
{
"app_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"push_uuid": "00000000-0000-0000-0000-000000000000"
}Когда клиент получает карту 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.
Регистрация карты клиентом. Ищите клиента по телефону (E.164). Если нет, создайте его и карту, верните customerId. Если есть, обновите, добавьте карту (или замените, если CRM однокарточная), верните customerId. Номера карт выдаёт CARDPR; в настройках интеграции укажите старт свободного диапазона.
{
"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.
{"customerId": "6d2845ff-0a07-11e7-25df-d8d18565926f"}{"error": "Detailed error description..."}Запрос баланса для ручного обновления бонусов и скидки на карте.
{
"crm_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"method": "readBalance",
"customer": {
"phone": "+79111111111",
"cardNumbers": ["120"]
}
}Верните баланс / бонус / скидку по клиенту, которого определили по телефону и номеру карты.
{
"success": true,
"bonus": 12.5,
"balance": 5,
"discount": 17.88
}Хук на начисление бонусов.
{
"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
}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<?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);
?>