繁体   English   中英

Ruby on Rails - Stripe::CardError 未捕获被阻止的付款

[英]Ruby on Rails - Stripe::CardError not catching blocked payments

我正在开发一个基于订阅的网站,其内容位于与 Stripe 连接的付费墙后面。 如果收费被拒绝或阻止,帐户创建应停止,go 返回帐户创建屏幕,并显示错误消息。

这是我的异常代码:

class RegistrationsController < Devise::RegistrationsController
  rescue_from Stripe::CardError, with: :stripe_card_error

  def stripe_card_error(e)
   flash[:error] = "#{e.error.message}"
   redirect_to request.referrer || "registrations#new" and return
  end

  def new
   #
  end
  def create
   #
  end
  //etc. etc.

它适用于一般卡拒绝,但是,当我运行 Stripe 提供的测试卡号时,明确表示它将返回欺诈性,救援不会触发并且用户帐户已创建。

我进入我的条纹仪表板,我可以看到客户、订阅等,但付款被阻止。

我原以为 Stripe::CardError 会捕捉到这一点,但显然不是。

如果付款因潜在欺诈而被阻止,我不希望创建用户帐户。 我想将其视为带有适当错误消息的一般卡片拒绝。

是否有另一个我可以挽救的错误或另一种方法来做到这一点? 我在 Stripe 的 API 中找不到任何关于处理此问题的最佳方法的信息。

Stripe在其 API 参考中提供了一个示例错误处理片段 该片段表明您应该捕获并处理以下所有内容:

  • Stripe::CardError
  • Stripe::RateLimitError
  • Stripe::InvalidRequestError (这可能是适用于这种特定情况的错误)
  • Stripe::AuthenticationError
  • Stripe::APIConnectionError
  • Stripe::StripeError (这也可能是你想要的)

而且,如果一切都失败了,您应该执行一般rescue以捕捉其他任何东西。

您只能执行一般rescue并检查错误以确定抛出哪个特定的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM