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

rsl1atfo  于 2023-01-10  发布在  其他
关注(0)|答案(2)|浏览(88)

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

  • 资金不足
  • 无法提取资金(未给出原因时)
  • 信用卡过期

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

gab6jxml

gab6jxml1#

首先,必须区分以下故障
1.由客户端引起
1.其他是由服务器端的问题引起的
后者通常描述客户端无法自己解决的错误。
第一个问题应该有一个400系列的状态码,其他由服务器端引起的问题应该有一个500系列的状态码。
"我的建议"

  • 资金不足
  • 我建议使用400(Bad request)以及一个有意义的错误消息。
  • 无法提取资金(未给出原因时)
  • 500(内部服务器错误),如果根本原因明显是服务器端。
  • 503(服务不可用),如果可以确定某些必要的Web服务暂时不可用。503背后的含义是,此错误是暂时性的,鼓励客户端稍后重试相同的请求。
  • 甚至可以在Retry-After头中设置建议客户端在重试之前等待的秒数。
  • 400(Bad request),如果根本原因是客户端发出的某种无效请求
  • 信用卡过期
  • 同样,我建议使用400(错误请求)+错误消息

返回代码的完整列表可以在here中找到。

h4cxqtbf

h4cxqtbf2#

前面的答案是正确的。* 重要的是,您的API在决定响应代码后会坚持自己的选择。* Here's a relevant Uber Eats bug caused by a payment provider changing their API.
我想补充的是402(需要支付)可能是你正在寻找的。注意,402是由MDN声明为“实验性”在这个评论的时候。检查RFC介绍402状态码在这里。
MDN docs状态:
有时,此状态代码表示在客户付款之前无法处理请求。但是,不存在标准的使用惯例,不同的实体在不同的上下文中使用它。

相关问题