条带卡验证在开发与生产中表现不同

时间:2014-01-16 15:25:56

标签: credit-card stripe-payments

我对Stripe有一个奇怪的问题(在Rails上,但Rails部分可能无关紧要)。

当我在 production 中使用语法上有效但非工作的卡号填写我的注册表单时(例如4242424242424242),当我尝试创建令牌时,我收到此响应:

sjsonp1389885476573({
  "error": {
    "message": "Your card was declined.",
    "type": "card_error",
    "code": "card_declined"
  }
}
, 402)

开发时,我使用“始终返回card_declined”卡号(4000000000000002),Stripe将其视为非常好:

sjsonp1389885473743({
  "id": "tok_3JvncLYlEZ5NMF",
  "livemode": false,
  "created": 1389885584,
  "used": false,
  "object": "token",
  "type": "card",
  "card": {
    "id": "card_3Jvnr4MtIxzzd5",
    "object": "card",
    "last4": "0002",
    "type": "Visa",
    "exp_month": 2,
    "exp_year": 2020,
    "fingerprint": "dWQBpXrSXnyqoOxe",
    "customer": null,
    "country": "US",
    "name": null,
    "address_line1": null,
    "address_line2": null,
    "address_city": null,
    "address_state": null,
    "address_zip": null,
    "address_country": null,
    "address_line1_check": null,
    "address_zip_check": null,
    "cvc_check": null
  }
}
, 200)

所以看起来Stripe API的这一部分不起作用as advertised或者我自己也犯了某种愚蠢的错误或其他什么。

我有点不知所措。有什么想法吗?

1 个答案:

答案 0 :(得分:7)

我无法证明以下内容的准确性,但这是我理解中最好的。如果你更了解,请随意让我直截了当。

用户创建帐户时会发生两个步骤:

  1. 符号化。这是通过XHR请求发生的。
  2. 帐户创建。这发生在服务器端。
  3. 在条纹测试模式下,我了解通过Luhn检查的所有数字都将成功标记,包括Stripe的特殊测试数字。 (正确)故障发生的地方是服务器端帐户创建发生的时间。

    在条纹实时模式下,我了解通过Luhn检查的所有数字都将成功标记为除了Stripe的测试数字。 Stripe会拒绝这些数字,因为它们是Stripe的测试数字。

    所以我能想到的最好的解决方案是告诉客户端Stripe的测试编号将始终在生产中无声地失败,我们的选择是a)使用它或b)编写代码将专门捕获Stripe测试数字,并在使用这些数字时出现生产错误。