如果出现错误,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 表明所购买的方案 ID 无效。
- DPA 返回 402 PAYMENT REQUIRED 错误代码,向 GTAF 指示用户没有足够的余额来完成购买交易。
- DPA 返回 409 CONFLICT 错误代码,向 GTAF 指示要购买的方案与用户当前的产品组合不兼容。例如,如果运营商数据流量方案政策不允许混合使用后付费和预付费方案,那么尝试为后付费用户购买预付费方案会导致 409 CONFLICT 错误。
- DPA 返回 403 FORBIDDEN 错误代码,向 GTAF 指示当前交易与之前签发的交易重复。DPA 应在响应中返回以下错误原因:
- 如果上一个事务失败,则表示失败原因的错误原因。
- 如果上一次交易成功,则为 DUPLICATE_TRANSACTION。
- 如果上一个交易仍在队列中,则为 REQUEST_QUEUED。