Stripe托管帐户webhooks和rails

时间:2017-10-07 07:04:34

标签: ruby-on-rails stripe-connect

我正在使用rails 5构建市场。我已经能够使用'stripe gem'使用条带连接设置“自定义管理帐户”。

我也在使用'stripe_event gem'来捕捉来自条纹的webhook。我可以使用标准条带帐户毫无问题地执行此操作。

但是,根据stripe docs使用条带连接时,我必须在某处添加另一个account attribute。由于挂钩的事件在主要条带帐户中不存在,但在连接的帐户中不存在。

完全有道理我只是不知道如何更新我的课程。

Stripe.api_key = Rails.configuration.stripe[:secret_key]


class RecordAccount
    def call(event)
        myevent = event.data.object

        #Look up StripeAccount in our database
        stripe_account = StripeAccount.where(stripe_id: myevent.account).last

        #Record Verification details and status in StripeAccount
        u = stripe_account.update_attributes(
            verification_status: myevent.legal_entity.verification.status,
            verification_details: myevent.legal_entity.verification.details,
            )
        u.save

    end
end

StripeEvent.configure do |events|
  events.subscribe 'account.updated', RecordAccount.new
end

我从上面得到的回复是404 - 事件XXXX未找到。这是有道理的,但我该如何解决它。我知道这是一个简单的答案,我一直在看屏幕太久了。

1 个答案:

答案 0 :(得分:0)

我还没有使用过您提及的宝石,但我对连接帐户事件也有同样的问题。就我而言,我只是在我的应用中设置了一个端点来接收Stripe webhook事件。

重要的是,对于关联帐户,您必须使用"帐户"有效负载中的属性以及事件ID,而对于涉及您的帐户的事件,您只需使用事件ID。

这是我的意思的代码示例

  begin
    payload = JSON.parse(request.body.read)
    # Verify the event by fetching it from Stripe
    if payload['account'].present?
      # This is for connected accounts
      Stripe::Event.retrieve(payload['id'], stripe_account: payload['account'])
    else
      # Normal events
      Stripe::Event.retrieve(payload['id'])
    end
  rescue Stripe::StripeError => e
    # Handle this however you prefer
    raise ActiveRecord::RecordNotFound.new(e)
  end

希望它有所帮助!