Карты
Привязка карты клиента по SMS-коду
Клиент - это externalUserId, идентификатор пользователя в вашей системе. Отдельно создавать клиента
не нужно: он появляется при первой привязке карты.
Привязка
Авторизация
bearer Где: header
Заголовки
8-128 символов [A-Za-z0-9._:-], уникальный для каждой операции
^[A-Za-z0-9._:-]{8,128}$Тело запроса
application/json
Типы TypeScript
Используйте тип request body в TypeScript.
Тело ответа
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/cards" \ -H "Idempotency-Key: string" \ -H "Content-Type: application/json" \ -d '{ "externalUserId": "string", "cardNumber": "string", "expiryMonth": 1, "expiryYear": 0 }'{ "success": true, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "processingTimeMs": 0 }, "data": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "externalUserId": "string", "status": "PENDING_CONFIRMATION", "mask": "string", "expiry": "string", "otpSentPhone": "string", "createdAt": "2019-08-24T14:15:22Z" }}Авторизация
bearer Где: header
Параметры пути
uuidТело запроса
application/json
Типы TypeScript
Используйте тип request body в TypeScript.
Тело ответа
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/cards/497f6eca-6276-4993-bfeb-53cbbbba6f08/confirm" \ -H "Content-Type: application/json" \ -d '{ "otp": "string" }'{ "success": true, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "processingTimeMs": 0 }, "data": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "externalUserId": "string", "status": "PENDING_CONFIRMATION", "mask": "string", "expiry": "string", "otpSentPhone": "string", "createdAt": "2019-08-24T14:15:22Z" }}POST /v1/cardsс номером и сроком карты → статусPENDING_CONFIRMATION, держателю приходит SMS.POST /v1/cards/{id}/confirmс кодом → статусACTIVE.
Если эта же карта уже привязана к клиенту и активна, шаг 1 вернёт её сразу, без SMS. Повторная привязка неподтверждённой карты заменяет предыдущую попытку - так делается «отправить код ещё раз».
Что мы храним
Только токен провайдера, маску вида 860012******9012, срок действия и отпечаток для поиска дубликатов.
Полный номер карты нигде не сохраняется.
Доступ между мерчантами
По умолчанию карты клиента общие для всех мерчантов вашего бизнеса. В настройках мерчанта можно включить режим «только этого мерчанта». Карты разных бизнесов не видны друг другу никогда.
Список и отвязка
Авторизация
bearer Где: header
Параметры пути
Тело ответа
application/json
application/json
application/json
curl -X GET "https://example.com/v1/customers/string/cards"{ "success": true, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "processingTimeMs": 0 }, "data": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "externalUserId": "string", "status": "PENDING_CONFIRMATION", "mask": "string", "expiry": "string", "otpSentPhone": "string", "createdAt": "2019-08-24T14:15:22Z" } ]}Авторизация
bearer Где: header
Параметры пути
uuidТело ответа
application/json
application/json
application/json
application/json
curl -X DELETE "https://example.com/v1/cards/497f6eca-6276-4993-bfeb-53cbbbba6f08"{ "success": true, "meta": { "requestId": "string", "timestamp": "2019-08-24T14:15:22Z", "processingTimeMs": 0 }, "data": { "removed": true }}GET /v1/customers/{externalUserId}/cards- активные карты, доступные мерчанту.DELETE /v1/cards/{id}- отвязать карту.