在开发与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