使用Stripe Connect时,如何处理'此电子邮件帐户已存在'错误?

时间:2016-03-25 17:48:31

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

在处理与Stripe Accounts连接的应用时,我遇到了一个问题。如果给定电子邮件的帐户已存在,则无法创建新帐户。 Stripe会抛出错误。

但是如何连接到现有帐户?我在任何地方都找不到任何东西。

为清楚起见,失败的代码是:

Stripe::Acount.create(managed: false, email: 'Foo@UserEmail.address')

我正在创建一个Stripe::Account对象,而不是Stripe::Customer个对象。如果电子邮件已存在于Stripe的API上,则上述代码会引发异常,但不会向我提供任何与之连接的信息。

我担心的是,如果已经拥有Stripe帐户的用户尝试加入该网站,我该如何将其关联起来。

2 个答案:

答案 0 :(得分:2)

由于您使用的是独立帐户,如果用户已拥有包含该电子邮件地址的Stripe帐户,您将无法创建该帐户。

在这种情况下,您必须使用OAuth flow将现有帐户连接到您的平台。

请注意,您可以使用OAuth流来处理这两种情况。如果用户已拥有Stripe帐户,则可以登录其现有帐户进行连接,如果用户不能,则可以创建新帐户并同时进行连接。

答案 1 :(得分:0)

使用Stripe Gem,如果帐户已经存在,我会使用类似的东西:

Stripe::Customer.retrieve(@user.stripe_id)

您可以这样做:

customer = if @user.stripe_id?
              Stripe::Customer.retrieve(@user.stripe_id)
            else
              Stripe::Customer.create(email: @user.email)
            end

我通常将stripe_id与相关模型一起存储,但您可以使用Stripe API来检索它。

更新

我想念您的问题。如果你在谈论不同的账户(而不是客户)。您可以使用Stripe API检索所有帐户的列表,然后根据电子邮件选择所需帐户。

List all accounts with Stripe API

然后使用相应的电子邮件检索帐户:

Stripe::Account.retrieve("account_id")

answer为帐户转换的建议:

accounts = Stripe::Account.all

account_i_need = accounts.select do |c|
  c.email == "foo@bar.com"
end