如果發生錯誤,DPA 應傳回 HTTP 狀態碼和 HTTP 回應,且 HTTP 回應必須包含 JSON 物件,其中提供錯誤的詳細資訊。錯誤回應主體必須包含 ErrorResponse 的例項。
{
"errorMessage": string,
"cause": enum(ErrorCause)
}
DPA 錯誤回應必須符合下列條件:
- 使用者目前處於漫遊狀態,且已為該使用者停用 DPA 查詢。DPA 會傳回 403 錯誤,並將 USER_ROAMING 設為錯誤原因。
- DPA 會傳回 404 NOT_FOUND 錯誤代碼,向 GTAF 指出 user key 無效 (即不存在的 user key),並顯示 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 標頭中指出何時可以嘗試新要求。
- 對於所有其他未指定的錯誤 ERROR_CAUSE_UNSPECIFIED,DPA 會傳回 500 INTERNAL SERVER ERROR 錯誤代碼做為錯誤原因。
如果在購買時遇到錯誤,下列錯誤代碼代表交易失敗:
- 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。