在充电失败时检索条纹充电ID

时间:2016-03-26 19:31:33

标签: ruby-on-rails ruby stripe-payments stripe-connect

我正在尝试在收费失败时检索条带费用ID,因此我可以在charge.failed挂钩被触发时通过该ID检索我的记录。我试过检查被触发的异常,但我找不到任何方法来获取它。这是我的代码:

  def charge
    token = params[:stripeToken]
    type = params[:stripeTokenType]
    metadata = {}
    record = Record.new(amount: Random.rand(2000), valid: false)
    charge = nil
    begin
      charge = Stripe::Charge.create(
          {
              amount: 2000,
              currency: 'eur',
              source: token,
              description: 'Test',
              metadata: metadata
          }, { stripe_account: 'xxxxx' })
      record.stripe_charge_id
      flash[:notice] = 'Transaction validée'
    rescue Exception => e
      record.error = e.code
      flash[:error] = 'Erreur de paiement'
    end
    flash[:error] = 'Erreur de paiement' unless record.save || flash[:error]
    redirect_to :stripe_test
  end

2 个答案:

答案 0 :(得分:0)

我最后使用元数据存储我的记录ID。所以我可以使用这个元数据来检索它。

charge = Stripe::Charge.create(
    {
        amount: 2000,
        currency: 'eur',
        source: token,
        description: 'Test',
        metadata: { record_id: 23 }
    }, { stripe_account: 'xxxxx' })

答案 1 :(得分:0)

我有同样的问题。在失败的尝试充电时检索正确的充电ID的正确方法很简单,但是记录的不够准确。 Stripe在错误内向您发送费用ID:

这是python!

try:
    # make the charge
except stripe.error.CardError as e:
    # Since it's a decline, stripe.error.CardError will be caught
    body = e.json_body
    err = body.get('error', {})
    charge_id = err.get('charge') # this will return ch_1EPVmxKT>DPET....