Статусы и ошибки
StatusName — результат обработки
| Значение | Описание |
|---|---|
REQUEST_ACCEPTED | Запрос принят и обработан |
SECURITY_ERROR | Ошибка подписи или дрейф Now больше 20 минут |
WRONG_PARAMS | Некорректный набор параметров |
SERVICE_UNAVAILABLE | Превышен лимит частоты запросов |
INTERNAL_ERROR | Внутренняя ошибка платформы |
При ошибке ответ дополнительно содержит ErrorDescription (пояснение) и ErrorReasonName (машинный код).
HTTP-коды
| Код | Когда |
|---|---|
400 | Тело не разбирается как XML либо пустое |
503 | Превышен лимит частоты. В теле — StatusName=SERVICE_UNAVAILABLE |
200 | Все остальные случаи, включая ошибки подписи и параметров — смотрите StatusName |
Коды ErrorReasonName
| Код | Когда |
|---|---|
InvalidSubscriberMsisdn | Номер не в формате 7XXXXXXXXXX |
SubscriberMustBeSpecified | Не передано ни номера, ни ClientIP, ни CustomerType=Card |
SubscriptionAlreadyCreated | У абонента уже есть неотменённая подписка в этом проекте. SubscriptionID существующей печатается в ErrorDescription |
SubscriberNotSupported | Оператор абонента не поддерживает тарификацию |
SubscriberInBlacklist | Номер в чёрном списке |
ClientIPMSISDNCountryNotEqual | Страны по номеру и по IP не совпадают |
InvalidClientIP | ClientIP не разбирается как IP-адрес |
InvalidPinCode | Неверный PIN, в описании — остаток попыток |
ExceededSubscriptionApprovingAttempts | Три неверных PIN подряд либо истекли 3 часа на подтверждение |
SubscriptionAlreadyApproved | Подписка уже подтверждена |
Лимиты частоты
| Счётчик | Пороги | Методы |
|---|---|---|
ClientIP | 50 за 10 мин, 200 за 60 мин | все |
Subscriber_MSISDN | 6 за 2 мин, 10 за 20 мин | CreateSubscription, CancelSubscription |
SubscriptionProjectID | 1000 за 1 мин, 3000 за 5 мин | все |
Счётчики независимы: превышение по одному номеру не блокирует остальных абонентов проекта. Превышение — 503.
Ответ с ошибкой
<?xml version="1.0" encoding="utf-8"?>
<Response>
<StatusName>SECURITY_ERROR</StatusName>
<ErrorDescription>Signature validation failed</ErrorDescription>
<ErrorReasonName>InvalidSignature</ErrorReasonName>
</Response>Поля ответа CreateSubscription
| Поле | Описание |
|---|---|
SubscriptionID | Идентификатор подписки в системе платформы — сохраните его |
SubscriberAcceptanceRequired | Требуется ли подтверждение абонентом |
SubscriberAcceptanceChannel | Канал подтверждения: SMS_PIN или AUTH_PAGE |
AuthorizeUrl | Страница оплаты или подтверждения — только для канала AUTH_PAGE |
SubscriptionStatus | Состояние подписки сразу после создания — Pending |
TrialExists | Есть ли пробный период у подписки |
OperatorID | Оператор абонента |
PaidUntil | Оплачено до — дата и время с таймзоной |
Поля коллбека
| Поле | Описание |
|---|---|
EventType | Тип события, например APPROVED |
SubscriptionStatus | Состояние подписки, например Active |
BillingIteration / BillingAttempt | Номер итерации биллинга и попытки внутри неё |
CustomerPrice | Сумма списания: атрибуты currency и amount |
BillingOperationID | Идентификатор биллинговой операции |
BillingErrorCode | Код ошибки биллинга, 0 — успех |
PaidUntil | Новая дата окончания оплаченного периода |