如果发生错误,DPA 应返回 HTTP 状态代码以及 HTTP 响应,而该 JSON 响应必须包含 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 with TOO_MANY_REQUESTS 错误原因,以及 Retry-After 标头,指示 GTAF 向 DPA 发出的请求过多。
- DPA 返回 409 CONFLICT 错误,指示由于与 DPA 的当前状态冲突,请求无法完成。
- 服务暂时不可用。DPA 会返回 503 SERVICE UNAVAILABLE 并指明 Retry-After 标头,以指明何时可以尝试新的请求。
- 对于所有其他未指明的错误,DPA 会返回一个 500 内部服务器错误错误代码 ERROR_CAUSE_UNSPECIFIED。
如果购买期间遇到错误,以下错误代码表示失败的处理结果:
- DPA 会返回 400 BAD REQUEST 错误代码,以向 GTAF 表明购买的方案 ID 无效。
- DPA 会返回 402 PAYMENT REQUIRED 错误代码,告知 GTAF 用户余额不足,无法完成购买交易。
- DPA 会返回 409 CONFLICT 错误代码,告知 GTAF 用户想要购买的方案与用户的当前产品组合不兼容。例如,如果运营商流量套餐政策禁止混合使用预付费套餐和预付费套餐,则尝试为后付费用户购买预付费套餐将导致 409 CONFLICT 错误。
- DPA 会返回 403 FORBIDDEN 错误代码,以向 GTAF 指明当前事务与之前发出的事务重复。DPA 应返回以下错误作为响应:
- 如果上一个事务是失败的,则会显示表示失败原因的错误原因。
- 如果之前的处理成功,则 DUPLICATE_TRANSACTION。
- 如果上一个事务仍在队列中,则 REQUEST_QUEUED。