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

问题描述 投票:0回答:2

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

例如:

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

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

json http payment-processing
2个回答
8
投票

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

  1. 由客户端引起并且
  2. 其他因服务器端问题导致的

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

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

我的建议

  • 资金不足

  • 我建议

    400
    (错误的请求)以及有意义的错误消息。

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

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

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

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

  • 信用卡已过期

  • 我再次建议

    400
    (错误的请求)+错误消息

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


4
投票

之前的回答说的是有效的。 重要的是,您的 API 在决定响应代码后坚持其选择。 这是由支付提供商更改其 API 导致的相关 Uber Eats 错误。

我想补充一点,

402
(需要付款)可能就是您正在寻找的。请注意,在发表此评论时,MDN 已将
402
声明为“实验性”。请在此处查看介绍 402 状态代码的 RFC。

MDN 文档状态:

有时,此状态代码表示在客户端付款之前无法处理请求。然而,不存在标准的使用约定,不同的实体在不同的上下文中使用它。

© www.soinside.com 2019 - 2024. All rights reserved.