为啥 Stripe.com 返回错误 (402) 需要付款?
Posted
技术标签:
【中文标题】为啥 Stripe.com 返回错误 (402) 需要付款?【英文标题】:Why does Stripe.com return error (402) Payment Required?为什么 Stripe.com 返回错误 (402) 需要付款? 【发布时间】:2013-10-14 21:10:37 【问题描述】:我没有在任何地方看到 Stripes API 中描述的这个特定错误。有谁知道怎么回事?
这是我创建客户的 VB.net 代码:
Function CreateStripeCustomer(ByVal Token As String) As String
'' The Stripe Account API Token - change this for testing
Dim STR_Stripe_API_Token As String = "sk_test_SECRET_TEST_KEY" '<-- test secret key. Change to live later.
''The Stripe API URL
Dim STR_Stripe_API_URL As String = "https://api.stripe.com/v1/customers"
''Creates a Web Client
Dim OBJ_Webclient As New System.Net.WebClient()
''Creates Credentials
Dim OBJ_Credentials As New System.Net.NetworkCredential(STR_Stripe_API_Token, "MY_STRIPE.COM_PASSWORD")
''Sets the Credentials on the Web Client
OBJ_Webclient.Credentials = OBJ_Credentials
''Creates a Transaction with Data that Will be Sent to Stripe
Dim OBJ_Transaction As New System.Collections.Specialized.NameValueCollection()
OBJ_Transaction.Add("email", "PERFECTLY_VALID_EMAIL")
OBJ_Transaction.Add("card", "PERFECTLY VALID TOKEN RETURNED BY STRIPE.JS")
''The Stripe Response String
Dim STR_Response As String = Encoding.ASCII.GetString(OBJ_Webclient.UploadValues(STR_Stripe_API_URL, OBJ_Transaction))
Return STR_Response
End Function
在线发生402“payment required”错误:
Dim STR_Response As String = Encoding.ASCII.GetString(OBJ_Webclient.UploadValues(STR_Stripe_API_URL, OBJ_Transaction))
【问题讨论】:
【参考方案1】:如果您在现场看到这种情况,也有可能卡号完全不正确,例如:如果您检查 402 响应的正文:
【讨论】:
【参考方案2】:好吧,我切换到我的“LIVE”键而不是“TEST”键,并且修复了它。只是浪费了我生命中的 3 个小时试图解决这个问题。希望这对其他人有帮助。
【讨论】:
不幸的是,他们在不同的环境中以不同的方式格式化响应......不是能够毫无差异地进行测试吗?哦,好吧【参考方案3】:更正确的答案是你需要使用合适的测试卡号。见https://stripe.com/docs/testing
【讨论】:
经过更多测试后,此响应将显示一条错误消息(如无效卡号),然后您可以显示。 切换到使用测试卡为我修复了这个错误。您无法使用真实的卡号进行测试。【参考方案4】:Stripe 提供了一个测试环境,您可以在其中使用测试可发布/秘密密钥,而不是等到生产。然而,看起来不利的一面,实际上非常有用的是,您需要遵守 Stripe 的测试条件并使用他们给定的卡号和输入来测试您的 api 调用的不同方面。
例如,为了接收某些错误,您可以输入这些数字:
card_declined: Use this special card number - 4000000000000002.
incorrect_number: Use a number that fails the Luhn check, e.g. 4242424242424241.
invalid_expiry_month: Use an invalid month e.g. 13.
invalid_expiry_year: Use a year in the past e.g. 1970.
invalid_cvc: Use a two digit number e.g. 99.
有关更多信息,请参阅 Samir 发布的链接。
【讨论】:
【参考方案5】:对于 ios
如果您关注tutorial from Ray Wunderlich website,则可能出现错误的原因是您运行了测试后端(web.rb 文件),然后添加了 TEST_SECRET_KEY。
到终端点击control+C,确保你已经添加了你的TEST_SECRET_KEY,保存文件并执行ruby web.rb。
目前,一切都应该正常。
作为参考,我使用这个卡号进行测试:4242 4242 4242 4242
【讨论】:
以上是关于为啥 Stripe.com 返回错误 (402) 需要付款?的主要内容,如果未能解决你的问题,请参考以下文章
握手后,cometd立即返回“402 :: Unknown Client”错误
Stripe 实现出现错误无法读取 null 的属性“addEventListener”