支付失败时使用什么 HTTP 代码响应?
What HTTP code response to use when payment fails?
处理付款/处理信用卡时使用什么 HTTP 代码?
例如:
- 资金不足
- 无法取回资金(无理由时)
- 信用卡过期
我正在发送 JSON 回复,所以我不太介意,但我想知道正确的代码是什么。
首先,重要的是要区分
- 由客户端造成
- 其他由服务器端问题引起的
后一种通常描述客户无法自行解决的错误。
第一个应该有400系列的状态码。其他的,服务器端引起的,状态码应该是500系列的。
我的建议
资金不足
- 我会建议
400
(错误请求)以及有意义的错误消息。
无法取回资金(没有给出原因时)
500
(internat server error),如果根本原因很明显是服务器端。
503
(Service Unavailable),如果可以确定某些必要的web服务暂时不可用。 503
背后的意思是这个错误是暂时的,鼓励客户端稍后重试相同的请求。
400
(错误请求)如果根本原因是客户端的某种无效请求
信用卡过期
- 同样,我建议
400
(错误请求)+ 错误消息
可在 here 中找到 return 个代码的完整列表。
前面的回答说的有道理。 重要的是您的 API 在决定响应代码后坚持其选择。 Here's a relevant Uber Eats bug caused by a payment provider changing their API.
我想补充一点,402
(需要付款)可能正是您要找的。请注意,402
在发表此评论时被 MDN 宣布为“实验性”。查看 RFC introducing the 402 status code here.
MDN docs状态:
Sometimes, this status code indicates that the request cannot be processed until the client makes a payment. However, no standard use convention exists and different entities use it in different contexts.
处理付款/处理信用卡时使用什么 HTTP 代码?
例如:
- 资金不足
- 无法取回资金(无理由时)
- 信用卡过期
我正在发送 JSON 回复,所以我不太介意,但我想知道正确的代码是什么。
首先,重要的是要区分
- 由客户端造成
- 其他由服务器端问题引起的
后一种通常描述客户无法自行解决的错误。
第一个应该有400系列的状态码。其他的,服务器端引起的,状态码应该是500系列的。
我的建议
资金不足
- 我会建议
400
(错误请求)以及有意义的错误消息。
- 我会建议
无法取回资金(没有给出原因时)
500
(internat server error),如果根本原因很明显是服务器端。503
(Service Unavailable),如果可以确定某些必要的web服务暂时不可用。503
背后的意思是这个错误是暂时的,鼓励客户端稍后重试相同的请求。400
(错误请求)如果根本原因是客户端的某种无效请求
信用卡过期
- 同样,我建议
400
(错误请求)+ 错误消息
- 同样,我建议
可在 here 中找到 return 个代码的完整列表。
前面的回答说的有道理。 重要的是您的 API 在决定响应代码后坚持其选择。 Here's a relevant Uber Eats bug caused by a payment provider changing their API.
我想补充一点,402
(需要付款)可能正是您要找的。请注意,402
在发表此评论时被 MDN 宣布为“实验性”。查看 RFC introducing the 402 status code here.
MDN docs状态:
Sometimes, this status code indicates that the request cannot be processed until the client makes a payment. However, no standard use convention exists and different entities use it in different contexts.