Rails:控制器/创建-如何编写if创建成功

问题描述

我当前正在构建一个使用条带化的应用程序,当付款成功时,用户将遵循 redirect_to session.delete(:return_to)。付款失败或出现错误时,如何控制用户去向何处?

也许我需要一个if语句?如果成功?

  def create

    @account = User.find_by_id(params[:account_id])
    key = @account.access_code
    Stripe.api_key = key
    account_suid = @account.uid
    @order = Order.find(params[:order])
    charge = @order.amount * 100
    fee = @order.amount * 1
  
    token = params[:stripeToken]
    customer = Stripe::Customer.create(email: @order.email,source: token)
 
     Stripe::PaymentIntent.create({
       customer: customer,amount: (charge).to_i,confirm: true,currency: 'gbp',payment_method_types: ['card'],application_fee_amount: (fee).to_i,},{
       stripe_account: account_suid
     })
    options = {
      stripe_id: customer.id
    }

    options.merge!(
      card_last4: params[:user][:card_last4],card_exp_month: params[:user][:card_exp_month],card_exp_year: params[:user][:card_exp_year],card_type: params[:user][:card_brand]
    )

    OrderFiniJob.perform_now(@order)
    redirect_to session.delete(:return_to),notice: "Your order has been successful ??"
    
  end

解决方法

发生错误或付款被拒时,stripe会引发异常(some stripe erros)。 因此,您可以挽救错误并响应所需的内容,例如400

def create
  ...
  redirect_to ...

rescue Stripe::StripeError
  render status: :bad_request
end

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...