Stripe 托管帐户网络挂钩和 rails

Stripe managed account webhooks and rails

我正在 rails 建立一个市场 5. 我已经能够使用 'stripe gem' 通过 条带连接 'custom managed account' .

我也在使用 'stripe_event gem' 来捕获来自 stripe 的 webhook。我可以使用标准条带帐户毫无问题地做到这一点。

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

完全有道理我只是不知道如何更新我的 class 来这样做。

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 未找到。这是有道理的,但我该如何解决它。我知道这是一个简单的答案,我只是盯着屏幕看了太久。

我没有使用过您提到的 gem,但我在连接帐户事件时遇到了同样的问题。就我而言,我刚刚在我的应用程序中设置了一个端点来接收 Stripe webhook 事件。

重要的是,对于连接的帐户,您必须在有效负载中使用 "account" 属性 和事件 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

希望对您有所帮助!