【问题标题】:Why I get "Your card's expiration month is invalid" in Stripe为什么我在 Stripe 中收到“您的卡的到期月份无效”
【发布时间】:2014-06-03 02:45:21
【问题描述】:

我正在尝试使用 Stripe HTTP API 发布一张新卡,并且我认为我按照文档做得对。我正在使用 cake 的 HttpSocket 直接发出请求,并且通过此处显示的输出,我认为格式正确。但我仍然收到错误:(。

Array
(
    [method] => POST
    [uri] => https://api.stripe.com/v1/customers/cus_49G6yn5Bj5tKkD/cards
    [auth] => Array
        (
            [method] => Basic
            [user] => <my-secret>
            [pass] => 
        )

    [body] => Array
        (
            [card] => Array
                (
                    [number] => 4242424242424242
                    [exp_month] => 05
                    [exp_year] => 2014
                    [name] => Card Holder
                )

        )

)

看到到期月份是一个 2 位数的数字,如果您查看原始请求,它已按原样发送: 这是原始请求:

POST /v1/customers/cus_49G6yn5Bj5tKkD/cards HTTP/1.1
Host: api.stripe.com
Connection: close
User-Agent: CakePHP
Authorization: Basic <my-authorization-code>
Content-Type: application/x-www-form-urlencoded
Content-Length: 109

card%5Bnumber%5D=4242424242424242&card%5Bexp_month%5D=05&card%5Bexp_year%5D=2014&card%5Bname%5D=Card+Holder

这是回应:

{
  "error": {
    "message": "Your card's expiration month is invalid.",
    "type": "card_error",
    "param": "exp_month",
    "code": "invalid_expiry_month"
  }
}

【问题讨论】:

  • API 可能会根据数字说日期无效,而不是格式错误。我相信有一种算法可以将数字与到期日期相关联,如果该检查失败,则到期日期无效。
  • 在 API 文档的示例中,到期月份不是用零填充的。尝试只删除“0”。
  • @slim 我第一次收到错误时,数字不是零填充的。那是当我读到(原文来自 api doc)“exp_month:需要代表卡到期月份的两位数。”。我也注意到了这个例子,但我意识到这是一个“响应示例”,所以我认为它不适用于请求。
  • @DaveSwersky 如果是这种情况,我一直无法找到我需要使用的确切测试数据。在文档中,他们只提供卡号和卡类型。我会继续寻找。

标签: cakephp stripe-payments


【解决方案1】:

所有错误都是因为卡 已于 2014 年 6 月过期;正如@daveSwersky 指出的那样,Stripe 不仅检查格式错误的数据,还检查值。 所以,答案给了他:)

【讨论】:

  • 谢谢伙计。我刚遇到同样的错误,这篇文章真的帮助了我:-)
  • @RobertReiz 很高兴它有帮助 :-) 编码愉快!
猜你喜欢
  • 2017-05-16
  • 2015-12-01
  • 1970-01-01
  • 2020-06-07
  • 2019-08-13
  • 2020-04-10
  • 2020-02-26
  • 1970-01-01
  • 2017-11-30
相关资源
最近更新 更多