使用条带连接时,如何处理'account with this email already exists'错误?



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

但我如何连接到现有帐户?我找不到任何地方可以这样做。

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

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

我正在创建一个Stripe::Account对象,而不是Stripe::Customer对象。如果Stripe的API上已经存在电子邮件,但没有为我提供任何信息来连接它,则上面的代码抛出一个异常。

我担心的是,如果已经拥有Stripe帐户的用户试图加入该网站,我该如何将他们连接起来。

由于您使用的是独立帐户,如果用户已经有一个具有该电子邮件地址的Stripe帐户,则您将无法创建该帐户。

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

请注意,您可以使用OAuth流来处理这两种情况。如果用户已经有Stripe帐户,他们可以登录现有帐户进行连接,如果没有,他们将能够创建一个新帐户并同时进行连接。

使用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检索所有帐户的列表,然后根据电子邮件选择您需要的帐户。

列出Stripe API 的所有帐户

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

Stripe::Account.retrieve("account_id")

从这个答案转换为帐户的建议:

accounts = Stripe::Account.all
account_i_need = accounts.select do |c|
  c.email == "foo@bar.com"
end

相关内容

最新更新