Отказы и лимиты
Ошибка приходит с StatusName ≠ REQUEST_ACCEPTED, полями ErrorReasonName (машинный код) и ErrorDescription (пояснение). HTTP-код при этом 200 — кроме двух случаев ниже.
Коды ErrorReasonName
| Код | Когда | Чем воспроизвести |
|---|---|---|
InvalidSubscriberMsisdn | Номер не в формате 7XXXXXXXXXX | Передать Subscriber_MSISDN из 5 цифр |
SubscriberMustBeSpecified | Нет ни номера, ни ClientIP, ни CustomerType=Card | CreateSubscription без полей клиента |
SubscriptionAlreadyCreated | У абонента уже есть неотменённая подписка на этом проекте | Повторный CreateSubscription с тем же номером |
SubscriberNotSupported | Оператор абонента не поддерживает тарификацию | Номер, оканчивающийся на 0001 |
SubscriberInBlacklist | Номер в чёрном списке | Номер, оканчивающийся на 0002 |
ClientIPMSISDNCountryNotEqual | Страны по номеру и по IP не совпадают | Номер на 0003 вместе с ClientIP |
InvalidClientIP | ClientIP не разбирается как IP-адрес | <ClientIP>not-an-ip</ClientIP> |
InvalidPinCode | Неверный PIN, в описании — остаток попыток | ApproveSubscription с PIN ≠ 1234 |
ExceededSubscriptionApprovingAttempts | Три неверных PIN подряд либо истекли 3 часа на подтверждение | Три раза подряд неверный PIN |
SubscriptionAlreadyApproved | Подписка уже подтверждена | Повторный ApproveSubscription |
При SubscriptionAlreadyCreated в ErrorDescription печатается SubscriptionID существующей подписки — чтобы продолжить сценарий, не создавая вторую. Чтобы прогнать сценарий начисто, возьмите другой номер или сначала вызовите CancelSubscription.
HTTP-коды
| Код | Когда |
|---|---|
400 | Тело не разбирается как XML или пустое — по спеке платформа отвечает 400 Bad request |
503 | Превышен лимит частоты (ниже). В теле — StatusName=SERVICE_UNAVAILABLE |
200 | Все остальные случаи, включая ошибки подписи и параметров |
Лимиты частоты
| Счётчик | Пороги | Методы |
|---|---|---|
ClientIP | 50 за 10 мин, 200 за 60 мин | все |
Subscriber_MSISDN | 6 за 2 мин, 10 за 20 мин | CreateSubscription, CancelSubscription |
SubscriptionProjectID | 1000 за 1 мин, 3000 за 5 мин | все |
Пороги те же, что в бою. Счётчики независимы: превышение по одному номеру не блокирует остальных абонентов проекта.
Ответ с ошибкой
<Response>
<StatusName>WRONG_PARAMS</StatusName>
<ErrorReasonName>SubscriptionAlreadyCreated</ErrorReasonName>
<ErrorDescription>Subscription already exists: SubscriptionID=10000001, status=Active</ErrorDescription>
</Response>Sandbox
Отказ по номеру
# номер на 0002 — чёрный список
<Subscriber_MSISDN>79001230002</Subscriber_MSISDN>
<Response>
<StatusName>WRONG_PARAMS</StatusName>
<ErrorReasonName>SubscriberInBlacklist</ErrorReasonName>
</Response>Превышен лимит
HTTP/1.1 503 Service Unavailable
<Response>
<StatusName>SERVICE_UNAVAILABLE</StatusName>
<ErrorDescription>msisdn:79001234567 exceeded 6 requests per 2 min</ErrorDescription>
</Response>