付款失败时使用什么 HTTP 代码响应?

hak*_*nin 7 json http payment-processing

处理付款/处理信用卡时要使用什么 HTTP 代码?

例如:

  • 资金不足
  • 无法取回资金(没有给出原因的情况下)
  • 信用卡已过期

我正在发送 JSON 响应,所以我不太介意,但我想知道什么是正确的代码。

Eru*_*aro 7

首先,区分以下故障很重要:

  1. 由客户端引起的和
  2. 其他由服务器端问题引起的

后者通常描述客户端无法自行解决的错误。

第一个应该有 400 系列的状态代码。其他由服务器端引起的应该有 500 系列的状态代码。

我的建议

  • 资金不足

  • 我会建议400(错误的请求)以及有意义的错误消息。

  • 无法取回资金(没有给出原因的情况下)

  • 500(内部服务器错误),如果根本原因显然是服务器端。

  • 503(服务不可用),如果可以确定某些必要的网络服务暂时不可用。其背后的含义503是,此错误是暂时的,鼓励客户端稍后重试相同的请求。

    • 甚至可以将Retry-After标头设置为建议客户端在重试之前等待的秒数。
  • 400(错误的请求)如果根本原因是客户端的某种无效请求

  • 信用卡已过期

  • 再次,我建议400(错误的请求)+错误消息

可以在此处找到返回代码的完整列表。