В случае ошибки DPA должен вернуть код статуса HTTP вместе с HTTP-ответом, который ОБЯЗАТЕЛЬНО должен включать JSON-объект с дополнительной информацией об ошибке. Тело ответа об ошибке ОБЯЗАТЕЛЬНО должно содержать экземпляр ErrorResponse .
{
"errorMessage": string,
"cause": enum(ErrorCause)
}
Ответ об ошибке DPA ДОЛЖЕН соответствовать следующему:
- Пользователь в настоящее время находится в роуминге, и запрос DPA для него отключён. DPA возвращает ошибку 403 с указанием USER_ROAMING в качестве причины.
- DPA возвращает код ошибки 404 NOT_FOUND, указывающий GTAF, что ключ пользователя недействителен (т. е. несуществующий ключ пользователя ) с INVALID_NUMBER.
- DPA возвращает код ошибки 410 GONE с BAD_CPID в качестве причины ошибки, указывая GTAF, что клиент должен получить новый ключ пользователя, если key_type = CPID и срок действия CPID истек.
- DPA возвращает код ошибки 501 NOT_IMPLEMENTED, указывающий на то, что он не поддерживает этот вызов с причиной ошибки SERVICE_UNAVAILABLE.
- DPA возвращает ошибку 429 TOO MANY REQUESTS с причиной TOO_MANY_REQUESTS и заголовком Retry-After, указывающим на то, что GTAF отправляет слишком много запросов к DPA.
- DPA возвращает ошибку 409 CONFLICT, указывающую на то, что запрос не может быть выполнен из-за конфликта с текущим состоянием DPA.
- Служба временно недоступна. DPA возвращает код 503 SERVICE UNAVAILABLE с заголовком Retry-After, указывающим, когда можно попытаться отправить новый запрос.
- DPA возвращает код ошибки 500 INTERNAL SERVER ERROR для всех остальных неуказанных ошибок ERROR_CAUSE_UNSPECIFIED в качестве причины ошибки.
В случае возникновения ошибок во время покупки следующие коды ошибок будут указывать на неудавшиеся результаты транзакции:
- DPA возвращает код ошибки 400 BAD REQUEST, указывающий GTAF, что приобретенный идентификатор плана недействителен.
- DPA возвращает код ошибки 402 PAYMENT REQUIRED, сообщающий GTAF, что у пользователя недостаточно средств для завершения покупки.
- DPA возвращает код ошибки 409 CONFLICT, указывающий GTAF на то, что приобретаемый тарифный план несовместим с текущим набором услуг пользователя. Например, если политика тарифного плана оператора запрещает совместное использование постоплатных и предоплатных тарифов, попытка приобрести предоплатный тариф для пользователя с постоплатной системой обслуживания приведёт к ошибке 409 CONFLICT.
- DPA возвращает код ошибки 403 FORBIDDEN, указывающий GTAF на то, что текущая транзакция является дубликатом ранее выполненной транзакции. DPA ДОЛЖЕН возвращать в ответ следующие причины ошибок:
- Если предыдущая транзакция завершилась неудачей, то ошибка указывает причину сбоя.
- Если предыдущая транзакция была успешной, DUPLICATE_TRANSACTION.
- Если предыдущая транзакция все еще находится в очереди, REQUEST_QUEUED.